From 9250485cb37b77eb81ad776c9e133ef3f60ea414 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 3 Sep 2020 15:22:46 +0200 Subject: [PATCH] check for time in csv import --- cis/private/tools/zeitaufzeichnung.php | 182 +++++++----- include/projekt.class.php | 391 ++++++++++++++++--------- 2 files changed, 347 insertions(+), 226 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 71fdda2bb..ed146e728 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -689,108 +689,128 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $anzahl = 0; $importtage_array = array(); $ende_vorher = date('Y-m-d H:i:s'); + $projects_of_user = new projekt(); + $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $project_kurzbz_array = array(); + + foreach($projects as $prjct) + { + array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); + } + while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) { - if($data[0] == $user) - { - if (!isset($data[5])) - $data[5] = NULL; - if (!isset($data[6])) - $data[6] = NULL; - if (!isset($data[7])) - $data[7] = NULL; - if (!isset($data[8])) - $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 (checkVals($data[5],$data[6],$data[7],$data[8])) + if($data[0] == $user){ + if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array)) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt nicht zugewiesen sind: ('.$data[6].')
'; } else { - if ($data[1] == 'LehreIntern') - $data[1] = 'Lehre'; - $zeit->new = true; - $zeit->beschreibung = NULL; - $zeit->oe_kurzbz_1 = NULL; - $zeit->projekt_kurzbz = NULL; - $zeit->projektphase_id = NULL; - $zeit->service_id = NULL; - $zeit->insertamum = date('Y-m-d H:i:s'); - $zeit->updateamum = date('Y-m-d H:i:s'); - $zeit->updatevon = $user; - $zeit->insertvon = $user; - $zeit->uid = $data[0]; - $zeit->aktivitaet_kurzbz = $data[1]; - $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s'); - $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s'); - if (isset($data[4])) - $zeit->beschreibung = $data[4]; - if (isset($data[5])) - $zeit->oe_kurzbz_1 = $data[5]; - if (isset($data[6])) - $zeit->projekt_kurzbz = $data[6]; - if (isset($data[7])) - $zeit->projektphase_id = $data[7]; - if (isset($data[8])) - $zeit->service_id = $data[8]; - $tag = $datum->formatDatum($data[2], $format='Y-m-d'); - - if(!in_array($tag, $importtage_array)) + if (!isset($data[5])) + $data[5] = NULL; + if (!isset($data[6])) + $data[6] = NULL; + if (!isset($data[7])) + $data[7] = NULL; + if (!isset($data[8])) + $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])) { - $importtage_array[] = $tag; - $zeit->deleteEntriesForUser($user, $tag); - $tag_aktuell = $tag; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + } + elseif (checkVals($data[5],$data[6],$data[7],$data[8])) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; } else { - if ($ende_vorher < $zeit->start) + if ($data[1] == 'LehreIntern') + $data[1] = 'Lehre'; + $zeit->new = true; + $zeit->beschreibung = NULL; + $zeit->oe_kurzbz_1 = NULL; + $zeit->projekt_kurzbz = NULL; + $zeit->projektphase_id = NULL; + $zeit->service_id = NULL; + + $zeit->insertamum = date('Y-m-d H:i:s'); + $zeit->updateamum = date('Y-m-d H:i:s'); + $zeit->updatevon = $user; + $zeit->insertvon = $user; + $zeit->uid = $data[0]; + $zeit->aktivitaet_kurzbz = $data[1]; + $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s'); + $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s'); + if (isset($data[4])) + $zeit->beschreibung = $data[4]; + if (isset($data[5])) + $zeit->oe_kurzbz_1 = $data[5]; + if (isset($data[6])) + $zeit->projekt_kurzbz = $data[6]; + if (isset($data[7])) + $zeit->projektphase_id = $data[7]; + if (isset($data[8])) + $zeit->service_id = $data[8]; + $tag = $datum->formatDatum($data[2], $format='Y-m-d'); + + if(!in_array($tag, $importtage_array)) { - $pause = new zeitaufzeichnung(); - $pause->new = true; - $pause->insertamum = date('Y-m-d H:i:s'); - $pause->updateamum = date('Y-m-d H:i:s'); - $pause->updatevon = $user; - $pause->insertvon = $user; - $pause->uid = $user; - $pause->aktivitaet_kurzbz = 'Pause'; - $pause->start = $ende_vorher; - $pause->ende = $zeit->start; - $pause->beschreibung = ''; - if(!$pause->save()) + $importtage_array[] = $tag; + $zeit->deleteEntriesForUser($user, $tag); + $tag_aktuell = $tag; + } + else + { + if ($ende_vorher < $zeit->start) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + $pause = new zeitaufzeichnung(); + $pause->new = true; + $pause->insertamum = date('Y-m-d H:i:s'); + $pause->updateamum = date('Y-m-d H:i:s'); + $pause->updatevon = $user; + $pause->insertvon = $user; + $pause->uid = $user; + $pause->aktivitaet_kurzbz = 'Pause'; + $pause->start = $ende_vorher; + $pause->ende = $zeit->start; + $pause->beschreibung = ''; + if(!$pause->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + } } } - } - $ende_vorher = $zeit->ende; - if($data[2] != $data[3]) - { - /* - if ($data[1] == 'LehreExtern') + $ende_vorher = $zeit->ende; + if($data[2] != $data[3]) { - $zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2]))); - $zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3]))); - } - */ - if(!$zeit->save()) - { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; + /* + if ($data[1] == 'LehreExtern') + { + $zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2]))); + $zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3]))); + } + */ + if(!$zeit->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; + } + else + $anzahl++; } else $anzahl++; - } - else - $anzahl++; - } + } + } } else if (strpos($data[0],'#') === false) { diff --git a/include/projekt.class.php b/include/projekt.class.php index 92a3129ec..d1cd49661 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -28,26 +28,25 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class projekt extends basis_db { - public $new; // boolean - public $result = array(); // projekt Objekt + public $new; // boolean + public $result = array(); // projekt Objekt //Tabellenspalten - public $projekt_kurzbz; // string - public $nummer; // string - public $titel; // string - public $beschreibung; // string - public $beginn; // date - public $ende; // date - public $oe_kurzbz; // string - public $insertamum; // timestamp - public $insertvon; // string - public $updateamum; // timestamp - public $updatevon; // string + public $projekt_kurzbz; // string + public $nummer; // string + public $titel; // string + public $beschreibung; // string + public $beginn; // date + public $ende; // date + public $oe_kurzbz; // string + public $insertamum; // timestamp + public $insertvon; // string + public $updateamum; // timestamp + public $updatevon; // string public $budget; public $farbe; - public $anzahl_ma; // integer - public $aufwand_pt; // integer - + public $anzahl_ma; // integer + public $aufwand_pt; // integer /** @@ -58,23 +57,21 @@ class projekt extends basis_db { parent::__construct(); - if($projekt_kurzbz != null) + if ($projekt_kurzbz != null) $this->load($projekt_kurzbz); } /** * Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz - * @param string $projekt_kurzbz Kurzbz des Projekts. + * @param string $projekt_kurzbz Kurzbz des Projekts. * @return true wenn ok, false im Fehlerfall */ public function load($projekt_kurzbz) { - $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz); - if ($this->db_query($qry)) - { - if ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + if ($row = $this->db_fetch_object()) { $this->projekt_kurzbz = $row->projekt_kurzbz; $this->nummer = $row->nummer; $this->titel = $row->titel; @@ -89,43 +86,39 @@ class projekt extends basis_db return true; } - else - { + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - /** - * Laedt alle aktuellen Projekte - * @param bool $filter_kommende Lädt auch alle zukünftigen. + /** + * Laedt alle aktuellen Projekte + * @param bool $filter_kommende Lädt auch alle zukünftigen. * @param string $oe Organisationseinheit. - * @return bool - */ - public function getProjekteAktuell($filter_kommende = false, $oe = null) - { - $qry = 'SELECT * FROM fue.tbl_projekt WHERE '; + * @return bool + */ + public function getProjekteAktuell($filter_kommende = false, $oe = null) + { + $qry = 'SELECT * FROM fue.tbl_projekt WHERE '; - if($filter_kommende) - $qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)"; - else - $qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)"; + if ($filter_kommende) + $qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)"; + else + $qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)"; - if (!is_null($oe)) - $qry .= ' AND oe_kurzbz='.$this->db_add_param($oe); + if (!is_null($oe)) + $qry .= ' AND oe_kurzbz=' . $this->db_add_param($oe); - $qry .= ' ORDER BY oe_kurzbz;'; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + $qry .= ' ORDER BY oe_kurzbz;'; + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -145,31 +138,28 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } - /** - * Laedt alle Projekte die zwischen beginn und ende liegen - * @param date $beginn Anfang. - * @param date $ende Ende. - * @param string $oe Organisationseinheit. - * @return bool - */ - public function getProjekteInZeitraum($beginn, $ende, $oe = null) - { - $qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn); + /** + * Laedt alle Projekte die zwischen beginn und ende liegen + * @param date $beginn Anfang. + * @param date $ende Ende. + * @param string $oe Organisationseinheit. + * @return bool + */ + public function getProjekteInZeitraum($beginn, $ende, $oe = null) + { + $qry = 'select * from fue.tbl_projekt where beginn <= ' . $this->db_add_param($ende) . ' and ende >= ' . $this->db_add_param($beginn); if (!is_null($oe)) - $qry .= " AND oe_kurzbz=".$this->db_add_param($oe); + $qry .= " AND oe_kurzbz=" . $this->db_add_param($oe); $qry .= ' ORDER BY oe_kurzbz;'; //echo $qry; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -188,12 +178,11 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } /** @@ -205,13 +194,11 @@ class projekt extends basis_db { $qry = 'SELECT * FROM fue.tbl_projekt'; if (!is_null($oe)) - $qry .= " WHERE oe_kurzbz=".$this->db_add_param($oe); + $qry .= " WHERE oe_kurzbz=" . $this->db_add_param($oe); $qry .= ' ORDER BY oe_kurzbz;'; //echo $qry; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -231,8 +218,7 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -245,26 +231,21 @@ class projekt extends basis_db protected function validate() { //Gesamtlaenge pruefen - if ($this->projekt_kurzbz == null) - { + if ($this->projekt_kurzbz == null) { $this->errormsg = 'Projekt kurzbz darf nicht NULL sein!'; } - if ($this->oe_kurzbz == null) - { + if ($this->oe_kurzbz == null) { $this->errormsg = 'OE kurbz darf nicht NULL sein!'; } - if (mb_strlen($this->projekt_kurzbz) > 16) - { + if (mb_strlen($this->projekt_kurzbz) > 16) { $this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein'; return false; } - if (mb_strlen($this->nummer) > 8) - { + if (mb_strlen($this->nummer) > 8) { $this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein'; return false; } - if (mb_strlen($this->titel) > 256) - { + if (mb_strlen($this->titel) > 256) { $this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein'; return false; } @@ -283,56 +264,52 @@ class projekt extends basis_db public function save($new = null) { //Variablen pruefen - if(!$this->validate()) + if (!$this->validate()) return false; if ($new == null) $new = $this->new; - if ($new) - { + if ($new) { //Neuen Datensatz einfuegen - $qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('. - $this->db_add_param($this->projekt_kurzbz).', '. - $this->db_add_param($this->nummer).', '. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->beschreibung).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->budget).', '. - $this->db_add_param($this->farbe).', '. - $this->db_add_param($this->oe_kurzbz).','. - $this->db_add_param($this->aufwand_pt).','. - $this->db_add_param($this->anzahl_ma).','. - $this->db_add_param($this->aufwandstyp_kurzbz).');'; + $qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES(' . + $this->db_add_param($this->projekt_kurzbz) . ', ' . + $this->db_add_param($this->nummer) . ', ' . + $this->db_add_param($this->titel) . ', ' . + $this->db_add_param($this->beschreibung) . ', ' . + $this->db_add_param($this->beginn) . ', ' . + $this->db_add_param($this->ende) . ', ' . + $this->db_add_param($this->budget) . ', ' . + $this->db_add_param($this->farbe) . ', ' . + $this->db_add_param($this->oe_kurzbz) . ',' . + $this->db_add_param($this->aufwand_pt) . ',' . + $this->db_add_param($this->anzahl_ma) . ',' . + $this->db_add_param($this->aufwandstyp_kurzbz) . ');'; } - else - { + else { //Updaten des bestehenden Datensatzes - $qry = 'UPDATE fue.tbl_projekt SET '. - 'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '. - 'nummer='.$this->db_add_param($this->nummer).', '. - 'titel='.$this->db_add_param($this->titel).', '. - 'beschreibung='.$this->db_add_param($this->beschreibung).', '. - 'beginn='.$this->db_add_param($this->beginn).', '. - 'ende='.$this->db_add_param($this->ende).', '. - 'budget='.$this->db_add_param($this->budget).', '. - 'farbe='.$this->db_add_param($this->farbe).', '. - 'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '. - 'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '. - 'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '. - 'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '. - 'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';'; + $qry = 'UPDATE fue.tbl_projekt SET ' . + 'projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ', ' . + 'nummer=' . $this->db_add_param($this->nummer) . ', ' . + 'titel=' . $this->db_add_param($this->titel) . ', ' . + 'beschreibung=' . $this->db_add_param($this->beschreibung) . ', ' . + 'beginn=' . $this->db_add_param($this->beginn) . ', ' . + 'ende=' . $this->db_add_param($this->ende) . ', ' . + 'budget=' . $this->db_add_param($this->budget) . ', ' . + 'farbe=' . $this->db_add_param($this->farbe) . ', ' . + 'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ', ' . + 'anzahl_ma=' . $this->db_add_param($this->anzahl_ma) . ', ' . + 'aufwand_pt=' . $this->db_add_param($this->aufwand_pt) . ', ' . + 'aufwandstyp_kurzbz=' . $this->db_add_param($this->aufwandstyp_kurzbz) . ' ' . + 'WHERE projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ';'; } - if ($this->db_query($qry)) - { + if ($this->db_query($qry)) { return true; } - else - { + else { $this->errormsg = 'Fehler beim Speichern der Daten'; return false; } @@ -345,14 +322,12 @@ class projekt extends basis_db */ public function delete($projekt_kurzbz) { - $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz); - if ($this->db_query($qry)) - { + if ($this->db_query($qry)) { return true; } - else - { + else { $this->errormsg = 'Fehler beim Loeschen des Datensatzes'; return false; } @@ -367,7 +342,7 @@ class projekt extends basis_db */ function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen = false) { - $qry = "SELECT DISTINCT + $qry = "SELECT DISTINCT tbl_projekt.* FROM fue.tbl_ressource @@ -377,12 +352,12 @@ class projekt extends basis_db AND (ende + interval '1 month 1 day' >=now() OR ende is null) AND ( - mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." OR - student_uid=".$this->db_add_param($mitarbeiter_uid)." + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " )"; - if ($projektphasen == true) - $qry .= "UNION + if ($projektphasen == true) + $qry .= "UNION SELECT DISTINCT tbl_projekt.* @@ -401,12 +376,10 @@ class projekt extends basis_db AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) ) ) - AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); - if ($result = $this->db_query($qry)) - { - while ($row = $this->db_fetch_object($result)) - { + if ($result = $this->db_query($qry)) { + while ($row = $this->db_fetch_object($result)) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -421,22 +394,90 @@ class projekt extends basis_db } return true; } - else - { + else { $this->erromsg = 'Fehler beim Laden der Daten'; return false; } } + + /** + * Liefert Ein Array mit Porjekten von allen Projekten des Mitarbeiters mit UID. + * Optional auch mit den Zuteilungen zu Projektphasen. + * @param string $mitarbeiter_uid MitarbeiterUID. + * @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert. + * @return array wenn ok, false im Fehlerfall + */ + function getProjekteListForMitarbeiter($mitarbeiter_uid, $projektphasen = false) + { + $projectList = array(); + $qry = "SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_ressource + JOIN fue.tbl_projekt_ressource USING(ressource_id) + JOIN fue.tbl_projekt USING(projekt_kurzbz) + WHERE (beginn<=now() or beginn is null) + AND (ende + interval '1 month 1 day' >=now() OR ende is null) + AND + ( + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " + )"; + + if ($projektphasen == true) + $qry .= "UNION + + SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_projektphase + JOIN fue.tbl_projekt USING (projekt_kurzbz) + JOIN fue.tbl_projekt_ressource USING (projektphase_id) + JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id) + WHERE + ( + ( + (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null) + AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null) + ) OR ( + (tbl_projektphase.start<=now() or tbl_projektphase.start is null) + AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) + ) + ) + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); + + if ($result = $this->db_query($qry)) { + while ($row = $this->db_fetch_object($result)) { + $obj = new projekt(); + + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->nummer = $row->nummer; + $obj->titel = $row->titel; + $obj->beschreibung = $row->beschreibung; + $obj->beginn = $row->beginn; + $obj->ende = $row->ende; + $obj->oe_kurzbz = $row->oe_kurzbz; + + $this->result[] = $obj; + + array_push($projectList, $obj); + } + return $projectList; + } + else { + $this->erromsg = 'Fehler beim Laden der Daten'; + return false; + } + } + public function getProjektFromBestellung($bestellung_id) { $qry = "select * from fue.tbl_projekt join wawi.tbl_projekt_bestellung USING (projekt_kurzbz) - where bestellung_id= ".$this->db_add_param($bestellung_id); + where bestellung_id= " . $this->db_add_param($bestellung_id); - if ($this->db_query($qry)) - { - if ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + if ($row = $this->db_fetch_object()) { $this->projekt_kurzbz = $row->projekt_kurzbz; $this->nummer = $row->nummer; $this->titel = $row->titel; @@ -451,17 +492,77 @@ class projekt extends basis_db return true; } - else - { + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else + else { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert True zurück wenn die angegebenen Start und Endzeitpunkt der Arbeitsdauer in die Projektdauer fallen + * @param string $mitarbeiter_uid MitarbeiterUID. + * @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert. + * @return array wenn ok, false im Fehlerfall + */ + public function checkProjectInCorrectTime($projekt_kurzbz, $give_project_start, $give_projekt_ende) + { + try { + $projekt = $this->getProjectByKurzbz($projekt_kurzbz); + if(strtotime($projekt->beginn)) + $projekt_start = date('Y-m-d', strtotime($projekt->beginn)); + else + $projekt_start = NULL; + if(strtotime($projekt->ende)) + $projekt_ende = date('Y-m-d', strtotime($projekt->ende)); + else + $projekt_ende = NULL; + + $given_start = date('Y-m-d', strtotime($give_project_start)); + $given_ende = date('Y-m-d', strtotime($give_projekt_ende)); + + var_dump($projekt_start,$given_start); + var_dump($projekt_ende,$given_ende); + if ((empty($projekt_start) || $given_start >= $projekt_start) && (empty($projekt_ende) || $given_ende <= $projekt_ende)) + return true; + else + return false; + + } + catch (Exception $e) + { + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + } + } + + public function getProjectByKurzbz($projekt_kurzbz) + { + $qry = "SELECT * FROM fue.tbl_projekt + WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if ($result = $this->db_query($qry)) { + $row = $this->db_fetch_object($result); + $obj = new projekt(); + + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->nummer = $row->nummer; + $obj->titel = $row->titel; + $obj->beschreibung = $row->beschreibung; + $obj->beginn = $row->beginn; + $obj->ende = $row->ende; + $obj->oe_kurzbz = $row->oe_kurzbz; + + return $obj; + } + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } } + ?>