diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1056ebc87..6263972ed 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1936,6 +1936,9 @@ function getDataForProjectOverviewCSV($user) $projects_of_user = new projekt(); $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $projektphase = new projektphase(); + $projektphasen = $projektphase->getProjectphaseForMitarbeiter($user); + $csvData = array(); //headers schreiben $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); @@ -1951,25 +1954,27 @@ function getDataForProjectOverviewCSV($user) $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase,$projekt_phase_id, $beginn, $ende); - $projektphasen = new projektphase(); + //$projektphasen = new projektphase(); - if($projektphasen->getProjectphaseForMitarbeiter($user)) - { - foreach($projektphasen->result as $projektphase) + + foreach($projektphasen as $prjp) { - $projekt_phase = $projektphase->bezeichnung; - $projekt_phase_id = $projektphase->projektphase_id; - if(!empty($projektphase->beginn)) - $beginn = $projektphase->beginn; - else - $beginn = $project->beginn; - if(!empty($projektphase->ende)) - $ende = $projektphase->ende; - else - $ende = $project->ende; - $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $projekt_phase_id, $beginn, $ende); + if($prjp->projekt_kurzbz===$projekt_kurzbz) + { + $projekt_phase = $prjp->bezeichnung; + $projekt_phase_id = $prjp->projektphase_id; + if (!empty($prjp->beginn)) + $beginn = $prjp->beginn; + else + $beginn = $project->beginn; + if (!empty($prjp->ende)) + $ende = $prjp->ende; + else + $ende = $project->ende; + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + } } - } + } return $csvData; } diff --git a/cis/private/tools/zeitaufzeichnung_projektphasen.php b/cis/private/tools/zeitaufzeichnung_projektphasen.php index 8ec421395..c6fe99363 100644 --- a/cis/private/tools/zeitaufzeichnung_projektphasen.php +++ b/cis/private/tools/zeitaufzeichnung_projektphasen.php @@ -1,26 +1,36 @@ getProjectphaseForMitarbeiterByKurzBz($user, $projekt_kurzbz); + $pp_user_ids = array(); + foreach ($projektphasen_user as $pp_user) + { + array_push($pp_user_ids, $pp_user->projektphase_id); + } + if($projektphase->getProjektphasen($projekt_kurzbz)) { $result_obj = array(); foreach($projektphase->result as $row) { - $item['projektphase_id']=$row->projektphase_id; - $item['bezeichnung']=$row->bezeichnung; - $result_obj[]=$item; + if(in_array($row->projektphase_id, $pp_user_ids)) + { + $item['projektphase_id'] = $row->projektphase_id; + $item['bezeichnung'] = $row->bezeichnung; + $result_obj[] = $item; + } } echo json_encode($result_obj); } diff --git a/include/projektphase.class.php b/include/projektphase.class.php index fbf41682c..5744382e9 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -657,9 +657,14 @@ class projektphase extends basis_db } } + /** + * Laedt die Projektphase mit der ID des mitarbeiters + * @param $mitarbeiter_uid der zu ladenden Projektphase des users + * @return array wenn ok, false im Fehlerfall + */ public function getProjectphaseForMitarbeiter($mitarbeiter_uid) { - + $projecphasetList = array(); /*$qry = "SELECT DISTINCT tbl_projekt.* FROM @@ -697,10 +702,10 @@ class projektphase extends basis_db if($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object()) + while($row = $this->db_fetch_object($result)) { - while ($row = $this->db_fetch_object($result)) { $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; $obj->projektphase_id = $row->projektphase_id; $obj->projektphase_fk = $row->projektphase_fk; @@ -713,21 +718,97 @@ class projektphase extends basis_db $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; $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; + + array_push($projecphasetList, $obj); } + return $projecphasetList; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Projektphase mit der ID des mitarbeiters für das jeweilige Projekt + * @param $mitarbeiter_uid der zu ladenden Projektphase des users + * @param $prjkzbz des zu landenen Projekts + * @return array wenn ok, false im Fehlerfall + */ + public function getProjectphaseForMitarbeiterByKurzBz($mitarbeiter_uid, $prjkzbz) + { + $projecphasetList = 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) . " + )";*/ + + $qry = " + + SELECT DISTINCT + tbl_projektphase.* + 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 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->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + $this->result[] = $obj; + + if($prjkzbz === $row->projekt_kurzbz ) + array_push($projecphasetList, $obj); + } + return $projecphasetList; } else { @@ -735,6 +816,5 @@ class projektphase extends basis_db return false; } } - } ?>