From f58e272858140e47bb547ab64a5276af8798b0a1 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Mon, 31 Aug 2015 11:03:06 +0200 Subject: [PATCH] angepasste oberflaeche fuer gesamtorganisation csv import --- cis/private/tools/zeitaufzeichnung.php | 127 ++++++++++++++++++++++--- include/functions.inc.php | 22 +++++ include/zeitaufzeichnung.class.php | 21 ++++ 3 files changed, 156 insertions(+), 14 deletions(-) mode change 100644 => 100755 include/functions.inc.php diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index ca37aa04e..88d7b186a 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -48,15 +48,15 @@ if (!$db = new basis_db()) $user = get_uid(); $datum = new datum(); -if ($user == 'foo') +if (check_infrastruktur($user)) { - $za_simple = 1; - $activities = array('Arbeit', 'Pause', 'Arztbesuch', 'Dienstreise', 'Behoerde'); + $za_simple = 0; + $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde'); } else { - $za_simple = 0; - $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'Arztbesuch', 'Dienstreise', 'Behoerde'); + $za_simple = 1; + $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde'); } $activities_str = "'".implode("','", $activities)."'"; @@ -122,6 +122,7 @@ $( document ).ready(function() for(i in addon) { addon[i].init("cis/private/tools/zeitaufzeichnung.php", {uid:\''.$user.'\'}); + //addon[i].init("cis/private/tools/zeitaufzeichnung.php", {uid:\'foo\'}); } } }); @@ -365,13 +366,96 @@ if($kartennummer != '') $kunde_uid = $betriebsmittel->uid; } //Speichern der Daten -if(isset($_POST['save']) || isset($_POST['edit'])) +if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { $zeit = new zeitaufzeichnung(); - if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum) + if ($_FILES['csv']['error'] == 0 && isset($_POST['import'])) + { + $name = $_FILES['csv']['name']; + $tmpName = $_FILES['csv']['tmp_name']; + $mimeType = mime_content_type($_FILES['csv']['tmp_name']); + //echo($mimeType); + if($mimeType=='text/plain') + { + if(($handle = fopen($tmpName, 'r')) !== FALSE) + { + if (mb_detect_encoding(fgets($handle), 'UTF-8', true)) + { + set_time_limit(0); + $anzahl = 0; + $importtage_array = array(); + $ende_vorher = date('Y-m-d H:i:s'); + while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) + { + if($data[0] == $user) + { + 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].')
'; + else + { + $zeit->new = true; + $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'); + $zeit->beschreibung = $data[4]; + $tag = $datum->formatDatum($data[2], $format='Y-m-d'); + + + if(!in_array($tag, $importtage_array)) + { + $importtage_array[] = $tag; + $zeit->deleteEntriesForUser($user, $tag); + $tag_aktuell = $tag; + } + else + { + if ($ende_vorher < $zeit->start) + { + $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; + $zeit->beschreibung = ''; + if(!$pause->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.''; + } + } + } + + if(!$zeit->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')'; + } + else + $anzahl++; + $ende_vorher = $zeit->ende; + } + } + } + if($anzahl>0) + echo ''.$p->t("global/datenWurdenGespeichert").' ('.$anzahl.')'; + } + else + echo 'Datei konnte nicht importiert werden. Encoding ist nicht UTF-8!'; + } + } + } + else if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; - else + else if (isset($_POST['save']) || isset($_POST['edit'])) { if(isset($_POST['edit'])) @@ -502,7 +586,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) "; //Formular - echo '
'; + echo '
'; echo ' @@ -707,6 +791,8 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo '  '; echo ''; } + echo ''; + echo ''; echo '

CSV-Import
'; echo ' '; @@ -718,6 +804,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) else echo ''; //echo ''; + echo '
'; $za = new zeitaufzeichnung(); @@ -765,6 +852,8 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tagessumme='00:00'; $pausesumme='00:00'; $wochensumme='00:00'; + $extlehrearr=array(); + $elsumme = '00:00'; $datum_obj = new datum(); $tagesbeginn = ''; $tagesende = ''; @@ -808,8 +897,14 @@ if($projekt->getProjekteMitarbeiter($user, true)) { $pausesumme = $pausesumme+1800; } - - $tagessaldo = $tagessaldo-$pausesumme; + foreach($extlehrearr as $el) + { + if ($el["start"] < $tagesende || $el["ende"]<$tagesbeginn) + $elsumme = $datum_obj->sumZeit($elsumme, $el["diff"]); + } + list($h2, $m2) = explode(':', $elsumme); + $elsumme = $h2*3600+$m2*60; + $tagessaldo = $tagessaldo-$pausesumme-$elsumme; $tagessaldo = date('H:i', ($tagessaldo)); echo ''; @@ -837,6 +932,8 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tag=$datumtag; $tagessumme='00:00'; $pausesumme='00:00'; + $elsumme='00:00'; + $extlehrearr = array(); $tagesbeginn = ''; $tagesende = ''; $pflichtpause = false; @@ -914,7 +1011,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $style = ''; if ($row->zeitaufzeichnung_id == $zeitaufzeichnung_id) $style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"'; - if ($row->aktivitaet_kurzbz=='Pause') + if ($row->aktivitaet_kurzbz=='Pause' || $row->aktivitaet_kurzbz=='LehreExtern') $style .= ' style="color: grey;"'; $summe = $row->summe; $service = new service(); @@ -941,11 +1038,13 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo "\n"; echo " \n"; - if ($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) + if (($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern') $tagesbeginn = $row->start; - if ($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) + if (($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern') $tagesende = $row->ende; + if ($row->aktivitaet_kurzbz == 'LehreExtern') + $extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff); } } echo ''; diff --git a/include/functions.inc.php b/include/functions.inc.php old mode 100644 new mode 100755 index 86ebfba73..6ad00c621 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -942,4 +942,26 @@ function generateActivationKey() return md5(encryptData(uniqid(mt_rand(), true),$key)); } + +function check_infrastruktur($uid) +{ + $db = new basis_db(); + + // checken, ob der user eine oezuordnung der infrastruktur hat + $sql_query="SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz = 'oezuordnung' and oe_kurzbz in ('Infrastruktur', 'Systementwicklung', 'ServiceDesk', 'Empfang', 'Haustechnik', 'ITService', 'LVPlanung') and (datum_bis > now() or datum_bis is NULL) and uid=".$db->db_add_param($uid); + //echo $sql_query; + if($db->db_query($sql_query)) + { + $num_rows=$db->db_num_rows(); + // Wenn kein ergebnis return 0 sonst 1 + if ($num_rows>0) + { + return 1; + } + else + return 0; + } + else + return 0; +} ?> diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index 91e7e19cb..ce1be02c2 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -418,6 +418,27 @@ class zeitaufzeichnung extends basis_db $this->errormsg = 'Fehler beim Laden der Daten'; return false; } + } + + /** + * Löscht sämtliche Einträge eines Users für einen Tag + * @param string $user + * @param string $tag Y-m-d + */ + public function deleteEntriesForUser($user, $tag) + { + $where = "uid=".$this->db_add_param($user); + + $qry = "delete from campus.tbl_zeitaufzeichnung where $where and date_trunc('day', start) = '$tag'"; + if($result = $this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } } } ?>