|
|
@@ -96,15 +96,20 @@ class DashboardService
|
|
|
unset($item->provider_photo_path);
|
|
|
});
|
|
|
|
|
|
- $lastDoneSchedules = Schedule::where('schedules.client_id', $cliente->id)
|
|
|
- ->where('schedules.status', 'finished')
|
|
|
+ $latestPerProvider = Schedule::where('client_id', $cliente->id)
|
|
|
+ ->where('status', 'finished')
|
|
|
+ ->select('provider_id', DB::raw('MAX(id) as max_id'))
|
|
|
+ ->groupBy('provider_id');
|
|
|
+
|
|
|
+ $lastDoneSchedules = Schedule::joinSub($latestPerProvider, 'latest', function ($join) {
|
|
|
+ $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')
|
|
|
- ->leftJoin('addresses as provider_address', function ($join) {
|
|
|
+ ->leftJoinSub(Address::preferredForProvider(), 'provider_address', fn($join) =>
|
|
|
$join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
- ->where('provider_address.source', 'provider')
|
|
|
- ->orderBy('provider_address.is_primary', 'desc');
|
|
|
- })
|
|
|
+ ->where('provider_address.rn', 1)
|
|
|
+ )
|
|
|
->leftJoin('media as provider_media', 'provider_media.id', '=', 'providers.profile_media_id')
|
|
|
->select(
|
|
|
'schedules.id',
|
|
|
@@ -127,11 +132,10 @@ class DashboardService
|
|
|
$favoriteProviders = ClientFavoriteProvider::where('client_favorite_providers.client_id', $cliente->id)
|
|
|
->leftJoin('providers', 'providers.id', '=', 'client_favorite_providers.provider_id')
|
|
|
->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
- ->leftJoin('addresses as provider_address', function ($join) {
|
|
|
+ ->leftJoinSub(Address::preferredForProvider(), 'provider_address', fn($join) =>
|
|
|
$join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
- ->where('provider_address.source', 'provider')
|
|
|
- ->orderBy('provider_address.is_primary', 'desc');
|
|
|
- })
|
|
|
+ ->where('provider_address.rn', 1)
|
|
|
+ )
|
|
|
->leftJoin('media as provider_media', 'provider_media.id', '=', 'providers.profile_media_id')
|
|
|
->select(
|
|
|
'providers.id as provider_id',
|