Update Schedules

This commit is contained in:
R
2022-09-27 10:03:11 +07:00
parent 876e521347
commit 388f7b2a9b
9 changed files with 843 additions and 2 deletions

View File

@@ -149,4 +149,92 @@ class DoctorController extends Controller
{
//
}
public function schedule(Request $request, $id)
{
$request->validate([
'speciality_id' => 'required',
'type' => 'required',
'hospital_id' => 'required_if:type,walkin',
'start_date' => ['required', 'date']
]);
if ($request->type == 'walkin') {
$practitionerRole = PractitionerRole::query()
->where('practitioner_id', $id)
->where('organization_id', $request->hospital_id)
->where('speciality_id', $request->speciality_id)
->with(['availabilities', 'availabilities.days'])
->first();
if ($practitionerRole) {
$schedules = [
'Senin' => [],
'Selasa' => [],
'Rabu' => [],
'Kamis' => [],
'Jumat' => [],
'Sabtu' => [],
'Minggu' => []
];
foreach ($practitionerRole->daily_availabilities as $day => $times) {
$schedules[$day] = array_unique( array_merge($schedules[$day], $times) );
}
}
} else if ($request->type == 'teleconsultation') {
$practitioner = Practitioner::query()
->with([
'practitionerRoles' => function($practitionerRole) use ($request) {
if (!empty($request->hospital_id)) {
$practitionerRole->where('organization_id', $request->hospital_id);
}
},
'practitionerRoles.availabilities',
'practitionerRoles.availabilities.days'
])
->where('id', $id)
->first();
$schedules = [
'Senin' => [],
'Selasa' => [],
'Rabu' => [],
'Kamis' => [],
'Jumat' => [],
'Sabtu' => [],
'Minggu' => []
];
foreach ($practitioner->practitionerRoles as $role) {
foreach ($role->daily_availabilities as $day => $times) {
// Merge All Role Availabilities
$schedules[$day] = array_unique( array_merge($schedules[$day], $times) );
// $schedules[] = [
// 'day' => $day,
// 'times' => array_unique( array_merge($schedules[$day], $times) )
// ];
}
}
}
$datesAvailabilities = Helper::dailyAvailabilitiesToDate( $schedules, $request->start_date, $request->end_date ?? null);
return response()->json($datesAvailabilities);
return response()->json([
'message' => 'Jadwal praktek dokter tidak ditemukan'
], 404);
}
}