|
|
@@ -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();
|