From 268bf474df4f0663ddbad61bf9b88b10af975477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 8 Apr 2022 16:29:47 +0200 Subject: [PATCH] =?UTF-8?q?Infomail=20bei=20Zeitwunsch=C3=A4nderungen=20-?= =?UTF-8?q?=20Inaktive=20Abteilungsleitungen=20werden=20nicht=20informiert?= =?UTF-8?q?,=20Ermittlung=20der=20ge=C3=A4nderten=20Zeitw=C3=BCnsche=20ang?= =?UTF-8?q?epasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/jobs/LVPlanJob.php | 228 ++++++++---------- .../models/ressource/Stundenplandev_model.php | 16 +- 2 files changed, 103 insertions(+), 141 deletions(-) diff --git a/application/controllers/jobs/LVPlanJob.php b/application/controllers/jobs/LVPlanJob.php index 19359573a..2acbe5512 100644 --- a/application/controllers/jobs/LVPlanJob.php +++ b/application/controllers/jobs/LVPlanJob.php @@ -177,11 +177,23 @@ class LVPlanJob extends JOB_Controller // Get all lectors, who updated their Zeitwunsch today $db = new DB_Model(); $result = $db->execReadOnlyQuery(' - SELECT mitarbeiter_uid, von, bis - FROM campus.tbl_zeitwunsch_gueltigkeit - WHERE updateamum::date = NOW()::date - -- dont get updated, if they were also inserted today - AND insertamum::date != NOW()::date + SELECT + zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz + FROM + campus.tbl_zeitwunsch_gueltigkeit zwg + JOIN lehre.tbl_stundenplandev stpl + ON( + stpl.mitarbeiter_uid=zwg.mitarbeiter_uid + AND stpl.datum BETWEEN zwg.von AND COALESCE(zwg.bis, \'2999-12-31\') + AND (zwg.insertamum::date = (NOW()-\'1 days\'::interval)::date + OR + zwg.updateamum::date = (NOW()-\'1 days\'::interval)::date) + AND stpl.datum > now() + ) + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + GROUP BY + zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz '); if (!hasData($result)) @@ -191,99 +203,39 @@ class LVPlanJob extends JOB_Controller $uidByStg_arr = array(); // Mail data for Studiengang $uidByOe_arr = array(); // Mail data for Kompetenzfeld + $uid_arr = array(); // Mail data for Kompetenzfeld // Loop through lectors, who updated their Zeitwunsch today - $zwg_arr = getData($result); - foreach ($zwg_arr as $zwg) + $changed_arr = getData($result); + foreach ($changed_arr as $row) { - $next = $this->StudiensemesterModel->getNext(); - // Get Studiensemester concerend by Zeitwunschgueltigkeit - // If Zeitwunschgueltigkeit Ende is null, get only till next Studiensemester, as LVs will be only - // assigned for actual or next Studiensemester - $result = $this->StudiensemesterModel->getByDate( - $zwg->von, - is_null($zwg->bis) ? $next->retval[0]->ende : $zwg->bis - ); - $studiensemester_arr = getData($result); + // Add unique lector array + if (!in_array($row->mitarbeiter_uid, $uid_arr)) + { + $uid_arr[]= $row->mitarbeiter_uid; + } - // Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit - $result = $this->StundenplandevModel - ->getStundenplanData( - null, - implode(array_column($studiensemester_arr, 'studiensemester_kurzbz'), ', '), - null, - $zwg->mitarbeiter_uid, - null, - true //...but only from now on - ); - - if (!hasData($result)) + // Build unique Studiengang array + if (!array_key_exists($row->studiengang_kz, $uidByStg_arr)) { - continue; // Continue if lector has no Stundenplan entries + $uidByStg_arr[$row->studiengang_kz] = array($row->mitarbeiter_uid); + + } + elseif (!in_array($row->mitarbeiter_uid, $uidByStg_arr[$row->studiengang_kz])) + { + $uidByStg_arr[$row->studiengang_kz][]= $row->mitarbeiter_uid; } - // Loop through Stundenplan entries - $stundenplanData_arr = getData($result); - foreach ($stundenplanData_arr as $stundenplanData) + // Build unique Kompetenzfeld array + if (!array_key_exists($row->oe_kurzbz, $uidByOe_arr)) { - // Get LE of Stundenplan entry - $result = $this->LehreinheitModel->load($stundenplanData->lehreinheit_id); + $uidByOe_arr[$row->oe_kurzbz] = array($row->mitarbeiter_uid); - if (!hasData($result)) - { - // Return log error msg if no LE found and continue - $this->logError(' - LVPlanJob / mailUpdatedZeitwuensche did not find Lehreinheit for '. $zwg->mitarbeiter_uid - ); - continue; - } - - $le = getData($result)[0]; - - // GET LV by LE of Stundenplan entry - $result = $this->LehrveranstaltungModel->load($le->lehrveranstaltung_id); - - if (!hasData($result)) - { - // Return log error msg if no LV found and continue - $this->logError(' - LVPlanJob / mailUpdatedZeitwuensche did not find Lehrveranstaltung for '. $zwg->mitarbeiter_uid - ); - continue; - } - - $lv = getData($result)[0]; - - // Build unique Studiengang array - if (!array_key_exists($lv->studiengang_kz, $uidByStg_arr)) - { - $uidByStg_arr[$lv->studiengang_kz] = array($zwg->mitarbeiter_uid); - - } - else - { - // Add unique lector array to Studiengang array - if (!in_array($zwg->mitarbeiter_uid, $uidByStg_arr[$lv->studiengang_kz])) - { - $uidByStg_arr[$lv->studiengang_kz][]= $zwg->mitarbeiter_uid; - } - } - - // Build unique Kompetenzfeld array - if (!array_key_exists($lv->oe_kurzbz, $uidByOe_arr)) - { - $uidByOe_arr[$lv->oe_kurzbz] = array($zwg->mitarbeiter_uid); - - } - else - { - // Add unique lector array to Kompetenzfeld array - if (!in_array($zwg->mitarbeiter_uid, $uidByOe_arr[$lv->oe_kurzbz])) - { - $uidByOe_arr[$lv->oe_kurzbz][]= $zwg->mitarbeiter_uid; - } - } + } + elseif (!in_array($row->mitarbeiter_uid, $uidByOe_arr[$row->oe_kurzbz])) + { + $uidByOe_arr[$row->oe_kurzbz][]= $row->mitarbeiter_uid; } } @@ -302,7 +254,7 @@ class LVPlanJob extends JOB_Controller } // Send mail to LV Planung - $result = $this->_sendMailToLvPlanung($zwg_arr); + $result = $this->_sendMailToLvPlanung($uid_arr); if (isError($result)) { $this->logError(getError($result)); @@ -330,7 +282,7 @@ class LVPlanJob extends JOB_Controller $lektorenTabelle = ' - + @@ -366,7 +318,7 @@ class LVPlanJob extends JOB_Controller $errorReceiverUid_arr[]= $stgMail; } } - + if (isset($errorReceiverUid_arr)) { return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ',')); @@ -388,50 +340,60 @@ class LVPlanJob extends JOB_Controller { // Get KF Leitung eMail $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); - $result = $this->BenutzerfunktionModel->loadWhere(array( - 'funktion_kurzbz' => 'Leitung', - 'oe_kurzbz' => $oe_kurzbz - )); - $kfMail = $result->retval[0]->uid. '@'. DOMAIN; + $result = $this->BenutzerfunktionModel->getBenutzerFunktionen( + 'Leitung', + $oe_kurzbz, + $activeoeonly = true, + $activebenonly = true + ); - $lektorenTabelle = ' -
NameName UID
- - - - - - '; + if(isSuccess($result) && hasData($result)) + { + $empfaenger = array(); - foreach($uid_arr as $uid) - { - $person = $this->PersonModel->getByUid($uid); - $lektorenTabelle.= ' - - - - - '; - } + foreach(getData($result) as $row) + $empfaenger[] = $row->uid. '@'. DOMAIN; + $kfMail = implode(',',$empfaenger); - $lektorenTabelle.= '
NameUID
'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $uid. ']
'; + $lektorenTabelle = ' + + + + + + + '; - $contentData_arr = array( - 'datentabelle' => $lektorenTabelle - ); + foreach($uid_arr as $uid) + { + $person = $this->PersonModel->getByUid($uid); + $lektorenTabelle.= ' + + + + + '; + } - // Send mail - if (!sendSanchoMail( - 'ZeitwunschUpdateMail', - $contentData_arr, - $kfMail, - 'Änderung von Zeitwünschen', - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg' - )) - { - $errorReceiverUid_arr[]= $kfMail; - } + $lektorenTabelle.= '
NameUID
'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $uid. ']
'; + + $contentData_arr = array( + 'datentabelle' => $lektorenTabelle + ); + + // Send mail + if (!sendSanchoMail( + 'ZeitwunschUpdateMail', + $contentData_arr, + $kfMail, + 'Änderung von Zeitwünschen', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + )) + { + $errorReceiverUid_arr[]= $kfMail; + } + } } if (isset($errorReceiverUid_arr)) @@ -453,7 +415,7 @@ class LVPlanJob extends JOB_Controller $lektorenTabelle = ' - + @@ -461,11 +423,11 @@ class LVPlanJob extends JOB_Controller foreach($data_arr as $lector) { - $person = $this->PersonModel->getByUid($lector->mitarbeiter_uid); + $person = $this->PersonModel->getByUid($lector); $lektorenTabelle.= ' - + '; } diff --git a/application/models/ressource/Stundenplandev_model.php b/application/models/ressource/Stundenplandev_model.php index 4a9c9c5ed..a498e209b 100644 --- a/application/models/ressource/Stundenplandev_model.php +++ b/application/models/ressource/Stundenplandev_model.php @@ -94,11 +94,11 @@ class Stundenplandev_model extends DB_Model if ($lehrveranstaltung_id != '') { - $qry.=" + $qry.=" lehreinheit_id IN ( SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = ? - AND studiensemester_kurzbz = ? + AND studiensemester_kurzbz = ? )"; $params[]= $lehrveranstaltung_id; @@ -113,13 +113,13 @@ class Stundenplandev_model extends DB_Model } elseif ($mitarbeiter_uid != '') { - $qry.= " - mitarbeiter_uid = ? + $qry.= " + mitarbeiter_uid = ? AND lehreinheit_id IN ( SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) - WHERE mitarbeiter_uid = ? + WHERE mitarbeiter_uid = ? AND studiensemester_kurzbz IN ( ? ) )"; $params[] = $mitarbeiter_uid; @@ -128,11 +128,11 @@ class Stundenplandev_model extends DB_Model } elseif ($student_uid != '') { - $qry.=" + $qry.=" lehreinheit_id IN ( SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung - WHERE uid = ? + WHERE uid = ? AND studiensemester_kurzbz = ? )"; @@ -144,7 +144,7 @@ class Stundenplandev_model extends DB_Model if($nurBevorstehende) { - $qry.= " AND datum >= NOW()::date "; + $qry.= " AND stpl.datum >= NOW()::date "; } $qry.= "
NameName UID
'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '['. $lector->mitarbeiter_uid. ']['. $lector. ']