diff --git a/application/controllers/components/Antrag/Leitung.php b/application/controllers/components/Antrag/Leitung.php index 9df8fdb75..c107fbb63 100644 --- a/application/controllers/components/Antrag/Leitung.php +++ b/application/controllers/components/Antrag/Leitung.php @@ -145,7 +145,7 @@ class Leitung extends FHC_Controller $studierendenantrag_id = $this->input->post('studierendenantrag_id'); - $result = $this->antraglib->approveAbmeldung([$studierendenantrag_id], getAuthUID()); + $result = $this->antraglib->denyObjectionAbmeldung($studierendenantrag_id, getAuthUID()); if (isError($result)) return $this->outputJsonError(['studierendenantrag_id' => getError($result)]); diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 39c2519af..ca4f06690 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -200,7 +200,6 @@ class AntragJob extends JOB_Controller foreach ($antraege as $antrag) { - $result = $this->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $antrag->insertamum); if (isError($result)) $this->logError(getError($result)); diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index d02ce9012..c725c6ea9 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -145,7 +145,7 @@ class AntragLib 'studierendenantrag_id' => $studierendenantrag_id, 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, 'insertvon' => $insertvon, - 'insertam' => $insertam + 'insertamum' => $insertam ]); if (isError($result)) $errors[] = getError($result); @@ -244,6 +244,81 @@ class AntragLib return success(); } + /** + * @param integer $studierendenantrag_id + * @param string $insertvon + * + * @return stdClass + */ + public function denyObjectionAbmeldung($studierendenantrag_id, $insertvon) + { + $result = $this->_ci->StudierendenantragModel->load($studierendenantrag_id); + if (isError($result)) + { + return $result; + } + if(!hasData($result)) + { + return error($this->_ci->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $studierendenantrag_id])); + } + $antrag = getData($result)[0]; + + $result = $this->_ci->StudierendenantragstatusModel->loadWhere([ + 'studierendenantrag_id' => $studierendenantrag_id, + 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED + ]); + if (isError($result)) + return $result; + if (!hasData($result)) + return error($this->_ci->p->t('studierendenantrag', 'error_not_approved')); + + $status = current(getData($result)); + + $result = $this->_ci->StudierendenantragstatusModel->insert([ + 'studierendenantrag_id' => $studierendenantrag_id, + 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_OBJECTION_DENIED, + 'insertvon' => $insertvon + ]); + if (isError($result)) + return $result; + else { + $result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $status->insertamum); + + if (isError($result)) + return $result; + + $res = $this->_ci->PrestudentModel->load($antrag->prestudent_id); + + if (hasData($res)) { + $prestudent = current(getData($res)); + $res = $this->_ci->PersonModel->load($prestudent->person_id); + if (hasData($res)) { + $person = current(getData($res)); + $name = trim($person->vorname . ' ' . $person->nachname); + } else { + $name = $this->_ci->p->t('person', 'studentIn'); + } + $res = $this->_ci->KontaktModel->getZustellKontakt($prestudent->person_id, ['email']); + if (hasData($res)) { + $kontakt = current(getData($res)); + $email = $kontakt->kontakt; + sendSanchoMail( + // TODO(chris): Vorlage erstellen + 'Sancho_Mail_Antrag_A_ObjectionDenied', + [ + 'name' => $name, + 'grund' => $antrag->grund + ], + $email, + $this->_ci->p->t('studierendenantrag', 'mail_subject_A_ObjectionDenied') + ); + } + } + } + + return success(); + } + /** * NOTE(chris): permissions & verification must be handled outside * diff --git a/application/models/education/Studierendenantragstatus_model.php b/application/models/education/Studierendenantragstatus_model.php index 8f737f458..5355ecdba 100644 --- a/application/models/education/Studierendenantragstatus_model.php +++ b/application/models/education/Studierendenantragstatus_model.php @@ -13,6 +13,7 @@ class Studierendenantragstatus_model extends DB_Model const STATUS_REQUESTSENT_1 = 'ErsteAufforderungVersandt'; const STATUS_REQUESTSENT_2 = 'ZweiteAufforderungVersandt'; const STATUS_OBJECTED = 'Beeinsprucht'; + const STATUS_OBJECTION_DENIED = 'EinspruchAbgelehnt'; /** * Constructor diff --git a/system/dbupdate_3.4/27351_digitalisierung_formulare.php b/system/dbupdate_3.4/27351_digitalisierung_formulare.php index 5041b86f5..341b34b67 100644 --- a/system/dbupdate_3.4/27351_digitalisierung_formulare.php +++ b/system/dbupdate_3.4/27351_digitalisierung_formulare.php @@ -28,15 +28,16 @@ if($result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statust VALUES ('Erstellt', '{\"Erstellt\",\"Created\"}'), ('Genehmigt', '{\"Genehmigt\",\"Approved\"}'), - ('Beeinsprucht', '{\"Beeinsprucht\",\"Objected\"}'), ('Abgelehnt', '{\"Abgelehnt\",\"Rejected\"}'), ('Verzichtet', '{\"Verzichtet\",\"Pass\"}'), ('Offen', '{\"Offen\",\"Reopened\"}'), ('Zurückgezogen', '{\"Zurückgezogen\",\"Cancelled\"}'), + ('Lvszugewiesen', '{\"Lvszugewiesen\",\"Lvsassigned\"}'), ('EmailVersandt', '{\"Email Versandt\",\"Reminder Sent\"}'), ('ErsteAufforderungVersandt', '{\"1.Aufforderung Versandt\",\"1st Request Sent\"}'), ('ZweiteAufforderungVersandt', '{\"2.Aufforderung Versandt\",\"2nd Request Sent\"}'), - ('Lvszugewiesen', '{\"Lvszugewiesen\",\"Lvsassigned\"}'); + ('Beeinsprucht', '{\"Beeinsprucht\",\"Objected\"}'), + ('EinspruchAbgelehnt', '{\"Einspruch abgelehnt\",\"Objection denied\"}'); "; if (!$db->db_query($qry)) echo 'campus.tbl_studierendenantrag_statustyp (insert): '.$db->db_last_error().'
'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 155ef3217..18a61f1d1 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -20106,6 +20106,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'studierendenantrag', + 'phrase' => 'error_not_approved', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antrag ist nicht bestätigt worden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Application is not approved', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'studierendenantrag', @@ -20426,6 +20446,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'studierendenantrag', + 'phrase' => 'mail_subject_A_ObjectionDenied', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ihr Einspruch wurde Abgelehnt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Your objection was denied', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'studierendenantrag',