Multiple attendant number generation must take into consideration the working plan exceptions

This commit is contained in:
Alex Tselegidis 2020-11-21 22:16:53 +02:00
parent 9e71255cae
commit 8c836bf10c

View file

@ -342,22 +342,29 @@ class Availability {
]);
$working_plan = json_decode($provider['settings']['working_plan'], TRUE);
$working_plan_exceptions = json_decode($provider['settings']['working_plan_exceptions'], TRUE);
$working_day = strtolower(date('l', strtotime($date)));
$working_hours = $working_plan[$working_day];
$date_working_plan = $working_plan[$working_day];
if ( ! $working_hours)
// Search if the $date is an custom availability period added outside the normal working plan.
if (isset($working_plan_exceptions[$date]))
{
$date_working_plan = $working_plan_exceptions[$date];
}
if ( ! $date_working_plan)
{
return [];
}
$periods = [
[
'start' => new DateTime($date . ' ' . $working_hours['start']),
'end' => new DateTime($date . ' ' . $working_hours['end'])
'start' => new DateTime($date . ' ' . $date_working_plan['start']),
'end' => new DateTime($date . ' ' . $date_working_plan['end'])
]
];
$periods = $this->remove_breaks($date, $periods, $working_hours['breaks']);
$periods = $this->remove_breaks($date, $periods, $date_working_plan['breaks']);
$periods = $this->remove_unavailability_events($periods, $unavailability_events);
$hours = [];