From 93e25bb5fcc17a5a8987953a50dbe78d730278d5 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 25 Nov 2025 17:35:44 +0100 Subject: [PATCH 1/3] added Reminder for Unterbrecher for Student --- application/config/studierendenantrag.php | 2 +- application/controllers/jobs/AntragJob.php | 71 +++++++++++++++++++++- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/application/config/studierendenantrag.php b/application/config/studierendenantrag.php index 4e25aef28..e0ef5486b 100644 --- a/application/config/studierendenantrag.php +++ b/application/config/studierendenantrag.php @@ -57,7 +57,7 @@ $config['wiederholung_note_nicht_zugelassen'] = 20; * @var string A string formated as PHP DateTime modifier * @see https://www.php.net/manual/de/datetime.modify.php */ -$config['unterbrechung_job_remind_wiedereinstieg_date_modifier'] = '+3 days'; +$config['unterbrechung_job_remind_wiedereinstieg_date_modifier'] = '+166 days'; /** * The Job will sent a request to everyone who faild the 3rd committee exam diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index debcfe391..9441a349b 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -200,13 +200,14 @@ class AntragJob extends JOB_Controller } /** - * Send reminder to Assistant for Wiedereinstieg Unterbrecher + * Send reminder to Assistant and to Student for Wiedereinstieg Unterbrecher * */ public function sendReminderWiedereinstieg() { $now = new DateTime(); $modifier = $this->config->item('unterbrechung_job_remind_wiedereinstieg_date_modifier'); + if (!$modifier) return $this->logError('Konnte Job nicht starten: Config "unterbrechung_job_remind_wiedereinstieg_date_modifiers" nicht gesetzt'); @@ -230,6 +231,7 @@ class AntragJob extends JOB_Controller $antraege = getData($result) ?: []; $count = 0; + $countReminderStudent = 0; foreach ($antraege as $antrag) { $res = $this->StudierendenantragModel->getStgAndSem($antrag->studierendenantrag_id); @@ -257,7 +259,57 @@ class AntragJob extends JOB_Controller $data['UID'] = $student->student_uid; } - // NOTE(chris): Sancho mail + //Data für Email Student + $result = $this->PrestudentModel->load($antrag->prestudent_id); + $dataPrestudent = current(getData($result)); + $person_id = $dataPrestudent->person_id; + + $this->KontaktModel->addSelect('kontakt'); + $this->KontaktModel->addLimit(1); + + $result = $this->KontaktModel->loadWhere([ + 'person_id'=> $person_id, + 'zustellung' => true, + 'kontakttyp' => 'email' + ]); + if (hasData($result)) { + $dataKontakt = current(getData($result)); + $email_student_privat = $dataKontakt->kontakt; + } + + $email_student_FH = $this->StudentModel->getEmailFH($this->StudentModel->getUID($antrag->prestudent_id)); + + //studiensemester + $result = $this->StudiensemesterModel->getByDate($datum->format('d.m.Y')); + if (hasData($result)) { + $dataSem = current(getData($result)); + } + + $studiensemester = $dataSem->studiensemester_kurzbz; + $studsemShort = substr($studiensemester, 0, 2); + + if($studsemShort == "SS") + { + $data['studSemShort_Eng'] = "summer semester"; + $data['meldenBis'] = "15.1."; + $data['meldenBis_Eng'] = "January 15"; + } + elseif ($studsemShort == "WS") { + $data['studSemShort_Eng'] = "winter semester"; + $data['meldenBis'] = "1.8."; + $data['meldenBis_Eng'] = "August 1"; + } + else + { + $studsemShort = "SS/WS"; + $data['studSemShort_Eng'] = "summer/winter semester"; + $data['meldenBis'] = "15.1. (bei Einstieg ins SS) / 1.8. (bei Einstieg ins WS)"; + $data['meldenBis_Eng'] = "January 15 (for sommer semester enrollment) / August 1 (for winter semester enrollment)"; + } + + $data['studSemShort'] = $studsemShort; + + // NOTE(chris): Sancho mail Assistant if(sendSanchoMail('Sancho_Mail_Antrag_U_Reminder', $data, $antrag->email, 'Reminder: Unterbrechung Wiedereinstieg')) { $count++; @@ -267,8 +319,21 @@ class AntragJob extends JOB_Controller 'insertvon' => 'AntragJob' ]); } + + //Mail to Student + if(sendSanchoMail( + 'Sancho_Mail_Antrag_U_Remind_Stud', + $data, + $email_student_FH, + 'Reminder: Unterbrechung Wiedereinstieg', + '', + '', + '', + $email_student_privat)) { + $countReminderStudent++; + } } - $this->logInfo($count . ' Reminder gesendet - Ende Job sendReminderWiedereinstieg'); + $this->logInfo($count . ' Reminder an Assistenz und ' . $countReminderStudent . ' Reminder an Student gesendet - Ende Job sendReminderWiedereinstieg'); } /** From 4f5e49a93c99cea92dd3b3bb7449d49e732a8091 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 16 Dec 2025 15:27:31 +0100 Subject: [PATCH 2/3] send to all private email addresses marked as zustellung --- application/config/studierendenantrag.php | 2 +- application/controllers/jobs/AntragJob.php | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/application/config/studierendenantrag.php b/application/config/studierendenantrag.php index e0ef5486b..4e25aef28 100644 --- a/application/config/studierendenantrag.php +++ b/application/config/studierendenantrag.php @@ -57,7 +57,7 @@ $config['wiederholung_note_nicht_zugelassen'] = 20; * @var string A string formated as PHP DateTime modifier * @see https://www.php.net/manual/de/datetime.modify.php */ -$config['unterbrechung_job_remind_wiedereinstieg_date_modifier'] = '+166 days'; +$config['unterbrechung_job_remind_wiedereinstieg_date_modifier'] = '+3 days'; /** * The Job will sent a request to everyone who faild the 3rd committee exam diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 9441a349b..430b07cb6 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -265,22 +265,26 @@ class AntragJob extends JOB_Controller $person_id = $dataPrestudent->person_id; $this->KontaktModel->addSelect('kontakt'); - $this->KontaktModel->addLimit(1); $result = $this->KontaktModel->loadWhere([ 'person_id'=> $person_id, 'zustellung' => true, 'kontakttyp' => 'email' ]); - if (hasData($result)) { - $dataKontakt = current(getData($result)); - $email_student_privat = $dataKontakt->kontakt; + + $email_student_privat = null; + $dataKontakt = getData($result); + if ($dataKontakt) { + $stud_private_zustell_emails = array_map(function($kontakt) { + return $kontakt->kontakt; + }, $dataKontakt); + $email_student_privat = implode(', ', $stud_private_zustell_emails); } $email_student_FH = $this->StudentModel->getEmailFH($this->StudentModel->getUID($antrag->prestudent_id)); //studiensemester - $result = $this->StudiensemesterModel->getByDate($datum->format('d.m.Y')); + $result = $this->StudiensemesterModel->getByDate($datum->format('Y-m-d')); if (hasData($result)) { $dataSem = current(getData($result)); } From ddfcef9ad724e7a2929ae5610d247d5b50f1d2dd Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 16 Dec 2025 15:52:44 +0100 Subject: [PATCH 3/3] log Error if mail can not be sent, only change status if both reminder emails were successfully sent --- application/controllers/jobs/AntragJob.php | 33 ++++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 430b07cb6..8dc4870ea 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -314,18 +314,17 @@ class AntragJob extends JOB_Controller $data['studSemShort'] = $studsemShort; // NOTE(chris): Sancho mail Assistant - if(sendSanchoMail('Sancho_Mail_Antrag_U_Reminder', $data, $antrag->email, 'Reminder: Unterbrechung Wiedereinstieg')) + $sancho_assistant_sent = sendSanchoMail('Sancho_Mail_Antrag_U_Reminder', $data, $antrag->email, 'Reminder: Unterbrechung Wiedereinstieg'); + if($sancho_assistant_sent) { $count++; - $this->StudierendenantragstatusModel->insert([ - 'studierendenantrag_id' => $antrag->studierendenantrag_id, - 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_REMINDERSENT, - 'insertvon' => 'AntragJob' - ]); } - + else + { + $this->logError('Error: failed to send Assistant Reminder studierendenantrag_id: ' . $antrag->studierendenantrag_id); + } //Mail to Student - if(sendSanchoMail( + $sancho_student_sent = sendSanchoMail( 'Sancho_Mail_Antrag_U_Remind_Stud', $data, $email_student_FH, @@ -333,9 +332,25 @@ class AntragJob extends JOB_Controller '', '', '', - $email_student_privat)) { + $email_student_privat); + + if($sancho_student_sent) + { $countReminderStudent++; } + else + { + $this->logError('Error: failed to send Student Reminder studierendenantrag_id: ' . $antrag->studierendenantrag_id); + } + + if($sancho_assistant_sent && $sancho_student_sent) + { + $this->StudierendenantragstatusModel->insert([ + 'studierendenantrag_id' => $antrag->studierendenantrag_id, + 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_REMINDERSENT, + 'insertvon' => 'AntragJob' + ]); + } } $this->logInfo($count . ' Reminder an Assistenz und ' . $countReminderStudent . ' Reminder an Student gesendet - Ende Job sendReminderWiedereinstieg'); }