|
|
@@ -215,38 +215,6 @@ class DashboardService
|
|
|
|
|
|
->get();
|
|
|
|
|
|
- // $schedulesProposals = ScheduleProposal::query()
|
|
|
- // ->leftJoin('schedules', 'schedule_proposals.schedule_id', '=', 'schedules.id')
|
|
|
- // ->leftJoin('providers', 'schedule_proposals.provider_id', '=', 'providers.id')
|
|
|
- // ->leftJoin('users', 'providers.user_id', '=', 'users.id')
|
|
|
-
|
|
|
- // ->where('schedules.client_id', $cliente->id)
|
|
|
- // ->where('schedules.schedule_type', 'custom')
|
|
|
- // ->where('schedules.status', 'pending')
|
|
|
-
|
|
|
- // ->orderBy('schedule_proposals.created_at', 'desc')
|
|
|
-
|
|
|
- // ->select([
|
|
|
- // 'schedule_proposals.id',
|
|
|
-
|
|
|
-
|
|
|
- // DB::raw("DATE_PART('year', AGE(providers.birth_date)) as idade"),
|
|
|
- // 'providers.id as provider_id',
|
|
|
- // 'schedules.id as schedule_id',
|
|
|
- // 'schedules.date',
|
|
|
- // 'schedules.start_time',
|
|
|
- // 'schedules.end_time',
|
|
|
- // 'schedules.period_type',
|
|
|
- // 'schedules.total_amount',
|
|
|
- // 'providers.daily_price_8h',
|
|
|
- // 'providers.average_rating',
|
|
|
- // 'providers.total_services',
|
|
|
-
|
|
|
- // 'users.name as provider_name'
|
|
|
- // ])
|
|
|
-
|
|
|
- // ->get();
|
|
|
-
|
|
|
$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'])
|
|
|
@@ -288,8 +256,52 @@ class DashboardService
|
|
|
'lastDoneSchedules' => $lastDoneSchedules,
|
|
|
'favoriteProviders' => $favoriteProviders,
|
|
|
'providersClose' => $providersClose,
|
|
|
- 'schedulesProposals' => $schedulesProposals,
|
|
|
'todaySchedules' => $todaySchedules,
|
|
|
+ 'schedulesProposals' => $schedulesProposals,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getScheduleClienteDetails(int $scheduleId): array
|
|
|
+ {
|
|
|
+ $user = Auth::user();
|
|
|
+ $cliente = Client::where('user_id', $user->id)->firstOrFail();
|
|
|
+
|
|
|
+ $schedule = Schedule::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')
|
|
|
+ ->leftJoin('media', 'media.id', '=', 'providers.profile_media_id')
|
|
|
+ ->select(
|
|
|
+ 'schedules.provider_id',
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
+ 'providers.birth_date as provider_birth_date',
|
|
|
+ 'media.url as provider_photo',
|
|
|
+ 'custom_schedules.offers_meal',
|
|
|
+ )
|
|
|
+ ->firstOrFail();
|
|
|
+
|
|
|
+ $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 [
|
|
|
+ 'provider_name' => $schedule->provider_name,
|
|
|
+ 'provider_birth_date' => $schedule->provider_birth_date,
|
|
|
+ 'provider_photo' => $schedule->provider_photo,
|
|
|
+ 'offers_meal' => $schedule->offers_meal,
|
|
|
+ 'specialities' => $specialities,
|
|
|
];
|
|
|
}
|
|
|
|