|
@@ -72,28 +72,28 @@ class DashboardService
|
|
|
$nextSchedules = Schedule::with([
|
|
$nextSchedules = Schedule::with([
|
|
|
'address:district,address,source_id,source,id,address_type',
|
|
'address:district,address,source_id,source,id,address_type',
|
|
|
])
|
|
])
|
|
|
- ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
- ->whereIn('schedules.status', ['accepted', 'paid'])
|
|
|
|
|
- ->whereDate('schedules.date', '>=', now()->toDateString())
|
|
|
|
|
- ->where('schedules.date', '>=', now()->toDateString())
|
|
|
|
|
- ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
- ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
- ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.provider_id',
|
|
|
|
|
- 'provider_user.name as provider_name',
|
|
|
|
|
- 'providers.gender',
|
|
|
|
|
- 'schedules.date',
|
|
|
|
|
- 'schedules.start_time',
|
|
|
|
|
- 'schedules.end_time',
|
|
|
|
|
- 'schedules.total_amount',
|
|
|
|
|
- 'schedules.period_type',
|
|
|
|
|
- 'schedules.schedule_type',
|
|
|
|
|
- 'schedules.address_id',
|
|
|
|
|
- 'custom_schedules.address_type as custom_address_type',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
+ ->whereIn('schedules.status', ['accepted', 'paid'])
|
|
|
|
|
+ ->whereDate('schedules.date', '>=', now()->toDateString())
|
|
|
|
|
+ ->where('schedules.date', '>=', now()->toDateString())
|
|
|
|
|
+ ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
+ ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
+ ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.provider_id',
|
|
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
|
|
+ 'providers.gender',
|
|
|
|
|
+ 'schedules.date',
|
|
|
|
|
+ 'schedules.start_time',
|
|
|
|
|
+ 'schedules.end_time',
|
|
|
|
|
+ 'schedules.total_amount',
|
|
|
|
|
+ 'schedules.period_type',
|
|
|
|
|
+ 'schedules.schedule_type',
|
|
|
|
|
+ 'schedules.address_id',
|
|
|
|
|
+ 'custom_schedules.address_type as custom_address_type',
|
|
|
|
|
+
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT spi.service_package_id
|
|
SELECT spi.service_package_id
|
|
|
FROM service_package_items spi
|
|
FROM service_package_items spi
|
|
@@ -102,7 +102,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
) AS service_package_id
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT COUNT(*)
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
FROM service_package_items spi_count
|
|
@@ -114,10 +114,10 @@ class DashboardService
|
|
|
)
|
|
)
|
|
|
) AS service_package_items_count
|
|
) AS service_package_items_count
|
|
|
"),
|
|
"),
|
|
|
- )
|
|
|
|
|
- ->orderBy('schedules.date', 'asc')
|
|
|
|
|
- ->limit(5)
|
|
|
|
|
- ->get();
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderBy('schedules.date', 'asc')
|
|
|
|
|
+ ->limit(5)
|
|
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
$nextSchedules->each(function ($item) {
|
|
$nextSchedules->each(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
@@ -131,25 +131,25 @@ class DashboardService
|
|
|
$lastDoneSchedules = Schedule::joinSub($latestPerProvider, 'latest', function ($join) {
|
|
$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) =>
|
|
|
|
|
- $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
|
|
- ->where('provider_address.rn', 1)
|
|
|
|
|
- )
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.provider_id',
|
|
|
|
|
- 'provider_user.name as provider_name',
|
|
|
|
|
- 'providers.gender',
|
|
|
|
|
- 'provider_address.district as provider_district',
|
|
|
|
|
- )
|
|
|
|
|
- ->orderBy('schedules.date', 'desc')
|
|
|
|
|
- ->limit(5)
|
|
|
|
|
- ->get();
|
|
|
|
|
|
|
+ ->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) =>
|
|
|
|
|
+ $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
|
|
+ ->where('provider_address.rn', 1)
|
|
|
|
|
+ )
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.provider_id',
|
|
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
|
|
+ 'providers.gender',
|
|
|
|
|
+ 'provider_address.district as provider_district',
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderBy('schedules.date', 'desc')
|
|
|
|
|
+ ->limit(5)
|
|
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
$lastDoneSchedules->each(function ($item) {
|
|
$lastDoneSchedules->each(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
@@ -205,7 +205,7 @@ class DashboardService
|
|
|
data_get($clientCoordinates, 'longitude'),
|
|
data_get($clientCoordinates, 'longitude'),
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- $providerAddressLatestSubquery = DB::raw("
|
|
|
|
|
|
|
+ $providerAddressLatestSubquery = DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT DISTINCT ON (source_id)
|
|
SELECT DISTINCT ON (source_id)
|
|
|
*
|
|
*
|
|
@@ -227,38 +227,38 @@ class DashboardService
|
|
|
'=',
|
|
'=',
|
|
|
'providers.user_id'
|
|
'providers.user_id'
|
|
|
)
|
|
)
|
|
|
- ->visibleToCustomers()
|
|
|
|
|
- ->leftJoin(
|
|
|
|
|
- $providerAddressLatestSubquery,
|
|
|
|
|
- 'provider_address.source_id',
|
|
|
|
|
- '=',
|
|
|
|
|
- 'providers.id'
|
|
|
|
|
- )
|
|
|
|
|
- ->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)
|
|
|
|
|
- ->whereNull('providers.deleted_at')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'providers.id as provider_id',
|
|
|
|
|
- 'provider_user.name as provider_name',
|
|
|
|
|
- 'providers.gender',
|
|
|
|
|
- 'provider_address.id as address_id',
|
|
|
|
|
- 'provider_address.zip_code as provider_zip_code',
|
|
|
|
|
- 'provider_address.district',
|
|
|
|
|
- 'provider_address.latitude as provider_latitude',
|
|
|
|
|
- 'provider_address.longitude as provider_longitude',
|
|
|
|
|
- 'providers.average_rating',
|
|
|
|
|
- 'providers.total_services',
|
|
|
|
|
- 'providers.daily_price_8h',
|
|
|
|
|
- 'providers.daily_price_6h',
|
|
|
|
|
- 'providers.daily_price_4h',
|
|
|
|
|
- 'providers.daily_price_2h',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->visibleToCustomers()
|
|
|
|
|
+ ->leftJoin(
|
|
|
|
|
+ $providerAddressLatestSubquery,
|
|
|
|
|
+ 'provider_address.source_id',
|
|
|
|
|
+ '=',
|
|
|
|
|
+ 'providers.id'
|
|
|
|
|
+ )
|
|
|
|
|
+ ->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)
|
|
|
|
|
+ ->whereNull('providers.deleted_at')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'providers.id as provider_id',
|
|
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
|
|
+ 'providers.gender',
|
|
|
|
|
+ 'provider_address.id as address_id',
|
|
|
|
|
+ 'provider_address.zip_code as provider_zip_code',
|
|
|
|
|
+ 'provider_address.district',
|
|
|
|
|
+ 'provider_address.latitude as provider_latitude',
|
|
|
|
|
+ 'provider_address.longitude as provider_longitude',
|
|
|
|
|
+ '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(*)
|
|
SELECT COUNT(*)
|
|
|
FROM reviews
|
|
FROM reviews
|
|
@@ -269,10 +269,10 @@ class DashboardService
|
|
|
) AS total_reviews
|
|
) AS total_reviews
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- $providersCloseDistanceSelect,
|
|
|
|
|
- )
|
|
|
|
|
- ->orderByRaw('distance_km ASC NULLS LAST')
|
|
|
|
|
- ->get();
|
|
|
|
|
|
|
+ $providersCloseDistanceSelect,
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderByRaw('distance_km ASC NULLS LAST')
|
|
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
$this->zipCodeCoordinatesService->preload(
|
|
$this->zipCodeCoordinatesService->preload(
|
|
|
$providersClose->whereNull('distance_km')->pluck('provider_zip_code')
|
|
$providersClose->whereNull('distance_km')->pluck('provider_zip_code')
|
|
@@ -291,6 +291,19 @@ class DashboardService
|
|
|
$item->provider_zip_code,
|
|
$item->provider_zip_code,
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
+ $item->specialities = ProviderSpeciality::query()
|
|
|
|
|
+ ->join('specialities', 'specialities.id', '=', 'provider_specialities.speciality_id')
|
|
|
|
|
+ ->where('provider_specialities.provider_id', $item->provider_id)
|
|
|
|
|
+ ->where('specialities.active', true)
|
|
|
|
|
+ ->orderBy('specialities.description')
|
|
|
|
|
+ ->get([
|
|
|
|
|
+ 'specialities.id',
|
|
|
|
|
+ 'specialities.description',
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $item->age = Provider::query()
|
|
|
|
|
+ ->where('id', $item->provider_id)
|
|
|
|
|
+ ->value(DB::raw("DATE_PART('year', AGE(birth_date))"));
|
|
|
|
|
|
|
|
unset($item->provider_zip_code);
|
|
unset($item->provider_zip_code);
|
|
|
|
|
|
|
@@ -306,30 +319,30 @@ class DashboardService
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
$providersClose = $providersClose
|
|
$providersClose = $providersClose
|
|
|
- ->sortBy(fn ($provider) => $provider->distance_km ?? PHP_FLOAT_MAX)
|
|
|
|
|
|
|
+ ->sortBy(fn($provider) => $provider->distance_km ?? PHP_FLOAT_MAX)
|
|
|
->values();
|
|
->values();
|
|
|
|
|
|
|
|
$pendingSchedules = Schedule::with([
|
|
$pendingSchedules = Schedule::with([
|
|
|
'address:district,address,number,source_id,source,id,address_type',
|
|
'address:district,address,number,source_id,source,id,address_type',
|
|
|
])
|
|
])
|
|
|
- ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
- ->whereIn('schedules.status', ['pending', 'accepted'])
|
|
|
|
|
- ->where('schedules.schedule_type', 'default')
|
|
|
|
|
- ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
- ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.provider_id',
|
|
|
|
|
- 'provider_user.name as provider_name',
|
|
|
|
|
- 'providers.gender',
|
|
|
|
|
- 'schedules.date',
|
|
|
|
|
- 'schedules.address_id',
|
|
|
|
|
- 'schedules.status',
|
|
|
|
|
- 'schedules.total_amount',
|
|
|
|
|
- 'schedules.start_time',
|
|
|
|
|
- 'schedules.end_time',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
+ ->whereIn('schedules.status', ['pending', 'accepted'])
|
|
|
|
|
+ ->where('schedules.schedule_type', 'default')
|
|
|
|
|
+ ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
+ ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.provider_id',
|
|
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
|
|
+ 'providers.gender',
|
|
|
|
|
+ 'schedules.date',
|
|
|
|
|
+ 'schedules.address_id',
|
|
|
|
|
+ 'schedules.status',
|
|
|
|
|
+ 'schedules.total_amount',
|
|
|
|
|
+ 'schedules.start_time',
|
|
|
|
|
+ 'schedules.end_time',
|
|
|
|
|
+
|
|
|
|
|
+ DB::raw("
|
|
|
CASE
|
|
CASE
|
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 hour' THEN
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 hour' THEN
|
|
|
CONCAT(
|
|
CONCAT(
|
|
@@ -349,7 +362,7 @@ class DashboardService
|
|
|
END AS time_since_request
|
|
END AS time_since_request
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT spi.service_package_id
|
|
SELECT spi.service_package_id
|
|
|
FROM service_package_items spi
|
|
FROM service_package_items spi
|
|
@@ -358,7 +371,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
) AS service_package_id
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT COUNT(*)
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
FROM service_package_items spi_count
|
|
@@ -370,9 +383,9 @@ class DashboardService
|
|
|
)
|
|
)
|
|
|
) AS service_package_items_count
|
|
) AS service_package_items_count
|
|
|
"),
|
|
"),
|
|
|
- )
|
|
|
|
|
- ->orderBy('schedules.date', 'asc')
|
|
|
|
|
- ->get();
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderBy('schedules.date', 'asc')
|
|
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
$pendingSchedules->each(function ($item) {
|
|
$pendingSchedules->each(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
@@ -485,28 +498,28 @@ class DashboardService
|
|
|
$todaySchedules = Schedule::with([
|
|
$todaySchedules = Schedule::with([
|
|
|
'address:district,address,number,source_id,source,id,address_type',
|
|
'address:district,address,number,source_id,source,id,address_type',
|
|
|
])
|
|
])
|
|
|
- ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
- ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'finished'])
|
|
|
|
|
- ->whereDate('schedules.date', now()->toDateString())
|
|
|
|
|
- ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
- ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.provider_id',
|
|
|
|
|
- 'provider_user.name as provider_name',
|
|
|
|
|
- 'providers.gender',
|
|
|
|
|
- 'schedules.date',
|
|
|
|
|
- 'schedules.start_time',
|
|
|
|
|
- 'schedules.end_time',
|
|
|
|
|
- 'schedules.total_amount',
|
|
|
|
|
- 'schedules.period_type',
|
|
|
|
|
- 'schedules.schedule_type',
|
|
|
|
|
- 'schedules.address_id',
|
|
|
|
|
- 'schedules.status',
|
|
|
|
|
- 'schedules.code_verified',
|
|
|
|
|
- 'schedules.code',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->where('schedules.client_id', $cliente->id)
|
|
|
|
|
+ ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'cancelled', 'finished'])
|
|
|
|
|
+ ->whereDate('schedules.date', now()->toDateString())
|
|
|
|
|
+ ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
|
|
+ ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.provider_id',
|
|
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
|
|
+ 'providers.gender',
|
|
|
|
|
+ 'schedules.date',
|
|
|
|
|
+ 'schedules.start_time',
|
|
|
|
|
+ 'schedules.end_time',
|
|
|
|
|
+ 'schedules.total_amount',
|
|
|
|
|
+ 'schedules.period_type',
|
|
|
|
|
+ 'schedules.schedule_type',
|
|
|
|
|
+ 'schedules.address_id',
|
|
|
|
|
+ 'schedules.status',
|
|
|
|
|
+ 'schedules.code_verified',
|
|
|
|
|
+ 'schedules.code',
|
|
|
|
|
+
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT spi.service_package_id
|
|
SELECT spi.service_package_id
|
|
|
FROM service_package_items spi
|
|
FROM service_package_items spi
|
|
@@ -515,7 +528,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
) AS service_package_id
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT COUNT(*)
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
FROM service_package_items spi_count
|
|
@@ -528,7 +541,7 @@ class DashboardService
|
|
|
) AS service_package_items_count
|
|
) AS service_package_items_count
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
EXISTS (
|
|
EXISTS (
|
|
|
SELECT 1
|
|
SELECT 1
|
|
|
FROM reviews
|
|
FROM reviews
|
|
@@ -538,14 +551,14 @@ class DashboardService
|
|
|
AND reviews.deleted_at IS NULL
|
|
AND reviews.deleted_at IS NULL
|
|
|
) AS client_reviewed
|
|
) AS client_reviewed
|
|
|
"),
|
|
"),
|
|
|
- )
|
|
|
|
|
- ->orderBy('schedules.start_time', 'asc')
|
|
|
|
|
- ->get()
|
|
|
|
|
- ->map(function ($item) {
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderBy('schedules.start_time', 'asc')
|
|
|
|
|
+ ->get()
|
|
|
|
|
+ ->map(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
|
|
|
|
|
|
- return $item;
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ return $item;
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
$providerCollections = collect([
|
|
$providerCollections = collect([
|
|
|
$nextSchedules,
|
|
$nextSchedules,
|
|
@@ -559,7 +572,7 @@ class DashboardService
|
|
|
|
|
|
|
|
$providerPhotoUrls = $this->providerPhotoUrls(
|
|
$providerPhotoUrls = $this->providerPhotoUrls(
|
|
|
$providerCollections->flatMap(
|
|
$providerCollections->flatMap(
|
|
|
- fn (Collection $items) => $items->pluck('provider_id'),
|
|
|
|
|
|
|
+ fn(Collection $items) => $items->pluck('provider_id'),
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
|
|
|
|
@@ -590,7 +603,7 @@ class DashboardService
|
|
|
$pendingServicePackages = ServicePackage::query()
|
|
$pendingServicePackages = ServicePackage::query()
|
|
|
->where('client_id', $cliente->id)
|
|
->where('client_id', $cliente->id)
|
|
|
->where('status', ServicePackageStatusEnum::OPEN->value)
|
|
->where('status', ServicePackageStatusEnum::OPEN->value)
|
|
|
- ->whereDoesntHave('items.schedule', fn ($q) => $q->where('status', '!=', 'accepted'))
|
|
|
|
|
|
|
+ ->whereDoesntHave('items.schedule', fn($q) => $q->where('status', '!=', 'accepted'))
|
|
|
->with(['items.schedule' => function ($query) {
|
|
->with(['items.schedule' => function ($query) {
|
|
|
$query->with(['provider.user', 'address']);
|
|
$query->with(['provider.user', 'address']);
|
|
|
}])
|
|
}])
|
|
@@ -658,32 +671,32 @@ class DashboardService
|
|
|
'address:district,source_id,source,id,zip_code,latitude,longitude',
|
|
'address:district,source_id,source,id,zip_code,latitude,longitude',
|
|
|
'customSchedule.specialities',
|
|
'customSchedule.specialities',
|
|
|
])
|
|
])
|
|
|
- ->where('schedules.provider_id', $provider->id)
|
|
|
|
|
- ->where('schedules.status', 'pending')
|
|
|
|
|
- ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
|
|
|
|
|
- ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
|
|
|
|
|
- ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.client_id',
|
|
|
|
|
- 'client_user.name as client_name',
|
|
|
|
|
- 'clients.average_rating',
|
|
|
|
|
- 'schedules.date',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->where('schedules.provider_id', $provider->id)
|
|
|
|
|
+ ->where('schedules.status', 'pending')
|
|
|
|
|
+ ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
|
|
|
|
|
+ ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
|
|
|
|
|
+ ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.client_id',
|
|
|
|
|
+ 'client_user.name as client_name',
|
|
|
|
|
+ 'clients.average_rating',
|
|
|
|
|
+ 'schedules.date',
|
|
|
|
|
+
|
|
|
|
|
+ DB::raw("
|
|
|
TO_CHAR(schedules.date, 'DD/MM/YYYY') AS formatted_date
|
|
TO_CHAR(schedules.date, 'DD/MM/YYYY') AS formatted_date
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- 'schedules.start_time',
|
|
|
|
|
- 'schedules.end_time',
|
|
|
|
|
- 'schedules.total_amount',
|
|
|
|
|
- 'schedules.period_type',
|
|
|
|
|
- 'schedules.schedule_type',
|
|
|
|
|
- 'schedules.address_id',
|
|
|
|
|
- 'schedules.status',
|
|
|
|
|
- 'custom_schedules.offers_meal',
|
|
|
|
|
|
|
+ 'schedules.start_time',
|
|
|
|
|
+ 'schedules.end_time',
|
|
|
|
|
+ 'schedules.total_amount',
|
|
|
|
|
+ 'schedules.period_type',
|
|
|
|
|
+ 'schedules.schedule_type',
|
|
|
|
|
+ 'schedules.address_id',
|
|
|
|
|
+ 'schedules.status',
|
|
|
|
|
+ 'custom_schedules.offers_meal',
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
CASE
|
|
CASE
|
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 day' THEN
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 day' THEN
|
|
|
CONCAT(
|
|
CONCAT(
|
|
@@ -706,7 +719,7 @@ class DashboardService
|
|
|
END AS time_since_request
|
|
END AS time_since_request
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT service_package_items.service_package_id
|
|
SELECT service_package_items.service_package_id
|
|
|
FROM service_package_items
|
|
FROM service_package_items
|
|
@@ -734,29 +747,29 @@ class DashboardService
|
|
|
$todayServices = Schedule::with([
|
|
$todayServices = Schedule::with([
|
|
|
'address:district,address,number,source_id,source,id',
|
|
'address:district,address,number,source_id,source,id',
|
|
|
])
|
|
])
|
|
|
- ->where('schedules.provider_id', $provider->id)
|
|
|
|
|
- ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'finished'])
|
|
|
|
|
- ->whereDate('schedules.date', now()->toDateString())
|
|
|
|
|
- ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
|
|
|
|
|
- ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
|
|
|
|
|
- ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
- ->select(
|
|
|
|
|
- 'schedules.id',
|
|
|
|
|
- 'schedules.client_id',
|
|
|
|
|
- 'client_user.name as client_name',
|
|
|
|
|
- 'schedules.date',
|
|
|
|
|
- 'schedules.start_time',
|
|
|
|
|
- 'schedules.end_time',
|
|
|
|
|
- 'schedules.total_amount',
|
|
|
|
|
- 'schedules.period_type',
|
|
|
|
|
- 'schedules.address_id',
|
|
|
|
|
- 'schedules.schedule_type',
|
|
|
|
|
- 'schedules.status',
|
|
|
|
|
- 'schedules.code_verified',
|
|
|
|
|
- 'schedules.code',
|
|
|
|
|
- 'custom_schedules.offers_meal',
|
|
|
|
|
-
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ ->where('schedules.provider_id', $provider->id)
|
|
|
|
|
+ ->whereIn('schedules.status', ['accepted', 'paid', 'started', 'finished'])
|
|
|
|
|
+ ->whereDate('schedules.date', now()->toDateString())
|
|
|
|
|
+ ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
|
|
|
|
|
+ ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
|
|
|
|
|
+ ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ 'schedules.id',
|
|
|
|
|
+ 'schedules.client_id',
|
|
|
|
|
+ 'client_user.name as client_name',
|
|
|
|
|
+ 'schedules.date',
|
|
|
|
|
+ 'schedules.start_time',
|
|
|
|
|
+ 'schedules.end_time',
|
|
|
|
|
+ 'schedules.total_amount',
|
|
|
|
|
+ 'schedules.period_type',
|
|
|
|
|
+ 'schedules.address_id',
|
|
|
|
|
+ 'schedules.schedule_type',
|
|
|
|
|
+ 'schedules.status',
|
|
|
|
|
+ 'schedules.code_verified',
|
|
|
|
|
+ 'schedules.code',
|
|
|
|
|
+ 'custom_schedules.offers_meal',
|
|
|
|
|
+
|
|
|
|
|
+ DB::raw("
|
|
|
EXISTS (
|
|
EXISTS (
|
|
|
SELECT 1
|
|
SELECT 1
|
|
|
FROM reviews
|
|
FROM reviews
|
|
@@ -767,7 +780,7 @@ class DashboardService
|
|
|
) AS provider_reviewed
|
|
) AS provider_reviewed
|
|
|
"),
|
|
"),
|
|
|
|
|
|
|
|
- DB::raw("
|
|
|
|
|
|
|
+ DB::raw("
|
|
|
(
|
|
(
|
|
|
SELECT service_package_items.service_package_id
|
|
SELECT service_package_items.service_package_id
|
|
|
FROM service_package_items
|
|
FROM service_package_items
|
|
@@ -775,9 +788,9 @@ class DashboardService
|
|
|
LIMIT 1
|
|
LIMIT 1
|
|
|
) AS service_package_id
|
|
) AS service_package_id
|
|
|
"),
|
|
"),
|
|
|
- )
|
|
|
|
|
- ->orderBy('schedules.start_time', 'asc')
|
|
|
|
|
- ->get();
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ ->orderBy('schedules.start_time', 'asc')
|
|
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
$nextSchedules = Schedule::with('address:district,address,number,source_id,source,id,zip_code,latitude,longitude')
|
|
$nextSchedules = Schedule::with('address:district,address,number,source_id,source,id,zip_code,latitude,longitude')
|
|
|
->where('schedules.provider_id', $provider->id)
|
|
->where('schedules.provider_id', $provider->id)
|
|
@@ -831,7 +844,7 @@ class DashboardService
|
|
|
|
|
|
|
|
$clientPhotoUrls = $this->clientPhotoUrls(
|
|
$clientPhotoUrls = $this->clientPhotoUrls(
|
|
|
$clientCollections->flatMap(
|
|
$clientCollections->flatMap(
|
|
|
- fn (Collection $items) => $items->pluck('client_id'),
|
|
|
|
|
|
|
+ fn(Collection $items) => $items->pluck('client_id'),
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
|
|
|