From e4f3139205a89f6ed969a51dd7696e9be97b57a7 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 9 Sep 2020 10:50:42 +0200 Subject: [PATCH] impliment zeitaufzeichnungs checks --- cis/private/tools/zeitaufzeichnung.php | 10 +-- include/projekt.class.php | 2 +- include/projektphase.class.php | 86 +++++++++++++++++++++++++- 3 files changed, 92 insertions(+), 6 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index ba554f5e7..a114eef40 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -680,6 +680,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); } + $projectphase = new projektphase(); if ($_FILES['csv']['error'] == 0 && isset($_POST['import'])) { @@ -726,10 +727,6 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $data[8] = NULL; if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; - //elseif (isset($data[8]) && ( filter_var($data[8], FILTER_VALIDATE_INT) === false )) - //{ - // echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Service ID ist keine Zahl ('.$data[8].')
'; - //} elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; @@ -877,6 +874,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; $saveerror = 1; } + elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; + $saveerror = 1; + } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) { diff --git a/include/projekt.class.php b/include/projekt.class.php index 036a90bf0..304d6d4ab 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -25,7 +25,7 @@ * @param string $projekt_kurzbz primary key Projektname. */ require_once(dirname(__FILE__).'/basis_db.class.php'); - +error_reporting(E_ALL ^ E_NOTICE); class projekt extends basis_db { public $new; // boolean diff --git a/include/projektphase.class.php b/include/projektphase.class.php index 81de4e095..8d96c92af 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -24,7 +24,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/projekttask.class.php'); - +error_reporting(E_ALL ^ E_NOTICE); class projektphase extends basis_db { public $new; // boolean @@ -572,6 +572,90 @@ class projektphase extends basis_db else return false; } + + public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende) + { + try + { + $projektphase = $this->getProjectphaseById($projektphase_id); + if(strtotime($projektphase->beginn)) + $projektphase_start = date('Y-m-d', strtotime($projektphase->beginn)); + else + $projektphase_start = NULL; + if(strtotime($projektphase->ende)) + $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); + else + $projektphase_ende = NULL; + + $given_start = date('Y-m-d', strtotime($given_projectphase_start)); + $given_ende = date('Y-m-d', strtotime($given_projektphase_ende)); + + if ((empty($projektphase_start) || $given_start >= $projektphase_start) && (empty($projektphase_ende) || $given_ende <= $projektphase_ende)) + return true; + else + return false; + + } + catch (Exception $e) + { + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + } + } + + /** + * Laedt die Projektphase mit der ID $projektphase_id + * @param $projektphase_id ID der zu ladenden Projektphase + * @return true wenn ok, false im Fehlerfall + */ + public function getProjectphaseById($projektphase_id) + { + if(!is_numeric($projektphase_id)) + { + $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung + FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) + WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->projektphase_id = $row->projektphase_id; + $obj->projektphase_fk = $row->projektphase_fk; + $obj->bezeichnung = $row->bezeichnung; + $obj->typ = $row->typ; + $obj->beschreibung = $row->beschreibung; + $obj->start = $row->start; + $obj->ende = $row->ende; + $obj->personentage = $row->personentage; + $obj->farbe = $row->farbe; + $obj->budget = $row->budget; + $obj->ressource_id = $row->ressource_id; + $obj->ressource_bezeichnung = $row->ressource_bezeichnung; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + return $obj; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?>