diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index b15bcebb8..ce9150dd8 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(); @@ -270,20 +271,59 @@ 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])) + if ($za->existsZeitaufzeichnung($uid, $vonDatum->format('d.m.Y'), $bisDatum->format('d.m.Y'))) { - $vgmail.='
'.$p->t('zeitsperre/urlaubBereitsEingetragen').''; - $error=true; + $error = true; + $vgmail .= '
'.$p->t('zeitsperre/zeitaufzeichnungVorhanden'). ' '. + $vonDatum->format('d.m.Y'). ' - '. $bisDatum->format('d.m.Y'). ''; 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) @@ -794,13 +834,13 @@ for ($i=0;$i<6;$i++) echo ''.$tage[$j+7*$i].'
'; if(strlen(stristr($tage[$j+7*$i],"."))>0) { - echo ''; } else { - echo ''; } }