From d5225da80cf9b2dc4f0ea55c5be6436c016d5db6 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 12 Apr 2022 16:48:22 +0200 Subject: [PATCH 1/2] Kein Eintrag Urlaubstool bei vorhandener Zeitaufzeichnung --- cis/private/profile/urlaubstool.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index b15bcebb8..9a955e2ff 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -33,6 +33,7 @@ require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/globals.inc.php'); require_once('../../../include/sprache.class.php'); +require_once('../../../include/zeitaufzeichnung.class.php'); $sprache = getSprache(); $lang = new sprache(); @@ -284,6 +285,22 @@ if(isset($_GET['speichern']) && isset($_GET['wtag'])) break; } } + + //Prüfen, ob eine Zeitaufzeichnung vorhanden ist und ggf Abbrechen + for ($i = 0; $i < count($akette); $i++) + { + $za = new zeitaufzeichnung(); + $vonDatum = new DateTime($akette[$i]); + $bisDatum = new DateTime($ekette[$i]); + + if ($za->existsZeitaufzeichnung($uid, $vonDatum->format('d.m.Y'), $bisDatum->format('d.m.Y'))) + { + $error = true; + $vgmail .= '
'.$p->t('zeitsperre/zeitaufzeichnungVorhanden'). ' '. + $vonDatum->format('d.m.Y'). ' - '. $bisDatum->format('d.m.Y'). ''; + break; + } + } } if(!$error) @@ -794,13 +811,13 @@ for ($i=0;$i<6;$i++) echo ''.$tage[$j+7*$i].'
'; if(strlen(stristr($tage[$j+7*$i],"."))>0) { - echo ''; } else { - echo ''; } } From 9e094f38d5ddb0e922b8d6121e509a86a65ef3d1 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 28 Apr 2022 11:08:39 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Erweiterung=20der=20Validierung=20um=20ganz?= =?UTF-8?q?t=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)