Ver código fonte

Merge remote-tracking branch 'remotes/origin/fix/diaria-kay-ajuste-no-valor-do-serviço' into development

Gustavo Mantovani 2 semanas atrás
pai
commit
4979b71288
1 arquivos alterados com 40 adições e 9 exclusões
  1. 40 9
      app/Services/DashboardService.php

+ 40 - 9
app/Services/DashboardService.php

@@ -119,11 +119,14 @@ class DashboardService
             ->groupBy('provider_id');
 
         $lastDoneSchedules = Schedule::joinSub($latestPerProvider, 'latest', function ($join) {
-                $join->on('schedules.id', '=', 'latest.max_id');
-            })
+            $join->on('schedules.id', '=', 'latest.max_id');
+        })
             ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
             ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
-            ->leftJoinSub(Address::preferredForProvider(), 'provider_address', fn($join) =>
+            ->leftJoinSub(
+                Address::preferredForProvider(),
+                'provider_address',
+                fn($join) =>
                 $join->on('provider_address.source_id', '=', 'providers.id')
                     ->where('provider_address.rn', 1)
             )
@@ -153,7 +156,10 @@ class DashboardService
             ->whereRaw("providers.recipient_default_bank_account::text <> '{}'")
             ->whereRaw("providers.recipient_default_bank_account::text <> '[]'")
             ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
-            ->leftJoinSub(Address::preferredForProvider(), 'provider_address', fn($join) =>
+            ->leftJoinSub(
+                Address::preferredForProvider(),
+                'provider_address',
+                fn($join) =>
                 $join->on('provider_address.source_id', '=', 'providers.id')
                     ->where('provider_address.rn', 1)
             )
@@ -192,12 +198,17 @@ class DashboardService
 
         $providersClose = Provider::leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
             ->visibleToCustomers()
-            ->leftJoin(DB::raw(
-                "(SELECT DISTINCT ON (source_id) * FROM addresses
+            ->leftJoin(
+                DB::raw(
+                    "(SELECT DISTINCT ON (source_id) * FROM addresses
                     WHERE source = 'provider'
                         AND deleted_at IS NULL
                             ORDER BY source_id, is_primary DESC
-                ) as provider_address"), 'provider_address.source_id', '=', 'providers.id'
+                ) as provider_address"
+                ),
+                'provider_address.source_id',
+                '=',
+                'providers.id'
             )
             ->leftJoin('media as provider_media', 'provider_media.id', '=', 'providers.profile_media_id')
             ->whereNotNull('provider_address.id')
@@ -240,6 +251,11 @@ class DashboardService
                 : null;
 
             unset($item->provider_photo_path);
+
+            $item->daily_price_8h = $this->applyCreditCardFee($item->daily_price_8h);
+            $item->daily_price_6h = $this->applyCreditCardFee($item->daily_price_6h);
+            $item->daily_price_4h = $this->applyCreditCardFee($item->daily_price_4h);
+            $item->daily_price_2h = $this->applyCreditCardFee($item->daily_price_2h);
         });
 
         $pendingSchedules = Schedule::with('address:district,address,number,source_id,source,id,address_type')
@@ -312,7 +328,10 @@ class DashboardService
                             AND deleted_at IS NULL
                                 ORDER BY source_id, is_primary DESC
                     ) as provider_address"
-                ), 'provider_address.source_id', '=', 'providers.id'
+                ),
+                'provider_address.source_id',
+                '=',
+                'providers.id'
             )
             ->leftJoin('media as provider_media', 'provider_media.id', '=', 'providers.profile_media_id')
             ->where('schedules.client_id', $cliente->id)
@@ -479,7 +498,7 @@ class DashboardService
             ->pluck('speciality_id')
             ->all();
 
-        $specialities = $allSpecialities->map(fn ($sp) => [
+        $specialities = $allSpecialities->map(fn($sp) => [
             'id'             => $sp->id,
             'description'    => $sp->description,
             'has_speciality' => in_array($sp->id, $providerSpecialityIds),
@@ -497,6 +516,18 @@ class DashboardService
         ];
     }
 
+    // aplicação da taxa 
+    private function applyCreditCardFee(?float $price): ?float
+    {
+        if ($price === null) {
+            return null;
+        }
+
+        $rate = (float) config('services.pagarme.platform_credit_card_fee_rate');
+
+        return round($price * (1 + $rate), 2);
+    }
+
     public function dadosDashboardPrestador(): array
     {
         $user = Auth::user();