Add debug info for hub rider slots data #403

This commit is contained in:
Kendrick Chan 2020-05-09 20:53:20 +08:00
parent 60846e17d6
commit 47333acaef

View file

@ -3035,26 +3035,11 @@ class APIController extends Controller implements LoggedController
'16_17' => '4: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
// 1 - 9-10
// 2 - 10-11
// 3 - 11-12
// 4 - 12 -13
// 5 - 13-14
// 6 - 14-15
// 7 - 15-16
// 8 - 16-17
// get the dates for the next three days // get the dates for the next three days
$first_date = $start_date->format('Y-m-d'); $first_date = $start_date->format('Y-m-d');
// 2nd day
$second_date = $start_date->add(new DateInterval('P1D')); $second_date = $start_date->add(new DateInterval('P1D'));
$sec_date = $second_date->format('Y-m-d'); $sec_date = $second_date->format('Y-m-d');
// third day
$third_date = $end_date->format('Y-m-d'); $third_date = $end_date->format('Y-m-d');
// define days // define days
@ -3077,6 +3062,7 @@ class APIController extends Controller implements LoggedController
// array of # of riders that can handle JOs in a timeslot // array of # of riders that can handle JOs in a timeslot
$hub_rider_slots = []; $hub_rider_slots = [];
// check each JO's date_schedule, decrement rider_slots if date schedule falls in that slot
foreach ($jos_advance_order as $jo) foreach ($jos_advance_order as $jo)
{ {
// get date key // get date key
@ -3089,80 +3075,10 @@ class APIController extends Controller implements LoggedController
$hub_rider_slots[$date_string][$slot_id]--; $hub_rider_slots[$date_string][$slot_id]--;
} }
error_log(print_r($hub_rider_slots, true));
$hub_slots = $this->generateHubSlots($hub_rider_slots, $slots); $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++)
{
$hub_rider_slots[$first_date][$i] = $hub->getRiderSlots();
}
for ($i = 0; $i <= self::RIDER_SLOT_ARRAY_LENGTH; $i++)
{
$hub_rider_slots[$sec_date][$i] = $hub->getRiderSlots();
}
for ($i = 0; $i <= self::RIDER_SLOT_ARRAY_LENGTH; $i++)
{
$hub_rider_slots[$third_date][$i] = $hub->getRiderSlots();
}
*/
/*
// no advance orders
if (empty($jos_advance_orders))
{
// set hub slots for the next three days
$slot_status = true;
$hub_slots[$first_date] = $this->setAllHubSlots($slot_status);
$hub_slots[$sec_date] = $this->setAllHubSlots($slot_status);
$hub_slots[$third_date] = $this->setAllHubSlots($slot_status);
}
else
{
foreach ($jos_advance_orders as $advance_jo)
{
// get date schedules of JO
$jo_date_schedule = $advance_jo->getDateSchedule();
$date_schedule = $jo_date_schedule->format('Y-m-d');
$time_schedule = $jo_date_schedule->format('H:i');
$hour_schedule = $jo_date_schedule->format('H');
$minute_schedule = $jo_date_schedule->format('i');
// check which of the three dates does date schedule fall
// and if date is already in hub slots
if (($first_date == $date_schedule) &&
(!isset($hub_slots[$first_date])))
$hub_slots[$first_date] = [];
if (($sec_date == $date_schedule) &&
(!isset($hub_slots[$sec_date])))
$hub_slots[$sec_date] = [];
if (($third_date == $date_schedule) &&
(!isset($hub_slots[$third_date])))
$hub_slots[$third_date] = [];
// decrement number of hub rider slots then
// set hub slots
if ($date_schedule == $first_date)
$this->decrementRiderSlots($hub_rider_slots, $first_date, $hour_schedule, $minute_schedule);
if ($date_schedule == $sec_date)
$this->decrementRiderSlots($hub_rider_slots, $sec_date, $hour_schedule, $minute_schedule);
if ($date_schedule == $third_date)
$this->decrementRiderSlots($hub_rider_slots, $third_date, $hour_schedule, $minute_schedule);
$hub_slots[$first_date] = $this->setHubSlots($hub_rider_slots, $first_date);
$hub_slots[$sec_date] = $this->setHubSlots($hub_rider_slots, $sec_date);
$hub_slots[$third_date] = $this->setHubSlots($hub_rider_slots, $third_date);
}
}
*/
return $hub_slots; return $hub_slots;
} }
@ -3193,296 +3109,6 @@ class APIController extends Controller implements LoggedController
return $data; return $data;
} }
protected function setAllHubSlots($status)
{
$data = [];
// set all slots to true
$data = [
[
'id' => '08_09',
'label' => '8:00 AM',
'available' => $status,
],
[
'id' => '09_10',
'label' => '9:00 AM',
'available' => $status,
],
[
'id' => '10_11',
'label' => '10:00 AM',
'available' => $status,
],
[
'id' =>'11_12',
'label' => '11:00 AM',
'available' => $status,
],
[
'id' => '12_13',
'label' => '12:00 PM',
'available' => $status,
],
[
'id' => '13_14',
'label' => '1:00 PM',
'available' => $status,
],
[
'id' => '14_15',
'label' => '2:00 PM',
'available' => $status,
],
[
'id' => '15_16',
'label' => '3:00 PM',
'available' => $status,
],
[
'id' => '16_17',
'label' => '4:00 PM',
'available' => $status,
],
];
return $data;
}
protected function setHubSlots($hub_rider_slots, $schedule_date)
{
$data = [];
// check values of hub_rider_slot to mark if available or not
for ($i = 0; $i <= self::RIDER_SLOT_ARRAY_LENGTH; $i++)
{
if ($hub_rider_slots[$schedule_date][$i] > 0)
{
// set the time label
switch($i) {
case '0':
$data[] = [
'id' => '08_09',
'label' => '8:00 AM',
'available' => true,
];
break;
case '1':
$data[] = [
'id' => '09_10',
'label' => '9:00 AM',
'available' => true,
];
break;
case '2':
$data[] = [
'id' => '10_11',
'label' => '10:00 AM',
'available' => true,
];
break;
case '3':
$data[] = [
'id' => '11_12',
'label' => '11:00 AM',
'available' => true,
];
break;
case '4':
$data[] = [
'id' => '12_13',
'label' => '12:00 PM',
'available' => true,
];
break;
case '5':
$data[] = [
'id' => '13_14',
'label' => '1:00 PM',
'available' => true,
];
break;
case '6':
$data[] = [
'id' => '14_15',
'label' => '2:00 PM',
'available' => true,
];
break;
case '7':
$data[] = [
'id' => '15_16',
'label' => '3:00 PM',
'available' => true,
];
break;
case '8':
$data[] = [
'id' => '16_17',
'label' => '4:00 PM',
'available' => true,
];
break;
default:
error_log('Invalid rider slot index.');
}
}
else
{
// set the time label
switch($i) {
case '0':
$data[] = [
'id' => '08_09',
'label' => '8:00 AM',
'available' => false,
];
break;
case '1':
$data[] = [
'id' => '09_10',
'label' => '9:00 AM',
'available' => false,
];
break;
case '2':
$data[] = [
'id' => '10_11',
'label' => '10:00 AM',
'available' => false,
];
break;
case '3':
$data[] = [
'id' => '11_12',
'label' => '11:00 AM',
'available' => false,
];
break;
case '4':
$data[] = [
'id' => '12_13',
'label' => '12:00 PM',
'available' => false,
];
break;
case '5':
$data[] = [
'id' => '13_14',
'label' => '1:00 PM',
'available' => false,
];
break;
case '6':
$data[] = [
'id' => '14_15',
'label' => '2:00 PM',
'available' => false,
];
break;
case '7':
$data[] = [
'id' => '15_16',
'label' => '3:00 PM',
'available' => false,
];
break;
case '8':
$data[] = [
'id' => '16_17',
'label' => '4:00 PM',
'available' => false,
];
break;
default:
error_log('Invalid rider slot index.');
}
}
}
return $data;
}
protected function decrementRiderSlots(&$hub_rider_slots, $date_schedule, $hour_schedule, $minute_schedule)
{
if ($minute_schedule != '00')
{
switch($hour_schedule) {
case '8':
$hub_rider_slots[$date_schedule][0]--;
$hub_rider_slots[$date_schedule][1]--;
break;
case '9':
$hub_rider_slots[$date_schedule][1]--;
$hub_rider_slots[$date_schedule][2]--;
break;
case '10':
$hub_rider_slots[$date_schedule][2]--;
$hub_rider_slots[$date_schedule][3]--;
break;
case '11':
$hub_rider_slots[$date_schedule][3]--;
$hub_rider_slots[$date_schedule][4]--;
break;
case '12':
$hub_rider_slots[$date_schedule][4]--;
$hub_rider_slots[$date_schedule][5]--;
break;
case '13':
$hub_rider_slots[$date_schedule][5]--;
$hub_rider_slots[$date_schedule][6]--;
break;
case '14':
$hub_rider_slots[$date_schedule][6]--;
$hub_rider_slots[$date_schedule][7]--;
break;
case '15':
$hub_rider_slots[$date_schedule][7]--;
$hub_rider_slots[$date_schedule][8]--;
break;
case '16':
error_log('No slots for the day');
break;
default:
error_log('Does not fit in any time slot. ' . $time_schedule);
}
}
else
{
switch ($hour_schedule) {
case '8':
$hub_rider_slots[$date_schedule][0]--;
break;
case '9':
$hub_rider_slots[$date_schedule][1]--;
break;
case '10':
$hub_rider_slots[$date_schedule][2]--;
break;
case '11':
$hub_rider_slots[$date_schedule][3]--;
break;
case '12':
$hub_rider_slots[$date_schedule][4]--;
break;
case '13':
$hub_rider_slots[$date_schedule][5]--;
break;
case '14':
$hub_rider_slots[$date_schedule][6]--;
break;
case '15':
$hub_rider_slots[$date_schedule][7]--;
break;
case '16':
$hub_rider_slots[$date_schedule][8]--;
break;
default:
error_log('Does not fit in any time slot.' . $time_schedule);
}
}
}
protected function getTimeFromSlot($slot_id) protected function getTimeFromSlot($slot_id)
{ {
$time_selected = ''; $time_selected = '';