Add Slot
This commit is contained in:
@@ -6,6 +6,7 @@ use App\Helpers\Helper;
|
|||||||
use App\Models\Organization;
|
use App\Models\Organization;
|
||||||
use App\Models\Practitioner;
|
use App\Models\Practitioner;
|
||||||
use App\Models\PractitionerRole;
|
use App\Models\PractitionerRole;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Contracts\Support\Renderable;
|
use Illuminate\Contracts\Support\Renderable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
@@ -157,6 +158,16 @@ class DoctorController extends Controller
|
|||||||
'start_date' => ['required', 'date']
|
'start_date' => ['required', 'date']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$schedules = [
|
||||||
|
'Senin' => [],
|
||||||
|
'Selasa' => [],
|
||||||
|
'Rabu' => [],
|
||||||
|
'Kamis' => [],
|
||||||
|
'Jumat' => [],
|
||||||
|
'Sabtu' => [],
|
||||||
|
'Minggu' => []
|
||||||
|
];
|
||||||
|
|
||||||
if ($request->type == 'walkin') {
|
if ($request->type == 'walkin') {
|
||||||
|
|
||||||
$practitionerRole = PractitionerRole::query()
|
$practitionerRole = PractitionerRole::query()
|
||||||
@@ -168,19 +179,41 @@ class DoctorController extends Controller
|
|||||||
|
|
||||||
if ($practitionerRole) {
|
if ($practitionerRole) {
|
||||||
|
|
||||||
$schedules = [
|
|
||||||
'Senin' => [],
|
|
||||||
'Selasa' => [],
|
|
||||||
'Rabu' => [],
|
|
||||||
'Kamis' => [],
|
|
||||||
'Jumat' => [],
|
|
||||||
'Sabtu' => [],
|
|
||||||
'Minggu' => []
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($practitionerRole->daily_availabilities as $day => $times) {
|
$practitionerRole->availabilities->sortBy('start_time')
|
||||||
$schedules[$day] = array_unique(array_merge($schedules[$day], $times));
|
->each(function ($availability) use (&$schedules) {
|
||||||
}
|
$availability_days = $availability->days->pluck('day')->toArray();
|
||||||
|
|
||||||
|
foreach ($schedules as $day => $schedule) {
|
||||||
|
|
||||||
|
if (!count($availability->days) || in_array($day, $availability_days)) {
|
||||||
|
|
||||||
|
if (Carbon::parse($availability->start_time) < Carbon::parse("10:00")) {
|
||||||
|
$schedules[$day]['Pagi'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (Carbon::parse($availability->start_time) < Carbon::parse("15:00")) {
|
||||||
|
$schedules[$day]['Siang'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
$schedules[$day]['Malam'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else if ($request->type == 'teleconsultation') {
|
} else if ($request->type == 'teleconsultation') {
|
||||||
|
|
||||||
@@ -197,35 +230,51 @@ class DoctorController extends Controller
|
|||||||
->where('id', $id)
|
->where('id', $id)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
$schedules = [
|
|
||||||
'Senin' => [],
|
|
||||||
'Selasa' => [],
|
|
||||||
'Rabu' => [],
|
|
||||||
'Kamis' => [],
|
|
||||||
'Jumat' => [],
|
|
||||||
'Sabtu' => [],
|
|
||||||
'Minggu' => []
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($practitioner->practitionerRoles as $role) {
|
foreach ($practitioner->practitionerRoles as $role) {
|
||||||
|
|
||||||
foreach ($role->daily_availabilities as $day => $times) {
|
$role->availabilities->sortBy('start_time')
|
||||||
|
->each(function ($availability) use (&$schedules) {
|
||||||
|
$availability_days = $availability->days->pluck('day')->toArray();
|
||||||
|
|
||||||
// Merge All Role Availabilities
|
foreach ($schedules as $day => $schedule) {
|
||||||
$schedules[$day] = array_unique(array_merge($schedules[$day], $times));
|
|
||||||
// $schedules[] = [
|
|
||||||
// 'day' => $day,
|
|
||||||
// 'times' => array_unique( array_merge($schedules[$day], $times) )
|
|
||||||
// ];
|
|
||||||
|
|
||||||
}
|
if (!count($availability->days) || in_array($day, $availability_days)) {
|
||||||
|
|
||||||
|
if (Carbon::parse($availability->start_time) < Carbon::parse("10:00")) {
|
||||||
|
$schedules[$day]['Pagi'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (Carbon::parse($availability->start_time) < Carbon::parse("15:00")) {
|
||||||
|
$schedules[$day]['Siang'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
$schedules[$day]['Malam'][] = [
|
||||||
|
"start" => $availability->start_time,
|
||||||
|
'end' => $availability->end_time
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
continue; // TODO Fix This
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$datesAvailabilities = Helper::dailyAvailabilitiesToDate($schedules, $request->start_date, $request->end_date ?? null);
|
$datesAvailabilities = Helper::dailyAvailabilitiesToDate($schedules, $request->start_date, $request->end_date ?? null);
|
||||||
|
|
||||||
return response()->json($datesAvailabilities);
|
return Helper::responseJson(data: $datesAvailabilities);
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => 'Jadwal praktek dokter tidak ditemukan'
|
'message' => 'Jadwal praktek dokter tidak ditemukan'
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ Route::prefix('linksehat')->group(function () {
|
|||||||
Route::controller(DoctorController::class)->group(function () {
|
Route::controller(DoctorController::class)->group(function () {
|
||||||
Route::get('doctors/online', 'index')->name('doctors.online');
|
Route::get('doctors/online', 'index')->name('doctors.online');
|
||||||
Route::get('doctors', 'index')->name('doctors.index');
|
Route::get('doctors', 'index')->name('doctors.index');
|
||||||
Route::get('doctors/{id}', 'show')->name('doctors.show');
|
|
||||||
Route::post('doctors/{id}/schedule', 'schedule')->name('doctors.schedule');
|
Route::post('doctors/{id}/schedule', 'schedule')->name('doctors.schedule');
|
||||||
|
Route::get('doctors/{id}', 'show')->name('doctors.show');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ class DoctorResourceDetail extends JsonResource
|
|||||||
'award' => empty($award) ? null : $award,
|
'award' => empty($award) ? null : $award,
|
||||||
'education' => empty($education) ? null : $education,
|
'education' => empty($education) ? null : $education,
|
||||||
'location_practect' => empty($queryHospitals) ? null : HospitalResource::collection($queryHospitals),
|
'location_practect' => empty($queryHospitals) ? null : HospitalResource::collection($queryHospitals),
|
||||||
|
'practice_at' => empty($queryHospitals) ? null : HospitalResource::collection($queryHospitals),
|
||||||
'available' => [
|
'available' => [
|
||||||
'is_chat_available' => $isChatAvailable ?? null,
|
'is_chat_available' => $isChatAvailable ?? null,
|
||||||
'is_video_available' => $isVideoAvailable ?? null,
|
'is_video_available' => $isVideoAvailable ?? null,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class Helper
|
|||||||
$datesAvailabilities = [];
|
$datesAvailabilities = [];
|
||||||
foreach ($ranges as $date) {
|
foreach ($ranges as $date) {
|
||||||
|
|
||||||
$datesAvailabilities[] = [
|
$datesAvailabilities[$date->format('Y-m-d')][] = [
|
||||||
'date' => $date->format('Y-m-d'),
|
'date' => $date->format('Y-m-d'),
|
||||||
'day' => $date->dayName,
|
'day' => $date->dayName,
|
||||||
'slot' => $dailyAvailabilities[$date->dayName],
|
'slot' => $dailyAvailabilities[$date->dayName],
|
||||||
|
|||||||
Reference in New Issue
Block a user