|
|
@@ -18,6 +18,7 @@ use App\Rules\ScheduleBusinessRules;
|
|
|
use Illuminate\Auth\Access\AuthorizationException;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
+use Illuminate\Support\Facades\Log;
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
|
|
class DashboardService
|
|
|
@@ -218,15 +219,7 @@ class DashboardService
|
|
|
$clientCoordinates['longitude'] ?? null,
|
|
|
);
|
|
|
|
|
|
- $providersClose = Provider::leftJoin(
|
|
|
- 'users as provider_user',
|
|
|
- 'provider_user.id',
|
|
|
- '=',
|
|
|
- 'providers.user_id'
|
|
|
- )
|
|
|
- ->visibleToCustomers()
|
|
|
- ->leftJoin(
|
|
|
- DB::raw("
|
|
|
+ $providerAddressLatestSubquery = DB::raw("
|
|
|
(
|
|
|
SELECT DISTINCT ON (source_id)
|
|
|
*
|
|
|
@@ -239,7 +232,86 @@ class DashboardService
|
|
|
is_primary DESC,
|
|
|
id DESC
|
|
|
) AS provider_address
|
|
|
- "),
|
|
|
+ ");
|
|
|
+
|
|
|
+ $providersCloseDebugQuery = Provider::leftJoin(
|
|
|
+ 'users as provider_user',
|
|
|
+ 'provider_user.id',
|
|
|
+ '=',
|
|
|
+ 'providers.user_id'
|
|
|
+ )
|
|
|
+ ->visibleToCustomers()
|
|
|
+ ->leftJoin(
|
|
|
+ $providerAddressLatestSubquery,
|
|
|
+ 'provider_address.source_id',
|
|
|
+ '=',
|
|
|
+ 'providers.id'
|
|
|
+ )
|
|
|
+ ->whereNull('providers.deleted_at');
|
|
|
+
|
|
|
+ Log::info('Dashboard providersClose context', [
|
|
|
+ 'client_id' => $cliente->id,
|
|
|
+ 'user_id' => $user->id,
|
|
|
+ 'client_primary_address_id' => $clientPrimaryAddress?->id,
|
|
|
+ 'client_primary_address_city_id' => $clientPrimaryAddress?->city_id,
|
|
|
+ 'client_primary_address_state_id' => $clientPrimaryAddress?->state_id,
|
|
|
+ 'client_distance_address_id' => $clientDistanceAddress?->id,
|
|
|
+ 'client_distance_zip_code' => $clientDistanceAddress?->zip_code,
|
|
|
+ 'client_coordinates' => $clientCoordinates,
|
|
|
+ 'blocked_provider_ids_count' => $blockedProviderIds->count(),
|
|
|
+ 'providers_working_days_count' => $providersWithWorkingDays->count(),
|
|
|
+ ]);
|
|
|
+
|
|
|
+ Log::info('Dashboard providersClose filter counts', [
|
|
|
+ 'visible_with_bank' => (clone $providersCloseDebugQuery)
|
|
|
+ ->distinct('providers.id')
|
|
|
+ ->count('providers.id'),
|
|
|
+
|
|
|
+ 'with_provider_address' => (clone $providersCloseDebugQuery)
|
|
|
+ ->whereNotNull('provider_address.id')
|
|
|
+ ->distinct('providers.id')
|
|
|
+ ->count('providers.id'),
|
|
|
+
|
|
|
+ 'after_city_filter' => (clone $providersCloseDebugQuery)
|
|
|
+ ->whereNotNull('provider_address.id')
|
|
|
+ ->when(
|
|
|
+ $clientPrimaryAddress?->city_id,
|
|
|
+ fn ($query, int $cityId) => $query->where('provider_address.city_id', $cityId)
|
|
|
+ )
|
|
|
+ ->distinct('providers.id')
|
|
|
+ ->count('providers.id'),
|
|
|
+
|
|
|
+ 'after_block_filter' => (clone $providersCloseDebugQuery)
|
|
|
+ ->whereNotNull('provider_address.id')
|
|
|
+ ->when(
|
|
|
+ $clientPrimaryAddress?->city_id,
|
|
|
+ fn ($query, int $cityId) => $query->where('provider_address.city_id', $cityId)
|
|
|
+ )
|
|
|
+ ->whereNotIn('providers.id', $blockedProviderIds)
|
|
|
+ ->distinct('providers.id')
|
|
|
+ ->count('providers.id'),
|
|
|
+
|
|
|
+ 'after_working_days_filter' => (clone $providersCloseDebugQuery)
|
|
|
+ ->whereNotNull('provider_address.id')
|
|
|
+ ->when(
|
|
|
+ $clientPrimaryAddress?->city_id,
|
|
|
+ fn ($query, int $cityId) => $query->where('provider_address.city_id', $cityId)
|
|
|
+ )
|
|
|
+ ->whereNotIn('providers.id', $blockedProviderIds)
|
|
|
+ ->whereIn('providers.id', $providersWithWorkingDays)
|
|
|
+ ->distinct('providers.id')
|
|
|
+ ->count('providers.id'),
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $providersClose = Provider::leftJoin(
|
|
|
+ 'users as provider_user',
|
|
|
+ 'provider_user.id',
|
|
|
+ '=',
|
|
|
+ 'providers.user_id'
|
|
|
+ )
|
|
|
+ ->visibleToCustomers()
|
|
|
+ ->leftJoin(
|
|
|
+ $providerAddressLatestSubquery,
|
|
|
'provider_address.source_id',
|
|
|
'=',
|
|
|
'providers.id'
|
|
|
@@ -291,6 +363,13 @@ class DashboardService
|
|
|
->orderByRaw('distance_km ASC NULLS LAST')
|
|
|
->get();
|
|
|
|
|
|
+ Log::info('Dashboard providersClose query result', [
|
|
|
+ 'count' => $providersClose->count(),
|
|
|
+ 'provider_ids_sample' => $providersClose->pluck('provider_id')->take(20)->values()->all(),
|
|
|
+ 'null_distance_count' => $providersClose->whereNull('distance_km')->count(),
|
|
|
+ 'provider_city_filter' => $clientPrimaryAddress?->city_id,
|
|
|
+ ]);
|
|
|
+
|
|
|
$this->zipCodeCoordinatesService->preload(
|
|
|
$providersClose->whereNull('distance_km')->pluck('provider_zip_code')
|
|
|
);
|
|
|
@@ -328,6 +407,16 @@ class DashboardService
|
|
|
->sortBy(fn ($provider) => $provider->distance_km ?? PHP_FLOAT_MAX)
|
|
|
->values();
|
|
|
|
|
|
+ Log::info('Dashboard providersClose final result', [
|
|
|
+ 'count' => $providersClose->count(),
|
|
|
+ 'items_sample' => $providersClose->take(5)->map(fn ($provider) => [
|
|
|
+ 'provider_id' => $provider->provider_id,
|
|
|
+ 'provider_name' => $provider->provider_name,
|
|
|
+ 'district' => $provider->district,
|
|
|
+ 'distance_km' => $provider->distance_km,
|
|
|
+ ])->values()->all(),
|
|
|
+ ]);
|
|
|
+
|
|
|
$pendingSchedules = Schedule::with([
|
|
|
'address:district,address,number,source_id,source,id,address_type',
|
|
|
])
|