|
|
@@ -16,7 +16,6 @@ use App\Models\Review;
|
|
|
use App\Models\Schedule;
|
|
|
use App\Models\ScheduleProposal;
|
|
|
use App\Models\ServicePackage;
|
|
|
-use App\Models\Speciality;
|
|
|
use App\Rules\ScheduleBusinessRules;
|
|
|
use Illuminate\Auth\Access\AuthorizationException;
|
|
|
use Illuminate\Support\Collection;
|
|
|
@@ -75,7 +74,7 @@ class DashboardService
|
|
|
'address:district,address,source_id,source,id,address_type',
|
|
|
])
|
|
|
->where('schedules.client_id', $cliente->id)
|
|
|
- ->whereIn('schedules.status', ['paid'])
|
|
|
+ ->whereIn('schedules.status', ['accepted', 'paid'])
|
|
|
->whereDate('schedules.date', '>=', now()->toDateString())
|
|
|
->where('schedules.date', '>=', now()->toDateString())
|
|
|
->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
@@ -95,7 +94,7 @@ class DashboardService
|
|
|
'schedules.address_id',
|
|
|
'custom_schedules.address_type as custom_address_type',
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT spi.service_package_id
|
|
|
FROM service_package_items spi
|
|
|
@@ -104,7 +103,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
|
@@ -116,10 +115,10 @@ class DashboardService
|
|
|
)
|
|
|
) AS service_package_items_count
|
|
|
"),
|
|
|
- )
|
|
|
- ->orderBy('schedules.date', 'asc')
|
|
|
- ->limit(5)
|
|
|
- ->get();
|
|
|
+ )
|
|
|
+ ->orderBy('schedules.date', 'asc')
|
|
|
+ ->limit(5)
|
|
|
+ ->get();
|
|
|
|
|
|
$nextSchedules->each(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
|
@@ -133,25 +132,25 @@ class DashboardService
|
|
|
$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')
|
|
|
- ->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) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
|
@@ -207,7 +206,7 @@ class DashboardService
|
|
|
data_get($clientCoordinates, 'longitude'),
|
|
|
);
|
|
|
|
|
|
- $providerAddressLatestSubquery = DB::raw("
|
|
|
+ $providerAddressLatestSubquery = DB::raw("
|
|
|
(
|
|
|
SELECT DISTINCT ON (source_id)
|
|
|
*
|
|
|
@@ -260,7 +259,7 @@ class DashboardService
|
|
|
'providers.daily_price_4h',
|
|
|
'providers.daily_price_2h',
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT COUNT(*)
|
|
|
FROM reviews
|
|
|
@@ -271,10 +270,10 @@ class DashboardService
|
|
|
) AS total_reviews
|
|
|
"),
|
|
|
|
|
|
- $providersCloseDistanceSelect,
|
|
|
- )
|
|
|
- ->orderByRaw('distance_km ASC NULLS LAST')
|
|
|
- ->get();
|
|
|
+ $providersCloseDistanceSelect,
|
|
|
+ )
|
|
|
+ ->orderByRaw('distance_km ASC NULLS LAST')
|
|
|
+ ->get();
|
|
|
|
|
|
$this->zipCodeCoordinatesService->preload(
|
|
|
$providersClose->whereNull('distance_km')->pluck('provider_zip_code')
|
|
|
@@ -293,6 +292,19 @@ class DashboardService
|
|
|
$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);
|
|
|
|
|
|
@@ -308,30 +320,31 @@ class DashboardService
|
|
|
});
|
|
|
|
|
|
$providersClose = $providersClose
|
|
|
+ ->sortBy(fn($provider) => $provider->distance_km ?? PHP_FLOAT_MAX)
|
|
|
->sortBy(fn($provider) => $provider->distance_km ?? PHP_FLOAT_MAX)
|
|
|
->values();
|
|
|
|
|
|
$pendingSchedules = Schedule::with([
|
|
|
'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
|
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 hour' THEN
|
|
|
CONCAT(
|
|
|
@@ -351,7 +364,7 @@ class DashboardService
|
|
|
END AS time_since_request
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT spi.service_package_id
|
|
|
FROM service_package_items spi
|
|
|
@@ -360,7 +373,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
|
@@ -372,9 +385,9 @@ class DashboardService
|
|
|
)
|
|
|
) AS service_package_items_count
|
|
|
"),
|
|
|
- )
|
|
|
- ->orderBy('schedules.date', 'asc')
|
|
|
- ->get();
|
|
|
+ )
|
|
|
+ ->orderBy('schedules.date', 'asc')
|
|
|
+ ->get();
|
|
|
|
|
|
$pendingSchedules->each(function ($item) {
|
|
|
$item->gender_label = GenderEnum::labelFor($item->gender);
|
|
|
@@ -487,28 +500,28 @@ class DashboardService
|
|
|
$todaySchedules = Schedule::with([
|
|
|
'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
|
|
|
FROM service_package_items spi
|
|
|
@@ -517,7 +530,7 @@ class DashboardService
|
|
|
) AS service_package_id
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT COUNT(*)
|
|
|
FROM service_package_items spi_count
|
|
|
@@ -530,7 +543,7 @@ class DashboardService
|
|
|
) AS service_package_items_count
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
EXISTS (
|
|
|
SELECT 1
|
|
|
FROM reviews
|
|
|
@@ -540,14 +553,14 @@ class DashboardService
|
|
|
AND reviews.deleted_at IS NULL
|
|
|
) 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);
|
|
|
|
|
|
- return $item;
|
|
|
- });
|
|
|
+ return $item;
|
|
|
+ });
|
|
|
|
|
|
$providerCollections = collect([
|
|
|
$nextSchedules,
|
|
|
@@ -658,33 +671,34 @@ class DashboardService
|
|
|
|
|
|
$solicitations = Schedule::with([
|
|
|
'address:district,source_id,source,id,zip_code,latitude,longitude',
|
|
|
+ '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
|
|
|
"),
|
|
|
|
|
|
- '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
|
|
|
WHEN (NOW() - schedules.created_at) < INTERVAL '1 day' THEN
|
|
|
CONCAT(
|
|
|
@@ -707,7 +721,7 @@ class DashboardService
|
|
|
END AS time_since_request
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT service_package_items.service_package_id
|
|
|
FROM service_package_items
|
|
|
@@ -717,7 +731,9 @@ class DashboardService
|
|
|
"),
|
|
|
)
|
|
|
->orderBy('schedules.date', 'asc')
|
|
|
- ->get();
|
|
|
+ ->get()
|
|
|
+ ->append('specialities')
|
|
|
+ ->makeHidden('customSchedule');
|
|
|
|
|
|
$solicitations->each(function ($solicitation) use ($address) {
|
|
|
$solicitation->distance_km = $this->zipCodeCoordinatesService->calculateDistance(
|
|
|
@@ -733,29 +749,29 @@ class DashboardService
|
|
|
$todayServices = Schedule::with([
|
|
|
'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 (
|
|
|
SELECT 1
|
|
|
FROM reviews
|
|
|
@@ -766,7 +782,7 @@ class DashboardService
|
|
|
) AS provider_reviewed
|
|
|
"),
|
|
|
|
|
|
- DB::raw("
|
|
|
+ DB::raw("
|
|
|
(
|
|
|
SELECT service_package_items.service_package_id
|
|
|
FROM service_package_items
|
|
|
@@ -774,9 +790,9 @@ class DashboardService
|
|
|
LIMIT 1
|
|
|
) AS service_package_id
|
|
|
"),
|
|
|
- )
|
|
|
- ->orderBy('schedules.start_time', 'asc')
|
|
|
- ->get();
|
|
|
+ )
|
|
|
+ ->orderBy('schedules.start_time', 'asc')
|
|
|
+ ->get();
|
|
|
|
|
|
|
|
|
$pendingConfirmation = Schedule::with(
|
|
|
@@ -931,13 +947,16 @@ class DashboardService
|
|
|
|
|
|
$cliente = Client::where('user_id', $user->id)->firstOrFail();
|
|
|
|
|
|
- $schedule = Schedule::where('schedules.id', $scheduleId)
|
|
|
+ $schedule = Schedule::with('customSchedule.specialities')
|
|
|
+ ->where('schedules.id', $scheduleId)
|
|
|
->where('schedules.client_id', $cliente->id)
|
|
|
->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',
|
|
|
+ 'schedules.schedule_type',
|
|
|
'provider_user.name as provider_name',
|
|
|
'providers.birth_date as provider_birth_date',
|
|
|
'providers.gender',
|
|
|
@@ -948,28 +967,14 @@ class DashboardService
|
|
|
$providerPhoto = $this->providerPhotoUrls([$schedule->provider_id])
|
|
|
->get($schedule->provider_id);
|
|
|
|
|
|
- $allSpecialities = Speciality::where('active', true)
|
|
|
- ->select('id', 'description')
|
|
|
- ->orderBy('description')
|
|
|
- ->get();
|
|
|
-
|
|
|
- $providerSpecialityIds = ProviderSpeciality::where('provider_id', $schedule->provider_id)
|
|
|
- ->pluck('speciality_id')
|
|
|
- ->all();
|
|
|
-
|
|
|
- $specialities = $allSpecialities->map(fn($sp) => [
|
|
|
- 'id' => $sp->id,
|
|
|
- 'description' => $sp->description,
|
|
|
- 'has_speciality' => in_array($sp->id, $providerSpecialityIds),
|
|
|
- ])->values();
|
|
|
-
|
|
|
return [
|
|
|
+ 'schedule_type' => $schedule->schedule_type,
|
|
|
'provider_name' => $schedule->provider_name,
|
|
|
'provider_birth_date' => $schedule->provider_birth_date,
|
|
|
'gender' => $schedule->gender,
|
|
|
'gender_label' => GenderEnum::labelFor($schedule->gender),
|
|
|
'offers_meal' => $schedule->offers_meal,
|
|
|
- 'specialities' => $specialities,
|
|
|
+ 'specialities' => $schedule->specialities,
|
|
|
|
|
|
'provider_photo' => $providerPhoto,
|
|
|
];
|