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;
}
}
}
+
?>