diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 53186f51..651c4ab9 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3022,6 +3022,19 @@ class APIController extends Controller implements LoggedController ->getResult(); // check request_time + // define slots + $slots = [ + '08_09' => '8:00 AM', + '09_10' => '9:00 AM', + '10_11' => '10:00 AM', + '11_12' => '11:00 AM', + '12_13' => '12:00 PM', + '13_14' => '1:00 PM', + '14_15' => '2:00 PM', + '15_16' => '3:00 PM', + '16_17' => '4:00 PM', + ]; + // check each JO's date_schedule, decrement rider_slots if date schedule falls in that slot // index - equivalent time // 0 - 8-9 @@ -3033,7 +3046,6 @@ class APIController extends Controller implements LoggedController // 6 - 14-15 // 7 - 15-16 // 8 - 16-17 - $hub_slots = []; // get the dates for the next three days $first_date = $start_date->format('Y-m-d'); @@ -3045,9 +3057,41 @@ class APIController extends Controller implements LoggedController // third day $third_date = $end_date->format('Y-m-d'); + // define days + $days = [ + $first_date => $first_date, + $sec_date => $sec_date, + $third_date => $third_date, + ]; + + // initialize hub slots + $hub_rider_slots = []; + foreach ($days as $day) + { + foreach ($slots as $slot_key => $slot) + { + $hub_rider_slots[$day][$slot_key] = $hub->getRiderSlots(); + } + } + // array of # of riders that can handle JOs in a timeslot $hub_rider_slots = []; + foreach ($jos_advance_order as $jo) + { + // get date key + $date_sched = $jo->getDateSchedule(); + $date_string = $date_sched->format('Y-m-d'); + $hour = $date_sched->format('H'); + $slot_id = sprintf('%02d_%02d', $hour, $hour + 1); + + // decrement rider slot + $hub_rider_slots[$date_string][$slot_id]--; + } + + $hub_slots = $this->generateHubSlots($hub_rider_slots, $slots); + + /* // populate the array with the hub's rider slots per day for ($i = 0; $i <= self::RIDER_SLOT_ARRAY_LENGTH; $i++) { @@ -3061,7 +3105,9 @@ class APIController extends Controller implements LoggedController { $hub_rider_slots[$third_date][$i] = $hub->getRiderSlots(); } + */ + /* // no advance orders if (empty($jos_advance_orders)) { @@ -3115,10 +3161,38 @@ class APIController extends Controller implements LoggedController $hub_slots[$third_date] = $this->setHubSlots($hub_rider_slots, $third_date); } } + */ return $hub_slots; } + protected function generateHubSlots($rider_slots, $slots) + { + $data = []; + foreach ($rider_slots as $day_id => $rslot) + { + $data[$day_id] = []; + + foreach ($rslot as $slot_id => $avail_slots) + { + $slot_data = [ + 'id' => $slot_id, + 'label' => $slots[$slot_id], + 'available' => true, + ]; + + // mark unavailable ones + if ($avail_slots <= 0) + $slot_data['available'] = false; + + // add to day data + $data[$day_id][] = $slot_data; + } + } + + return $data; + } + protected function setAllHubSlots($status) { $data = [];