From 9e094f38d5ddb0e922b8d6121e509a86a65ef3d1 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 28 Apr 2022 11:08:39 +0200 Subject: [PATCH] =?UTF-8?q?Erweiterung=20der=20Validierung=20um=20ganzt?= =?UTF-8?q?=C3=A4gige=20Zeitsperren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/urlaubstool.php | 53 +++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 9a955e2ff..ce9150dd8 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -271,22 +271,8 @@ if(isset($_GET['speichern']) && isset($_GET['wtag'])) } - //Pruefen ob bereits ein Urlaub in den markierten Bereichen vorhanden ist und ggf Abbrechen - //Das Problem sollte nur beim manuellen Refresh der Seite auftreten - $error=false; - for($i=0;$iUrlaubEingetragen($uid, $akette[$i], $ekette[$i])) - { - $vgmail.='
'.$p->t('zeitsperre/urlaubBereitsEingetragen').''; - $error=true; - break; - } - } - //Prüfen, ob eine Zeitaufzeichnung vorhanden ist und ggf Abbrechen + $error = false; for ($i = 0; $i < count($akette); $i++) { $za = new zeitaufzeichnung(); @@ -301,6 +287,43 @@ if(isset($_GET['speichern']) && isset($_GET['wtag'])) break; } } + + //Prüfen ob eine ganztägige Zeitsperre eingetragen ist und ggf abbrechen + $daysToCheck = array(); + for ($i = 0; $i < count($akette); $i++) + { + $zeitsperre = new zeitsperre(); + $vonDatum = new DateTime($akette[$i]); + $bisDatum = new DateTime($ekette[$i]); + + //add here to array, weil in der foreach-Schleife, das bisdatum nicht inkludiert ist + $daysToCheck[] = $bisDatum->format("Y-m-d"); + + $daterange = new DatePeriod($vonDatum, new DateInterval('P1D'), $bisDatum); + foreach($daterange as $date) + { + $daysToCheck[] = $date->format("Y-m-d"); + } + } + + foreach ($daysToCheck AS $date) + { + $zeitsperre->getSperreByDate($uid, $date, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN); + + foreach ($zeitsperre->result as $z) + { + if ($z->zeitsperretyp_kurzbz) + { + $error = true; + + $z->zeitsperretyp_kurzbz == 'Urlaub' ? + $vgmail.='
'.$p->t('zeitsperre/urlaubBereitsEingetragen').'' : + $vgmail .= '
'.$p->t('zeitsperre/zeitsperreEingetragen',[$date, $z->zeitsperretyp_kurzbz]). ''; + + break; + } + } + } } if(!$error)