From 3acdc3385bcf01224ea1d3cb2791dc41a8c82c64 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 16 Nov 2022 14:56:56 +0100 Subject: [PATCH] Erweiterung Infomail um projektleitende Mitarbeiter --- .../controllers/jobs/ZeiterfassungInfoJob.php | 59 +++++++++++++++++-- .../project/Projekt_ressource_model.php | 12 ++++ 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/application/controllers/jobs/ZeiterfassungInfoJob.php b/application/controllers/jobs/ZeiterfassungInfoJob.php index 408dcb733..10da81ceb 100644 --- a/application/controllers/jobs/ZeiterfassungInfoJob.php +++ b/application/controllers/jobs/ZeiterfassungInfoJob.php @@ -20,6 +20,7 @@ class ZeiterfassungInfoJob extends JOB_Controller { const URLAUBSFREIGABE_PATH = 'cis/private/profile/urlaubsfreigabe.php'; const MONATSLISTEN_PATH = 'addons/casetime/cis/timesheet_overview.php'; + const PROJEKTLISTE_PATH = 'addons/reports/cis/index.php'; /* * Constructor */ public function __construct() { @@ -33,6 +34,7 @@ class ZeiterfassungInfoJob extends JOB_Controller $this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel'); $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); $this->load->model('person/Person_model', 'PersonModel'); + $this->load->model('project/Projekt_ressource_model', 'ProjektRessourceModel'); // Load libraries $this->load->library('PermissionLib'); @@ -48,6 +50,7 @@ class ZeiterfassungInfoJob extends JOB_Controller * c) Employees, who did not send last months timesheet yet * d) Employees, who have not recorded their working hours last week * e) Employees, who do not have a "Zeitmodel" yet + * f) Emplyoyees, who are projectleaders */ public function sendMail() { @@ -60,12 +63,14 @@ class ZeiterfassungInfoJob extends JOB_Controller $mitarbeiter_to_record_times_lastweek = $this->_getEmployeeLastWeeksTimeList(); $mitarbeiter_without_zeitmodell = $this->_filterMitarbeiter(); + $mitarbeiter_projektleiter = $this->_getProjektleiter(); $cnt_sup_to_approve_vacation = 0; $cnt_sup_to_approve_timesheets = 0; $cnt_ma_to_send_timesheet = 0; $cnt_ma_to_record_times_lastweek = 0; $cnt_ma_without_zeitmodell = 0; + $cnt_ma_projektleitend = 0; $cnt_mails_total = 0; $mailingList = array(); @@ -118,8 +123,18 @@ class ZeiterfassungInfoJob extends JOB_Controller { $ma->EmpZeitMod = false; } + //projektleiter + if(array_key_exists($uid, $mitarbeiter_projektleiter)) + { + $ma->EmpProLei = true; + $cnt_ma_projektleitend++; + } + else + { + $ma->EmpProLei = false; + } - if($ma->SupVac || $ma->SupMonth || $ma->EmpMonth || $ma->EmpWeek || $ma->EmpZeitMod) + if($ma->SupVac || $ma->SupMonth || $ma->EmpMonth || $ma->EmpWeek || $ma->EmpZeitMod || $ma->EmpProLei) { array_push($mailingList, $ma); $cnt_mails_total++; @@ -140,24 +155,34 @@ class ZeiterfassungInfoJob extends JOB_Controller $EmpMonth =''; $EmpWeek =''; $EmpZeitMod =''; + $EmpProLei =''; + + if(array_key_exists($ma->uid, $mitarbeiter_projektleiter)) + { + $projekteMa = implode(', ', $mitarbeiter_projektleiter[$ma->uid]); + } //Generate Email Text $ma->SupVac ? $supVac = 'Du hast noch Urlaube freizugeben. Du findest die Urlaubsfreigabe unter: - Urlaubstool

' : ''; + Urlaubstool

' : ''; $ma->SupMonth ? $SupMonth = 'Du hast noch Monatslisten freizugeben. Du findest die Monatslistenfreigabe unter: - Monatslisten

' : ''; + Monatslisten

' : ''; $ma->EmpMonth ? $EmpMonth = 'Du musst noch die Monatsliste von letztem Monat abschicken.

' : ''; $ma->EmpWeek ? $EmpWeek = 'Du musst noch Zeiten für letzte Woche eintragen.

' : ''; $ma->EmpZeitMod ? $EmpZeitMod = 'Du hast noch kein Zeitmodell hinterlegt.

' : ''; + $ma->EmpProLei ? $EmpProLei = 'Bitte kontrolliere die Aufzeichnungen deiner Projekte ('. $projekteMa. '): + Projektaufzeichnungen

' : ''; + // Prepare mail content $content_data_arr = array( - 'ma_name' => $ma_name, + 'ma_name' => $ma_name, 'SupVac' => $supVac, 'SupMonth' => $SupMonth, 'EmpMonth' => $EmpMonth, 'EmpWeek' => $EmpWeek, - 'EmpZeitMod' => $EmpZeitMod + 'EmpZeitMod' => $EmpZeitMod, + 'EmpProLei' => $EmpProLei ); sendSanchoMail( @@ -192,6 +217,8 @@ class ZeiterfassungInfoJob extends JOB_Controller print_r("\n"); print_r("| Anzahl kein hinterlegtes Zeitmodell: " . $cnt_ma_without_zeitmodell); print_r("\n"); + print_r("| Anzahl projektleitender Mitarbeiter: " . $cnt_ma_projektleitend); + print_r("\n"); print_r("| Anzahl gesendeter Mails Total: " . $cnt_mails_total); print_r("\n"); print_r("|"); @@ -324,7 +351,7 @@ class ZeiterfassungInfoJob extends JOB_Controller foreach ($mitarbeiter as $ma) { $uid = $ma->uid; - if(!in_array($uid,$mitarbeiterLastWeekExists)) + if(!in_array($uid, $mitarbeiterLastWeekExists)) { $uids[$uid] = $uid; } @@ -378,4 +405,24 @@ class ZeiterfassungInfoJob extends JOB_Controller } return $mitarbeiterWithoutZeitmodell; } + + private function _getProjektleiter() + { + + $mitarbeiter = $this->MitarbeiterModel->getEmployeesZeitaufzeichnungspflichtig()->retval; + $projektleiter = $this->ProjektRessourceModel->getProjektleiterActiveProjects()->retval; + + $projektleitendeMitarbeiter = array(); + foreach ($projektleiter as $pl) + { + foreach ($mitarbeiter as $ma) + { + if($pl->mitarbeiter_uid == $ma->mitarbeiter_uid) + { + $projektleitendeMitarbeiter[$pl->mitarbeiter_uid][]= $pl->titel; + } + } + } + return $projektleitendeMitarbeiter; + } } diff --git a/application/models/project/Projekt_ressource_model.php b/application/models/project/Projekt_ressource_model.php index d641556fd..0ca33e0ed 100644 --- a/application/models/project/Projekt_ressource_model.php +++ b/application/models/project/Projekt_ressource_model.php @@ -11,4 +11,16 @@ class Projekt_ressource_model extends DB_Model $this->dbTable = 'fue.tbl_projekt_ressource'; $this->pk = 'projekt_ressource_id'; } + + public function getProjektleiterActiveProjects() + { + $qry = "SELECT DISTINCT r.mitarbeiter_uid, p.projekt_kurzbz, p.titel + FROM fue.tbl_projekt p + JOIN fue.tbl_projekt_ressource pr using (projekt_kurzbz) + JOIN fue.tbl_ressource r on (pr.ressource_id = r.ressource_id) + wHERE((p.beginn<=now() or p.beginn is null) + AND (p.ende >=now() OR p.ende is null)) + AND pr.funktion_kurzbz = 'Leitung'"; + return $this->execQuery($qry); + } }