From 8923a099cc257544aba56fdc2fb0c16703350f6d Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 20 Jul 2023 15:04:49 +0200 Subject: [PATCH] Sammelmail Stgl & Calltoactions in Student view --- application/controllers/jobs/AntragJob.php | 245 ++++++++++-------- .../views/lehre/Antrag/Student/List.php | 31 +-- system/phrasesupdate.php | 140 ++++++++++ 3 files changed, 289 insertions(+), 127 deletions(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index e0c88ac3a..8130f8a95 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -6,9 +6,9 @@ use \DateTime as DateTime; class AntragJob extends JOB_Controller { - private $allPrestudentsWhereCommitteeExamFailed; + private $allPrestudentsWhereCommitteeExamFailed; - /** + /** * API constructor */ public function __construct() @@ -21,7 +21,7 @@ class AntragJob extends JOB_Controller // Loads SanchoHelper $this->load->helper('hlp_sancho_helper'); - //Load Model + // Load Model $this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel'); $this->load->model('education/Studierendenantragstatus_model', 'StudierendenantragstatusModel'); $this->load->model('education/Pruefung_model', 'PruefungModel'); @@ -34,102 +34,139 @@ class AntragJob extends JOB_Controller */ public function sendStglSammelmail() { - $this->logInfo('Start Job sendStglSammelmail'); + $this->load->model('person/Person_model', 'PersonModel'); - // TODO(chris): get all Abmeldung:Created, Unterbrechung:Created, Wiederholung:LvZugeordnet - $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + $this->logInfo('Start Job sendStglSammelmail'); - $this->StudierendenantragModel->addJoin('public.tbl_prestudent','prestudent_id'); - $this->db->group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->StudierendenantragModel->addJoin('public.tbl_prestudent','prestudent_id'); + $this->db->group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED); - $this->db->group_end(); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $result = $this->StudierendenantragModel->load(); - if(isError($result)) - return $this->logError(getError($result)); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED); + $this->db->group_end(); - if(!hasData($result)) - return $this->logInfo('End Job sendStglSammelmail: 0 Mails sent'); + $result = $this->StudierendenantragModel->load(); + if(isError($result)) + return $this->logError(getError($result)); - $antraege = getData($result); + if(!hasData($result)) + return $this->logInfo('End Job sendStglSammelmail: 0 Mails sent'); - $stgs = array(); - $stgLeitungen = array(); + $antraege = getData($result); - foreach($antraege as $antrag) - { - if(!isset($stgs[$antrag->studiengang_kz])) - { - $result = $this->StudiengangModel->getLeitung($antrag->studiengang_kz); - if(isError($result)) - { - $this->logError(getError($result)); - continue; - } - if(!hasData($result)) - { - $this->logError('Keine Leitung für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); - continue; - } + $stgs = array(); + $stgLeitungen = array(); - $leitung = current(getData($result)); - if(!isset($stgLeitungen[$leitung->uid])) - { - $stgLeitungen[$leitung->uid] = [ 'Details' => $leitung, 'stgs' => [] ]; - } - $stgLeitungen[$leitung->uid] ['stgs'][] = $antrag->studiengang_kz; + foreach ($antraege as $antrag) + { + if (!isset($stgs[$antrag->studiengang_kz])) + { + $result = $this->StudiengangModel->getLeitung($antrag->studiengang_kz); + if (isError($result)) + { + $this->logError(getError($result)); + continue; + } + if (!hasData($result)) + { + $this->logError('Keine Leitung für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); + continue; + } - $result = $this->StudiengangModel->load($antrag->studiengang_kz); - if(isError($result)) - { - $this->logError(getError($result)); - continue; - } - if(!hasData($result)) - { - $this->logError('Keine Details für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); - continue; - } - $details = current(getData($result)); + $leitung = current(getData($result)); + if (!isset($stgLeitungen[$leitung->uid])) + { + $stgLeitungen[$leitung->uid] = [ 'Details' => $leitung, 'stgs' => [] ]; + } + $stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz; - $stgs[$antrag->studiengang_kz] = [ 'Abmeldung' => [], 'Unterbrechung' => [], 'Wiederholung' => [], 'Details' => $details ]; - } - $stgs[$antrag->studiengang_kz] [$antrag->typ] = $antrag; - } + $result = $this->StudiengangModel->load($antrag->studiengang_kz); + if (isError($result)) + { + $this->logError(getError($result)); + continue; + } + if (!hasData($result)) + { + $this->logError('Keine Details für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); + continue; + } + $details = current(getData($result)); -/* var_dump($stgs); - var_dump($stgLeitungen);*/ + $stgs[$antrag->studiengang_kz] = [ + 'Abmeldung' => [], + 'Unterbrechung' => [], + 'Wiederholung' => [], + 'Details' => $details + ]; + } + $stgs[$antrag->studiengang_kz][str_replace('Stgl', '', $antrag->typ)] = $antrag; + } - $count = 0; - foreach($stgLeitungen as $leitung) - { - $data = array(); - if(sendSanchoMail("Sancho_Mail_Antrag_Stgl",$data,$leitung['Details']->email, 'Anträge - Aktion(en) erforderlich')) - $count++; - } + $this->load->model('system/Sprache_model', 'SpracheModel'); + $result = $this->SpracheModel->loadWhere(['content' => true]); + if (isError($result)) { + $this->logError(getError($result)); + $languages = [DEFAULT_LANGUAGE]; + } else if (!hasData($result)) { + $languages = [DEFAULT_LANGUAGE]; + } else { + $languages = array_map(function ($row) { + return $row->sprache; + }, getData($result)); + } - $this->logInfo($count . " Emails erfolgreich versandt"); + $count = 0; + foreach ($stgLeitungen as $leitung) + { + $data = [ + 'name' => trim($leitung['Details']->vorname . ' ' . $leitung['Details']->nachname) + ]; - // TODO(chris): Emailadresse stg - // TODO(chris): data Fertig + foreach ($languages as $lang) { + unset($this->p); + $this->loadPhrases(['studierendenantrag'], $lang); - $this->logInfo('End Job sendStglSammelmail'); + $table = ''; + foreach ($leitung['stgs'] as $studiengang_kz) { + $rows = ''; + $stg = $stgs[$studiengang_kz]; + foreach (['Abmeldung', 'Unterbrechung', 'Wiederholung'] as $typ) { + $c = count($stg[$typ]); + if ($c) { + $rows .= $this->p->t('studierendenantrag', 'mail_part_x_new_' . $typ, ['count' => $c]); + } + } + $table .= $this->p->t('studierendenantrag', 'mail_part_table', ['stg_bezeichnung' => $stg['Details']->bezeichnung, 'stg_orgform_kurzbz' => $stg['Details']->orgform_kurzbz, 'rows' => $rows]); + } + $data['table_' . $lang] = $table; + } + + $data['table'] = $data['table_' . DEFAULT_LANGUAGE]; + + if (sendSanchoMail("Sancho_Mail_Antrag_Stgl", $data, $leitung['Details']->uid . '@' . DOMAIN, 'Anträge - Aktion(en) erforderlich')) + $count++; + } + + $this->logInfo($count . " Emails erfolgreich versandt"); + + $this->logInfo('End Job sendStglSammelmail'); } /** @@ -210,22 +247,22 @@ class AntragJob extends JOB_Controller return; } - $digi_start= $this->config->item('digitalization_start'); - if($digi_start) - $digi_start = new DateTime($digi_start); + $digi_start= $this->config->item('digitalization_start'); + if($digi_start) + $digi_start = new DateTime($digi_start); $dateDeadline = new DateTime(); $dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline)); - $result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed( - [ - null, - Studierendenantragstatus_model::STATUS_REQUESTSENT_1, - Studierendenantragstatus_model::STATUS_REQUESTSENT_2 - ], - $dateDeadline, - $digi_start - ); + $result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed( + [ + null, + Studierendenantragstatus_model::STATUS_REQUESTSENT_1, + Studierendenantragstatus_model::STATUS_REQUESTSENT_2 + ], + $dateDeadline, + $digi_start + ); if(isError($result)) { $this->logError(getError($result)); @@ -238,18 +275,18 @@ class AntragJob extends JOB_Controller $prestudents = $this->prestudentsGetUnique($prestudents); - foreach ($prestudents as $prestudent) - { - $result = $this->prestudentlib->setAbbrecher($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz, $insertvon); - if (isError($result)) - $this->logError(getError($result)); - else - $count++; - } - $this->logInfo($count . " Students set to Abbrecher"); - } + foreach ($prestudents as $prestudent) + { + $result = $this->prestudentlib->setAbbrecher($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz, $insertvon); + if (isError($result)) + $this->logError(getError($result)); + else + $count++; + } + $this->logInfo($count . " Students set to Abbrecher"); + } - $this->logInfo('Ende Job handleWiederholerDeadline'); + $this->logInfo('Ende Job handleWiederholerDeadline'); } /** diff --git a/application/views/lehre/Antrag/Student/List.php b/application/views/lehre/Antrag/Student/List.php index b1ec9e061..52242d7d6 100644 --- a/application/views/lehre/Antrag/Student/List.php +++ b/application/views/lehre/Antrag/Student/List.php @@ -33,29 +33,14 @@ $this->load->view( $array){ ?>

()

- - - - p->t('studierendenantrag', 'btn_new'); ?> - -