|
|
@@ -64,16 +64,23 @@ class DashboardService
|
|
|
'custom_schedules.address_type as custom_address_type',
|
|
|
)
|
|
|
->orderBy('schedules.date', 'asc')
|
|
|
+ ->limit(5)
|
|
|
->get();
|
|
|
|
|
|
$lastDoneSchedules = Schedule::where('schedules.client_id', $cliente->id)
|
|
|
->where('schedules.status', 'finished')
|
|
|
->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) {
|
|
|
+ $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
+ ->where('provider_address.source', 'provider')
|
|
|
+ ->orderBy('provider_address.is_primary', 'desc');
|
|
|
+ })
|
|
|
->select(
|
|
|
'schedules.id',
|
|
|
'schedules.provider_id',
|
|
|
'provider_user.name as provider_name',
|
|
|
+ 'provider_address.district as provider_district',
|
|
|
)
|
|
|
->orderBy('schedules.date', 'desc')
|
|
|
->limit(5)
|
|
|
@@ -82,6 +89,11 @@ 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) {
|
|
|
+ $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
+ ->where('provider_address.source', 'provider')
|
|
|
+ ->orderBy('provider_address.is_primary', 'desc');
|
|
|
+ })
|
|
|
->select(
|
|
|
'providers.id as provider_id',
|
|
|
'provider_user.name as provider_name',
|
|
|
@@ -90,7 +102,10 @@ class DashboardService
|
|
|
'providers.daily_price_6h',
|
|
|
'providers.daily_price_4h',
|
|
|
'providers.daily_price_2h',
|
|
|
+ 'provider_address.district as provider_district',
|
|
|
)
|
|
|
+ ->orderBy('client_favorite_providers.created_at', 'desc')
|
|
|
+ ->limit(5)
|
|
|
->get();
|
|
|
|
|
|
$blockedProviderIds = ScheduleBusinessRules::getBlockedProviderIdsForClient($cliente->id);
|
|
|
@@ -100,6 +115,11 @@ class DashboardService
|
|
|
->orderBy('is_primary', 'desc')
|
|
|
->first();
|
|
|
|
|
|
+ $clientPrimaryAddress = Address::where('source', 'client')
|
|
|
+ ->where('source_id', $cliente->id)
|
|
|
+ ->where('is_primary', true)
|
|
|
+ ->first();
|
|
|
+
|
|
|
$providersClose = Provider::leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
->leftJoin(DB::raw("
|
|
|
(
|
|
|
@@ -111,18 +131,28 @@ class DashboardService
|
|
|
) as provider_address
|
|
|
"), 'provider_address.source_id', '=', 'providers.id')
|
|
|
->where('provider_address.city_id', '=', $clientAddress->city_id)
|
|
|
+ ->leftJoin('addresses as provider_address', function ($join) {
|
|
|
+ $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
+ ->where('provider_address.source', 'provider')
|
|
|
+ ->whereNull('provider_address.deleted_at')
|
|
|
+ ->orderBy('provider_address.is_primary', 'desc');
|
|
|
+ })
|
|
|
+ ->whereNotNull('provider_address.id')
|
|
|
+ ->where('provider_address.city_id', $clientPrimaryAddress?->city_id)
|
|
|
->whereNotIn('providers.id', $blockedProviderIds)
|
|
|
->whereIn('providers.id', $providersWithWorkingDays)
|
|
|
- ->where(function ($query) {
|
|
|
- $query->whereNotNull('providers.daily_price_8h')
|
|
|
- ->orWhereNotNull('providers.daily_price_6h')
|
|
|
- ->orWhereNotNull('providers.daily_price_4h')
|
|
|
- ->orWhereNotNull('providers.daily_price_2h');
|
|
|
- })
|
|
|
+ ->whereNull('providers.deleted_at')
|
|
|
+
|
|
|
->select(
|
|
|
'providers.id as provider_id',
|
|
|
'provider_user.name as provider_name',
|
|
|
+ 'provider_address.id as address_id',
|
|
|
'providers.average_rating',
|
|
|
+ 'providers.total_services',
|
|
|
+ 'providers.daily_price_8h',
|
|
|
+ 'providers.daily_price_6h',
|
|
|
+ 'providers.daily_price_4h',
|
|
|
+ 'providers.daily_price_2h',
|
|
|
DB::raw("(
|
|
|
SELECT COUNT(*)
|
|
|
FROM reviews
|
|
|
@@ -130,11 +160,6 @@ class DashboardService
|
|
|
WHERE reviews.origin = 'provider'
|
|
|
AND schedules.provider_id = providers.id
|
|
|
) as total_reviews"),
|
|
|
- 'providers.total_services',
|
|
|
- 'providers.daily_price_8h',
|
|
|
- 'providers.daily_price_6h',
|
|
|
- 'providers.daily_price_4h',
|
|
|
- 'providers.daily_price_2h',
|
|
|
)
|
|
|
->get();
|
|
|
|
|
|
@@ -298,31 +323,18 @@ class DashboardService
|
|
|
'schedules.period_type',
|
|
|
'schedules.schedule_type',
|
|
|
'schedules.address_id',
|
|
|
- 'custom_schedules.address_type'
|
|
|
+ 'custom_schedules.address_type',
|
|
|
+ DB::raw("CASE
|
|
|
+ WHEN schedules.period_type = '2' THEN {$provider->daily_price_2h}
|
|
|
+ WHEN schedules.period_type = '4' THEN {$provider->daily_price_4h}
|
|
|
+ WHEN schedules.period_type = '6' THEN {$provider->daily_price_6h}
|
|
|
+ WHEN schedules.period_type = '8' THEN {$provider->daily_price_8h}
|
|
|
+ ELSE 0
|
|
|
+ END as total_amount"),
|
|
|
)
|
|
|
->orderBy('schedules.date', 'asc')
|
|
|
->get();
|
|
|
|
|
|
- $opportunities = $opportunities->map(function ($item) use ($provider) {
|
|
|
- $price = 0;
|
|
|
- switch ($item->period_type) {
|
|
|
- case 2:
|
|
|
- $price = $provider->daily_price_2h;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- $price = $provider->daily_price_4h;
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- $price = $provider->daily_price_6h;
|
|
|
- break;
|
|
|
- case 8:
|
|
|
- $price = $provider->daily_price_8h;
|
|
|
- break;
|
|
|
- }
|
|
|
- $item->total_amount = $price;
|
|
|
- return $item;
|
|
|
- });
|
|
|
-
|
|
|
return [
|
|
|
'headerBar' => $headerBar,
|
|
|
'summaryInfos' => $summaryInfos,
|