From 6f1eed669643690be9c472b5f147aed3654d76b9 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 11 Jul 2023 17:01:22 +0200 Subject: [PATCH] =?UTF-8?q?Abbrecher=202dos:=20=C3=84nderungen=20Wordings,?= =?UTF-8?q?=20neue=20Statusgr=C3=BCnde=20preabbrecher,=20durchStgl,=20durc?= =?UTF-8?q?hStud,=20update=20setAbbrecher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/jobs/AntragJob.php | 11 ++-- application/libraries/AntragLib.php | 54 +++++++++++++------ application/libraries/PrestudentLib.php | 17 ++++-- .../models/crm/Prestudentstatus_model.php | 16 ++++++ .../27351_digitalisierung_formulare.php | 39 ++++++++++++++ 5 files changed, 113 insertions(+), 24 deletions(-) diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index 71068fbe9..39c2519af 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -177,9 +177,14 @@ class AntragJob extends JOB_Controller $dateDeadline = new DateTime(); $dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline)); + $this->StudierendenantragModel->addSelect('prestudent_id'); + $this->StudierendenantragModel->addSelect('studiensemester_kurzbz'); + $this->StudierendenantragModel->addSelect('s.insertamum'); + $result = $this->StudierendenantragModel->getWithLastStatusWhere( [ - 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED_STGL, + 'typ' => Studierendenantrag_model::TYP_ABMELDUNG_STGL, + 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, 's.insertamum <=' => $dateDeadline->format('c') ] ); @@ -195,8 +200,8 @@ class AntragJob extends JOB_Controller foreach ($antraege as $antrag) { - $result = $this->antraglib->approveAbmeldung([$antrag->studierendenantrag_id], $insertvon); + $result = $this->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $antrag->insertamum); if (isError($result)) $this->logError(getError($result)); else @@ -316,7 +321,7 @@ class AntragJob extends JOB_Controller 'urlCIS' => $urlCIS, 'fristablauf' => $fristende->format('d.m.Y') ); - + // NOTE(chris): Sancho mail if(sendSanchoMail('Sancho_Mail_Antrag_W_' . $name, $dataMail, $email, $subject)) { diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 190997c19..d02ce9012 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -137,26 +137,21 @@ class AntragLib $errors[] = $this->_ci->p->t('studierendenantrag', 'error_no_antrag_found', ['id' => $studierendenantrag_id]); continue; } - $status = getData($result)[0]; + $antrag = getData($result)[0]; + + $insertam = date('c'); $result = $this->_ci->StudierendenantragstatusModel->insert([ 'studierendenantrag_id' => $studierendenantrag_id, 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, - 'insertvon' => $insertvon + 'insertvon' => $insertvon, + 'insertam' => $insertam ]); if (isError($result)) $errors[] = getError($result); else { - $resultPrestudent = $this->_ci->StudierendenantragModel->load($studierendenantrag_id); - if (isError($resultPrestudent)) + if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG) { - $errors[] = getError($resultPrestudent); - continue; - } - if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG) - { - $antrag = getData($resultPrestudent)[0]; - $resultPrestudentStatus = $this->_ci->PrestudentstatusModel->getLastStatusWithStgEmail($antrag->prestudent_id); if (isError($resultPrestudentStatus)) $errors[] = getError($resultPrestudentStatus); @@ -167,7 +162,7 @@ class AntragLib $vorlage ='Sancho_Mail_Antrag_A_Approve'; $subject = $this->_ci->p->t('studierendenantrag', 'mail_subject_A_Approve'); - $result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon); + $result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStud', $antrag->datum, $insertam) ; if (isError($result)) { $errors[] = getError($result); @@ -186,8 +181,35 @@ class AntragLib sendSanchoMail($vorlage, $data, $prestudent_status->email, $subject); } } - if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) { - $res = $this->_ci->PrestudentModel->load($status->prestudent_id); + if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) { + $result = $this->_ci->PrestudentstatusModel->getLastStatus($antrag->prestudent_id, '', 'Student'); + if (isError($result)) + { + $errors[] = getError($result); + continue; + } + if(!hasData($result)) + { + $errors[] = $this->_ci->p->t('studierendenantrag', 'error_no_prestudentstatus', ['prestudent_id' => $antrag->prestudent_id]); + continue; + } + $prestudentstatus = getData($result)[0]; + + $result = $this->_ci->PrestudentstatusModel->withGrund('preabbrecher')->update([ + 'prestudent_id' => $prestudentstatus->prestudent_id, + 'status_kurzbz'=>$prestudentstatus->status_kurzbz, + 'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz, + 'ausbildungssemester'=>$prestudentstatus->ausbildungssemester + ],[]); + if (isError($result)) + { + $errors[] = getError($result); + continue; + } + + + $res = $this->_ci->PrestudentModel->load($antrag->prestudent_id); + if (hasData($res)) { $prestudent = current(getData($res)); $res = $this->_ci->PersonModel->load($prestudent->person_id); @@ -205,7 +227,7 @@ class AntragLib 'Sancho_Mail_Antrag_A_Stgl', [ 'name' => $name, - 'grund' => $status->grund + 'grund' => $antrag->grund ], $email, $this->_ci->p->t('studierendenantrag', 'mail_subject_A_Stgl') @@ -857,7 +879,7 @@ class AntragLib if (!hasData($result)) return error($this->_ci->p->t('studierendenantrag', 'error_no_stg', ['studiengang_kz' => $studiengang_kz])); $stg = current(getData($result)); - + if ($ausbildungssemester > $stg->max_semester) return success(); return error($this->_ci->p->t('studierendenantrag', 'error_no_studienplan', [ diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index 5024c6c22..bb1250a62 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -35,7 +35,7 @@ class PrestudentLib } - public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null) + public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null) { if (!$insertvon) $insertvon = getAuthUID(); @@ -62,24 +62,31 @@ class PrestudentLib $student = current($result); - //Status updaten - $result = $this->_ci->PrestudentstatusModel->insert([ + if(!$datum) + $datum = date('c'); + + if(!$bestaetigtam) + $bestaetigtam = date('c'); + + //Status und Statusgrund updaten + $result = $this->_ci->PrestudentstatusModel->withGrund($statusgrund_kurzbz)->insert([ 'prestudent_id' => $prestudent_id, 'status_kurzbz' => Prestudentstatus_model::STATUS_ABBRECHER, 'studiensemester_kurzbz' => $studiensemester_kurzbz, 'ausbildungssemester' => $prestudent_status->ausbildungssemester, - 'datum' => date('c'), + 'datum' => $datum, 'insertvon' => $insertvon, 'insertamum' => date('c'), 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz, 'studienplan_id'=> $prestudent_status->studienplan_id, 'bestaetigtvon' => $insertvon, - 'bestaetigtam' => date('c') + 'bestaetigtam' => $bestaetigtam ]); if (isError($result)) return $result; + //Verband anlegen $result = $this->_ci->LehrverbandModel->load([ 'studiengang_kz' => $student->studiengang_kz, diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index 620b897e6..ddf8d3a7a 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -316,4 +316,20 @@ class Prestudentstatus_model extends DB_Model return $this->loadWhere($whereArr); } + + /** + * call like this: + * $this->PrestudentstatusModel->withGrund('grund_kurzbz')->update($id, $otherData); + * or: + * $this->PrestudentstatusModel->withGrund('grund_kurzbz')->insert($otherData); + * @param string $statusgrund_kurzbz + * @return object $this + */ + public function withGrund($statusgrund_kurzbz) + { + if($statusgrund_kurzbz) + $this->db->set('statusgrund_id', '(SELECT statusgrund_id FROM public.tbl_status_grund WHERE statusgrund_kurzbz =' . $this->db->escape($statusgrund_kurzbz) .')', FALSE); + + return $this; + } } diff --git a/system/dbupdate_3.4/27351_digitalisierung_formulare.php b/system/dbupdate_3.4/27351_digitalisierung_formulare.php index 1fbe56945..5041b86f5 100644 --- a/system/dbupdate_3.4/27351_digitalisierung_formulare.php +++ b/system/dbupdate_3.4/27351_digitalisierung_formulare.php @@ -285,3 +285,42 @@ if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) { else echo '
public.get_stdsem_prestudent(integer, character varying): function created'; } + +if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStgl', 'Abbrecher', TRUE, '{\"durch Stgl\", \"by Course Director\"}', '{\"durch Stgl\", \"by Course Director\"}');"; + + if(!$db->db_query($qry)) + echo 'public.tbl_status_grund '.$db->db_last_error().'
'; + else + echo ' public.tbl_status_grund: Added Statusgrund abbrecherStgl for Abbrecher
'; + } +} + +if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStud';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStud', 'Abbrecher', TRUE, '{\"durch Stud\", \"by Student\"}', '{\"durch Stud\", \"by Student\"}');"; + + if(!$db->db_query($qry)) + echo 'public.tbl_status_grund '.$db->db_last_error().'
'; + else + echo ' public.tbl_status_grund: Added Statusgrund abbrecherStud for Abbrecher
'; + } +} + +if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'preabbrecher';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('preabbrecher', 'Student', TRUE, '{\"Pre-Abbrecher\", \"Pre-Aborted\"}', '{\"Pre-Abbrecher\", \"Pre-Aborted\"}');"; + + if(!$db->db_query($qry)) + echo 'public.tbl_status_grund '.$db->db_last_error().'
'; + else + echo ' public.tbl_status_grund: Added Statusgrund pre-abbrecher for Student
'; + } +}