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',