From e4ec1f2a4180ddb6d5153de1a4b57bd64fb096b1 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 17 Oct 2023 13:39:23 +0200 Subject: [PATCH] update Abfrage und Mail --- .../controllers/jobs/ProjektarbeitJob.php | 133 +++++++++++------- .../models/education/Projektarbeit_model.php | 20 +-- 2 files changed, 95 insertions(+), 58 deletions(-) diff --git a/application/controllers/jobs/ProjektarbeitJob.php b/application/controllers/jobs/ProjektarbeitJob.php index 21542d9f9..7e250d0d8 100644 --- a/application/controllers/jobs/ProjektarbeitJob.php +++ b/application/controllers/jobs/ProjektarbeitJob.php @@ -47,10 +47,10 @@ class ProjektarbeitJob extends JOB_Controller $startDate = new DateTime($startDate); $mailArray = array(); + $arrayStg = array(); $countMissedAbgaben = 0; $countTotal = 0; $countMails = 0; - $nl = "\n"; $this->logInfo('Start Job Projektarbeit'); @@ -61,6 +61,8 @@ class ProjektarbeitJob extends JOB_Controller if (!hasData($result)) return $this->logInfo('End Job Projektarbeit Update: 0 Mails sent'); + + $projektarbeiten = getData($result); // (1) note auf 7 setzen @@ -98,11 +100,11 @@ class ProjektarbeitJob extends JOB_Controller 'lehreinheit_id' => $projektarbeit->lehreinheit_id, 'student_uid' => $projektarbeit->student_uid, 'firma_id' => $projektarbeit->firma_id, - 'punkte' => null, //TODO(manu) oder $projektarbeit->punkte + 'punkte' => null, 'beginn' => null, 'ende' => null, 'faktor' => $projektarbeit->faktor, - 'freigegeben' => $projektarbeit->freigegeben, //TODO(manu) besser FALSE? + 'freigegeben' => $projektarbeit->freigegeben, 'gesperrtbis' => $projektarbeit->gesperrtbis, 'stundensatz' => $projektarbeit->stundensatz, 'themenbereich' => $projektarbeit->themenbereich, @@ -112,10 +114,10 @@ class ProjektarbeitJob extends JOB_Controller 'insertamum' => $now->format('c'), 'insertvon' => 'Projektjob', 'ext_id' => $projektarbeit->ext_id, - 'gesamtstunden' => null, //TODO(manu) oder $projektarbeit->gesamtstunden? + 'gesamtstunden' => null, 'titel_english' => $projektarbeit->titel_english, 'sprache' => $projektarbeit->sprache, - 'abgabedatum' => null, //TODO(manu) oder $projektarbeit->abgabedatum + 'abgabedatum' => null, 'kontrollschlagwoerter' => $projektarbeit->kontrollschlagwoerter, 'schlagwoerter' => $projektarbeit->schlagwoerter, 'schlagwoerter_en' => $projektarbeit->schlagwoerter_en, @@ -145,24 +147,50 @@ class ProjektarbeitJob extends JOB_Controller $projektarbeit_copy = current(getData($result)); $projekt_id_copy = $projektarbeit_copy->projektarbeit_id; - //Start Mailarray - if (!isset($mailArray[$projekt->studiengang_kz])) + //Array Studiengänge + if (!isset($arrayStg[$projekt->studiengang_kz])) { - $mailArray[$projekt->studiengang_kz] = $countMissedAbgaben; + $result = $this->StudiengangModel->loadWhere([ + 'studiengang_kz' => $projekt->studiengang_kz + ]); + if (isError($result)) + $this->logError(getError($result)); + elseif (!hasData($result)) + { + $this->logInfo('Kein Studiengang für' . $projekt->studiengang_kz . 'gefunden'); + } + else + { + $studiengang = current(getData($result)); + $email = $studiengang->email; + + $arrayStg[$projekt->studiengang_kz] = array( + 'countMissedAbgaben' => $countMissedAbgaben, + 'email' => $email + ); + } } - $mailArray[$projekt->studiengang_kz] = $mailArray[$projekt->studiengang_kz] + 1; + $arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] = ($arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] + 1); + + //Mailarray + $mailArray[] = array( + 'studiengang_kz' => $projekt->studiengang_kz, + 'projekt_id_alt' => $projekt->projektarbeit_id, + 'projekt_id_neu' => $projekt_id_copy, + 'student_uid' => $projekt->student_uid, + 'vorname' => $projekt->vorname, + 'nachname' => $projekt->nachname, + 'titel' => $projekt->titel); } // (3)Betreuungen kopieren $result = $this->ProjektbetreuerModel->loadWhere([ 'projektarbeit_id' => $projekt->projektarbeit_id ]); - if (isError($result)) - { + if (isError($result)) { $this->logError(getError($result)); continue; } - elseif (!hasData($result)) { $this->logInfo('Keine Betreuung für' . $projekt->projektarbeit_id . 'gefunden'); @@ -172,16 +200,14 @@ class ProjektarbeitJob extends JOB_Controller $betreuung = getData($result); //error handler, catching also warnings - set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context) - { - throw new ErrorException( $err_msg, 0, $err_severity, $err_file, $err_line ); + set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context) { + throw new ErrorException($err_msg, 0, $err_severity, $err_file, $err_line); }, E_WARNING); - foreach ($betreuung as $bet) - { + foreach ($betreuung as $bet) { $now = new Datetime(); - try{ - $result = $this->ProjektbetreuerModel->insert([ + try { + $this->ProjektbetreuerModel->insert([ 'person_id' => $bet->person_id, 'projektarbeit_id' => $projekt_id_copy, 'note' => null, @@ -200,8 +226,7 @@ class ProjektarbeitJob extends JOB_Controller 'zugangstoken' => null, 'zugangstoken_gueltigbis' => null ]); - } - catch (ErrorException $e){ + } catch (ErrorException $e) { $this->logError("Error Insert Betreuungen, check projekt_id: " . $projekt_id_copy); continue; } @@ -209,40 +234,50 @@ class ProjektarbeitJob extends JOB_Controller restore_error_handler(); } } + array_multisort($mailArray); - //(4)Sancho Mail - foreach ($mailArray as $stg_kz => $anzahlMissedAbgaben) + //(4) Sancho Mail + foreach ($arrayStg as $stg_kz => $item) { - $result = $this->StudiengangModel->loadWhere([ - 'studiengang_kz' => $stg_kz - ]); - if (isError($result)) - $this->logError(getError($result)); - elseif (!hasData($result)) + $maildata = " + + + + + + + "; + $email = $item['email']; + $anzahlMissedAbgaben = $item['countMissedAbgaben']; + + foreach ($mailArray as $m) { - $this->logInfo('Kein Studiengang für' . $stg_kz . 'gefunden'); - } - else - { - $studiengang = current(getData($result)); - $email = $studiengang->email; - $betreff = 'Versäumte Abgabe(n) Projektarbeiten / Project Work(s) not uploaded in time'; - - //TODO(manu) link basisurl? - $data = [ - 'anzahlMissedAbgaben' => $anzahlMissedAbgaben, - 'link' => 'https://vilesci.technikum-wien.at/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz - ]; - - $countTotal = $countTotal + $anzahlMissedAbgaben; - - //send mail - if (sendSanchoMail('Sancho_Mail_Stgl_MissedAbgaben', $data, $email, $betreff)) { - //echo $nl . "Mail an Studiengang " . $stg_kz . " , Anzahl missed PAs: " . $anzahlMissedAbgaben . " email: " . $studiengang->email . $nl; - $countMails++; + if ($stg_kz == $m['studiengang_kz']) + { + $maildata .= "" . + "". + "". + ""; } } + $maildata .= "
UID NameProjektarbeit
". $m['student_uid'] . "". trim($m['vorname'] . " " . $m['nachname']) ."". $m['titel'] . "
"; + + $betreff = 'Versäumte Abgabe(n) Projektarbeiten / Project Work(s) not uploaded in time'; + $data = [ + 'anzahlMissedAbgaben' => $anzahlMissedAbgaben, + 'link' => APP_ROOT. '/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz, + 'table' => $maildata + ]; + + $countTotal = $countTotal + $anzahlMissedAbgaben; + + //send mail + if (sendSanchoMail('Sancho_Mail_Stgl_MissedAbgaben', $data, $email, $betreff)) + { + $countMails++; + } } + $this->logInfo($countTotal . ' projektarbeiten not uploaded in time, ' . $countMails . ' sent mails.'); $this->logInfo('End Job Projektarbeit'); } diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index b9a10ab55..984a01b65 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -74,7 +74,7 @@ class Projektarbeit_model extends DB_Model /** * Gets all Projektarbeiten not uploaded in Time - * @param String $startDate project works before this date will be ignored (in Dateformat: 'YYYY'-'mm'-'dd') + * @param String $startDate project works before this date will be ignored (in Dateformat: 'Y'-'m'-'d') * @return object */ public function getAllProjektarbeitenNotUploadedInTime($startDate = null) @@ -83,13 +83,15 @@ class Projektarbeit_model extends DB_Model $now = new DateTime(); $this->db->distinct(); - $this->addSelect($this->dbTable.'.projektarbeit_id'); - $this->addSelect($this->dbTable.'.titel'); - $this->addSelect($this->dbTable.'.student_uid'); - $this->addSelect($this->dbTable.'.note'); - $this->addSelect('p' . '.person_id'); - $this->addSelect('le' . '.lehreinheit_id'); - $this->addSelect('sg' . '.studiengang_kz'); + $this->addSelect($this->dbTable. '.projektarbeit_id'); + $this->addSelect($this->dbTable. '.titel'); + $this->addSelect($this->dbTable. '.student_uid'); + $this->addSelect($this->dbTable. '.note'); + $this->addSelect('p'. '.person_id'); + $this->addSelect('p'. '.nachname'); + $this->addSelect('p'. '.vorname'); + $this->addSelect('le'. '.lehreinheit_id'); + $this->addSelect('sg'. '.studiengang_kz'); $this->addJoin('campus.tbl_paabgabe pa', 'projektarbeit_id'); $this->addJoin('lehre.tbl_projektbetreuer pb', 'projektarbeit_id'); @@ -104,7 +106,7 @@ class Projektarbeit_model extends DB_Model if($startDate) $this->db->where('pa.datum >', $startDate); - $this->db->where($this->dbTable. '.note', null); //TODO(MANU) check if note null: ausreichend? + $this->db->where($this->dbTable. '.note', null); return $this->loadWhere([ 'pa.fixtermin' => 'true',