|
|
@@ -6,8 +6,10 @@ use App\Models\Address;
|
|
|
use App\Models\Client;
|
|
|
use App\Models\ClientFavoriteProvider;
|
|
|
use App\Models\Provider;
|
|
|
+use App\Models\ProviderSpeciality;
|
|
|
use App\Models\Review;
|
|
|
use App\Models\Schedule;
|
|
|
+use App\Models\Speciality;
|
|
|
use App\Rules\ScheduleBusinessRules;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
@@ -43,7 +45,7 @@ class DashboardService
|
|
|
->count(),
|
|
|
];
|
|
|
|
|
|
- $nextSchedules = Schedule::with('address:district,address,number,source_id,source,id,address_type')
|
|
|
+ $nextSchedules = Schedule::with('address:district,address,complement,number,source_id,source,id,address_type')
|
|
|
->where('schedules.client_id', $cliente->id)
|
|
|
->whereIn('schedules.status', ['accepted', 'paid'])
|
|
|
->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
|
|
|
@@ -191,6 +193,50 @@ class DashboardService
|
|
|
];
|
|
|
}
|
|
|
|
|
|
+ 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,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
public function dadosDashboardPrestador(): array
|
|
|
{
|
|
|
$user = Auth::user();
|