first draft for #536

This commit is contained in:
jwacalex 2018-12-22 02:07:17 +01:00 committed by msquare
parent b1d8fede46
commit 60a9c15454
1 changed files with 25 additions and 5 deletions

View File

@ -114,7 +114,7 @@ function admin_shifts()
if ( if (
$request->has('change_hours') $request->has('change_hours')
&& preg_match( && preg_match(
'/^(\d{2}(,|$))/', '/^((\d{2}(:\d{2})?(,|$))*)/',
trim(str_replace(' ', '', $request->input('change_hours'))) trim(str_replace(' ', '', $request->input('change_hours')))
) )
) { ) {
@ -216,10 +216,18 @@ function admin_shifts()
$day = parse_date('Y-m-d H:i', date('Y-m-d', $start) . ' 00:00'); $day = parse_date('Y-m-d H:i', date('Y-m-d', $start) . ' 00:00');
$change_index = 0; $change_index = 0;
// Ersten/nächsten passenden Schichtwechsel suchen // Ersten/nächsten passenden Schichtwechsel suchen
foreach ($change_hours as $i => $change_hour) { foreach ($change_hours as $i => $change_time) {
if ($start < $day + $change_hour * 60 * 60) { if(!preg_match('/\d{2}:\d{2}/',$change_time)) {
$change_time = $change_time.":00";
}
$change_time = explode(':',$change_time);
$change_hour = $change_time[0];
$change_minute = $change_time[1];
if ($start < $day + $change_hour * 60 * 60 + $change_minute * 60) {
$change_index = $i; $change_index = $i;
} elseif ($start == $day + $change_hour * 60 * 60) { } elseif ($start == $day + $change_hour * 60 * 60 + $change_minute * 60) {
// Start trifft Schichtwechsel // Start trifft Schichtwechsel
$change_index = ($i + count($change_hours) - 1) % count($change_hours); $change_index = ($i + count($change_hours) - 1) % count($change_hours);
break; break;
@ -231,7 +239,19 @@ function admin_shifts()
$shift_start = $start; $shift_start = $start;
do { do {
$day = parse_date('Y-m-d H:i', date('Y-m-d', $shift_start) . ' 00:00'); $day = parse_date('Y-m-d H:i', date('Y-m-d', $shift_start) . ' 00:00');
$shift_end = $day + $change_hours[$change_index] * 60 * 60;
$change_time=$change_hours[$change_index];
if(!preg_match('/\d{2}:\d{2}/',$change_time)) {
$change_time = $change_time.":00";
}
$change_time = explode(':',$change_time);
$change_hour = $change_time[0];
$change_minute = $change_time[1];
$shift_end = $day + $change_hour * 60 * 60 + $change_minute * 60;
if ($shift_end > $end) { if ($shift_end > $end) {
$shift_end = $end; $shift_end = $end;