Merge branch 'feature-27351/Digitalisierung_Formulare_Neu' into feature-25999/C4

This commit is contained in:
cgfhtw
2023-07-25 10:40:38 +02:00
23 changed files with 794 additions and 508 deletions
+131 -50
View File
@@ -125,7 +125,6 @@ class AntragLib
{
$errors = [];
foreach ($studierendenantrag_ids as $studierendenantrag_id) {
$result = $this->_ci->StudierendenantragModel->load($studierendenantrag_id);
if (isError($result))
{
@@ -162,7 +161,14 @@ 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, 'abbrecherStud', $antrag->datum, $insertam) ;
$result = $this->_ci->prestudentlib->setAbbrecher(
$antrag->prestudent_id,
$antrag->studiensemester_kurzbz,
$insertvon,
'abbrecherStud',
$antrag->datum,
$insertam
);
if (isError($result))
{
$errors[] = getError($result);
@@ -180,8 +186,7 @@ class AntragLib
// NOTE(chris): Sancho mail
sendSanchoMail($vorlage, $data, $prestudent_status->email, $subject);
}
}
if ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL) {
} else { // ($antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG_STGL)
$result = $this->_ci->PrestudentstatusModel->getLastStatus($antrag->prestudent_id, '', 'Student');
if (isError($result))
{
@@ -200,39 +205,41 @@ class AntragLib
'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);
$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)) {
$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(
'Sancho_Mail_Antrag_A_Stgl',
[
'name' => $name,
'grund' => $antrag->grund
],
$email,
$this->_ci->p->t('studierendenantrag', 'mail_subject_A_Stgl')
);
}
$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;
$vorlage = $antrag->typ == Studierendenantrag_model::TYP_ABMELDUNG ? 'Student' : 'Stgl';
// NOTE(chris): Sancho mail
sendSanchoMail(
'Sancho_Mail_Antrag_A_' . $vorlage,
[
'name' => $name,
'grund' => $antrag->grund
],
$email,
$this->_ci->p->t('studierendenantrag', 'mail_subject_A_' . $vorlage)
);
}
}
}
@@ -250,8 +257,9 @@ class AntragLib
*
* @return stdClass
*/
public function denyObjectionAbmeldung($studierendenantrag_id, $insertvon)
public function denyObjectionAbmeldung($studierendenantrag_id, $insertvon, $grund = null)
{
// TODO(chris): grund?
$result = $this->_ci->StudierendenantragModel->load($studierendenantrag_id);
if (isError($result))
{
@@ -277,12 +285,19 @@ class AntragLib
$result = $this->_ci->StudierendenantragstatusModel->insert([
'studierendenantrag_id' => $studierendenantrag_id,
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_OBJECTION_DENIED,
'grund' => $grund,
'insertvon' => $insertvon
]);
if (isError($result))
return $result;
else {
$result = $this->_ci->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $status->insertamum);
$result = $this->_ci->prestudentlib->setAbbrecher(
$antrag->prestudent_id,
$antrag->studiensemester_kurzbz,
$insertvon,
'abbrecherStgl',
$status->insertamum
);
if (isError($result))
return $result;
@@ -303,11 +318,10 @@ class AntragLib
$kontakt = current(getData($res));
$email = $kontakt->kontakt;
sendSanchoMail(
// TODO(chris): Vorlage erstellen
'Sancho_Mail_Antrag_A_ObjectionDenied',
'Sancho_Mail_Antrag_A_ObjDenied',
[
'name' => $name,
'grund' => $antrag->grund
'grund' => $grund
],
$email,
$this->_ci->p->t('studierendenantrag', 'mail_subject_A_ObjectionDenied')
@@ -415,7 +429,11 @@ class AntragLib
$resultAntrag = current($resultAntrag);
// Prestudentstatus und Unterbrechungsfolgeaktionen setzen
$result = $this->_ci->prestudentlib->setUnterbrecher($resultAntrag->prestudent_id, $resultAntrag->studiensemester_kurzbz, $studierendenantrag_id);
$result = $this->_ci->prestudentlib->setUnterbrecher(
$resultAntrag->prestudent_id,
$resultAntrag->studiensemester_kurzbz,
$studierendenantrag_id
);
if (isError($result)) {
$this->_ci->StudierendenantragstatusModel->delete($studierendenantrag_status_id);
@@ -437,7 +455,9 @@ class AntragLib
if (isset($data['errors']['person']))
{
//send assistenz mit id
$errors[] = $this->_ci->p->t('studierendenantrag', 'error_mail_and_name', ['message' => $data['errors']['email'] . '<br>' . $data['errors']['person']]);
$errors[] = $this->_ci->p->t('studierendenantrag', 'error_mail_and_name', [
'message' => $data['errors']['email'] . '<br>' . $data['errors']['person']
]);
$mail['ass'] = $this->_ci->p->t('studierendenantrag', 'StudentIn', ['prestudent_id' => $data['antrag']->prestudent_id]);
}
else
@@ -537,9 +557,9 @@ class AntragLib
]);
if (isError($result)) {
$errors['failed_' . $studierendenantrag_id] = $this->_ci->p->t('studierendenantrag', 'error_U_Reject', [
'studierendenantrag_id' => $studierendenantrag_id,
'message' => getError($result)['message']
]);
'studierendenantrag_id' => $studierendenantrag_id,
'message' => getError($result)['message']
]);
} else {
$name = '';
@@ -665,7 +685,10 @@ class AntragLib
$date_created = new DateTime($result['antrag']->datum);
if ($date_created < $date_target) {
$this->_ci->load->model('crm/Konto_model', 'KontoModel');
$result['studienbeitrag'] = $this->_ci->KontoModel->checkStudienbeitragFromPerson($person_id, $result['antrag']->studiensemester_kurzbz);
$result['studienbeitrag'] = $this->_ci->KontoModel->checkStudienbeitragFromPerson(
$person_id,
$result['antrag']->studiensemester_kurzbz
);
}
}
@@ -984,7 +1007,11 @@ class AntragLib
*
* @param integer $prestudent_id
*
* @return \stdClass on success retval 0 means not a student; retval 1 means Berechtigt; retval -1 means has already an Antrag pending; retval -2 means other Antrag pending; retval -3 means in blacklist stg
* @return \stdClass on success retval 0 means not a student;
* retval 1 means Berechtigt;
* retval -1 means has already an Antrag pending;
* retval -2 means other Antrag pending;
* retval -3 means in blacklist stg
*/
public function getPrestudentAbmeldeBerechtigt($prestudent_id)
{
@@ -1007,7 +1034,13 @@ class AntragLib
$datumStatus = $result->datum;
if (!in_array($result->status_kurzbz, $this->_ci->config->item('antrag_prestudentstatus_whitelist'))) {
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere(['prestudent_id' => $prestudent_id, 'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED], [Studierendenantrag_model::TYP_ABMELDUNG, Studierendenantrag_model::TYP_ABMELDUNG_STGL]);
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere([
'prestudent_id' => $prestudent_id,
'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED
], [
Studierendenantrag_model::TYP_ABMELDUNG,
Studierendenantrag_model::TYP_ABMELDUNG_STGL
]);
if (isError($result))
return $result;
if (hasData($result))
@@ -1047,7 +1080,11 @@ class AntragLib
* @param integer $prestudent_id
* @param string $studiensemester_kurzbz (optional)
*
* @return \stdClass on success retval 0 means not a student; retval 1 means Berechtigt; retval -1 means has already an Antrag pending; retval -2 means other Antrag pending; retval -3 means in blacklist stg
* @return \stdClass on success retval 0 means not a student;
* retval 1 means Berechtigt;
* retval -1 means has already an Antrag pending;
* retval -2 means other Antrag pending;
* retval -3 means in blacklist stg
*/
public function getPrestudentUnterbrechungsBerechtigt($prestudent_id, $studiensemester_kurzbz = null)
{
@@ -1069,7 +1106,11 @@ class AntragLib
$result = current(getData($result));
$datumStatus = $result->datum;
if (!in_array($result->status_kurzbz, $this->_ci->config->item('antrag_prestudentstatus_whitelist'))) {
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere(['prestudent_id' => $prestudent_id, 'typ' => Studierendenantrag_model::TYP_UNTERBRECHUNG, 'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED]);
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere([
'prestudent_id' => $prestudent_id,
'typ' => Studierendenantrag_model::TYP_UNTERBRECHUNG,
'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED
]);
if (isError($result))
return $result;
if (hasData($result))
@@ -1113,7 +1154,11 @@ class AntragLib
*
* @param integer $prestudent_id
*
* @return \stdClass on success retval 0 means not a student; retval 1 means Berechtigt; retval -1 means has already an Antrag pending; retval -2 means other Antrag pending; retval -3 means in blacklist stg
* @return \stdClass on success retval 0 means not a student;
* retval 1 means Berechtigt;
* retval -1 means has already an Antrag pending;
* retval -2 means other Antrag pending;
* retval -3 means in blacklist stg
*/
public function getPrestudentWiederholungsBerechtigt($prestudent_id)
{
@@ -1142,7 +1187,11 @@ class AntragLib
$result = current(getData($result));
$datumStatus = $result->datum;
if (!in_array($result->status_kurzbz, $this->_ci->config->item('antrag_prestudentstatus_whitelist'))) {
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere(['prestudent_id' => $prestudent_id, 'typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG, 'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED]);
$result = $this->_ci->StudierendenantragModel->loadWithStatusWhere([
'prestudent_id' => $prestudent_id,
'typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG,
'campus.get_status_studierendenantrag(studierendenantrag_id)' => Studierendenantragstatus_model::STATUS_APPROVED
]);
if (isError($result))
return $result;
if (hasData($result))
@@ -1331,7 +1380,9 @@ class AntragLib
public function saveLvs($lvArray)
{
$result = $this->_ci->StudierendenantraglehrveranstaltungModel->deleteWhere(['studierendenantrag_id' => $lvArray[0]['studierendenantrag_id']]);
$result = $this->_ci->StudierendenantraglehrveranstaltungModel->deleteWhere([
'studierendenantrag_id' => $lvArray[0]['studierendenantrag_id']
]);
if (isError($result))
return $result;
@@ -1407,8 +1458,8 @@ class AntragLib
return $result;
if (!hasData($result))
return error($this->_ci->p->t('studierendenantrag', 'error_no_person_prestudent', ['prestudent_id' => $prestudent_id]));
$result = current(getData($result));
$student = trim($result->vorname . ' ' . $result->nachname);
$person = current(getData($result));
$student = trim($person->vorname . ' ' . $person->nachname);
$result = $this->_ci->PersonModel->getFullName($insertvon);
if (isError($result))
@@ -1434,6 +1485,27 @@ class AntragLib
))
return error($this->_ci->p->t('studierendenantrag', 'error_mail_to', ['email' => $email]));
$result = $this->_ci->KontaktModel->getZustellKontakt($person->person_id, ['email']);
if (hasData($result)) {
$kontakt = current(getData($result));
$email = $kontakt->kontakt;
// NOTE(chris): Sancho mail
sendSanchoMail(
'Sancho_Mail_Antrag_W_Student',
[
'antrag_id' => $antrag_id,
'stg' => $stg->bezeichnung,
'sem' => $semester,
'mitarbeiter' => $mitarbeiter,
'name' => $student
],
$email,
$this->_ci->p->t('studierendenantrag', 'mail_subject_W_Student')
);
}
return success();
}
@@ -1545,7 +1617,16 @@ class AntragLib
*/
public function isEntitledToCancelAntrag($antrag_id)
{
return $this->isOwnAntrag($antrag_id);
$result = $this->_ci->StudierendenantragModel->load($antrag_id);
if (!hasData($result))
return false;
$antrag = current(getData($result));
if ($antrag->typ != Studierendenantrag_model::TYP_ABMELDUNG_STGL)
return $this->isOwnAntrag($antrag_id);
// TODO(chris): assistenz can not cancel - should they be able to?
return false;
}
/**
+5 -21
View File
@@ -32,7 +32,6 @@ class PrestudentLib
$this->_ci->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel');
}
public function setAbbrecher($prestudent_id, $studiensemester_kurzbz, $insertvon = null, $statusgrund_kurzbz = null, $datum = null, $bestaetigtam = null)
@@ -153,7 +152,7 @@ class PrestudentLib
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
'student_uid' => $lv->uid,
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
],[
], [
'note' => 9
]);
@@ -181,7 +180,7 @@ class PrestudentLib
$this->_ci->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $student->student_uid
],[
], [
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'A',
@@ -193,7 +192,7 @@ class PrestudentLib
//Benutzer inaktiv setzen
$this->_ci->BenutzerModel->update([
'uid' => $student->student_uid
],[
], [
'aktiv' => false,
'updateaktivvon' => $insertvon,
'updateaktivam' => date('c'),
@@ -214,20 +213,6 @@ class PrestudentLib
return $result;
$result = getData($result);
if (!$result) {
/** TODO(chris): Zukünftige Unterbrecher so nicht möglich
* - Verband und Gruppe dürfen noch nicht gesetzt werden
* - Keine Garantie das Ausbildungssemester gleich bleibt (weiter Unterbrechungen oder eine Wiederholung in der Zwischenzeit)
* - LVs eventuell nicht zugewießen
* Mögliche Lösung: JOB!
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
if (isError($result))
return $result;
$result = getData($result);
if (!$result) {
return error('Kein Prestudent status gefunden');
}
$result->studiensemester_kurzbz*/
return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
'prestudent_id' => $prestudent_id,
'studiensemester_kurzbz' => $studiensemester_kurzbz
@@ -341,7 +326,7 @@ class PrestudentLib
'studiensemester_kurzbz' => $lv->studiensemester_kurzbz,
'student_uid' => $lv->uid,
'lehrveranstaltung_id' => $lv->lehrveranstaltung_id
],[
], [
'note' => 9
]);
@@ -369,7 +354,7 @@ class PrestudentLib
$this->_ci->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $student->student_uid
],[
], [
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'B',
@@ -380,5 +365,4 @@ class PrestudentLib
return success();
}
}