diff --git a/application/config/studierendenantrag.php b/application/config/studierendenantrag.php index 89b066d33..786256a82 100644 --- a/application/config/studierendenantrag.php +++ b/application/config/studierendenantrag.php @@ -2,7 +2,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); -// TODO(chris): review this! $config['frist_rueckzahlung_studiengebuer_WS'] = '15.10.'; $config['frist_rueckzahlung_studiengebuer_SS'] = '15.03.'; diff --git a/application/controllers/components/Antrag/Abmeldung.php b/application/controllers/components/Antrag/Abmeldung.php index 55435c1f6..f30de6803 100644 --- a/application/controllers/components/Antrag/Abmeldung.php +++ b/application/controllers/components/Antrag/Abmeldung.php @@ -57,7 +57,13 @@ class Abmeldung extends FHC_Controller } elseif ($result == -1) { - $result = $this->antraglib->getDetailsForLastAntrag($prestudent_id, [Studierendenantrag_model::TYP_ABMELDUNG, Studierendenantrag_model::TYP_ABMELDUNG_STGL]); + $result = $this->antraglib->getDetailsForLastAntrag( + $prestudent_id, + [ + Studierendenantrag_model::TYP_ABMELDUNG, + Studierendenantrag_model::TYP_ABMELDUNG_STGL + ] + ); if (isError($result)) { return $this->outputJsonError(getError($result)); } @@ -94,6 +100,11 @@ class Abmeldung extends FHC_Controller if ($data->typ !== Studierendenantrag_model::TYP_ABMELDUNG_STGL && $data->typ !== Studierendenantrag_model::TYP_ABMELDUNG) return show_404(); + $data->canCancel = ( + $data->status == Studierendenantragstatus_model::STATUS_CREATED && + $this->antraglib->isEntitledToCancelAntrag($data->studierendenantrag_id) + ); + $this->outputJsonSuccess($data); } diff --git a/application/controllers/components/Antrag/Leitung.php b/application/controllers/components/Antrag/Leitung.php index 54e5b65e6..6cc25f87d 100644 --- a/application/controllers/components/Antrag/Leitung.php +++ b/application/controllers/components/Antrag/Leitung.php @@ -2,6 +2,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); +use \stdClass as stdClass; + /** * */ @@ -116,7 +118,7 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToReopenAntrag', [ - 'isEntitledToReopenAntrag' => $this->p->t('studierendenantrag','error_no_right') + 'isEntitledToReopenAntrag' => $this->p->t('studierendenantrag', 'error_no_right') ] ); @@ -146,8 +148,8 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToObjectAntrag|callback_canBeObjected', [ - 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag','error_no_right'), - 'canBeObjected' => $this->p->t('studierendenantrag','error_no_objection') + 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'), + 'canBeObjected' => $this->p->t('studierendenantrag', 'error_no_objection') ] ); @@ -177,8 +179,8 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToObjectAntrag|callback_isObjected', [ - 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag','error_no_right'), - 'isObjected' => $this->p->t('studierendenantrag','error_not_objected') + 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'), + 'isObjected' => $this->p->t('studierendenantrag', 'error_not_objected') ] ); @@ -208,8 +210,8 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToObjectAntrag|callback_isObjected', [ - 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag','error_no_right'), - 'isObjected' => $this->p->t('studierendenantrag','error_not_objected') + 'isEntitledToObjectAntrag' => $this->p->t('studierendenantrag', 'error_no_right'), + 'isObjected' => $this->p->t('studierendenantrag', 'error_not_objected') ] ); @@ -265,7 +267,7 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToApproveAntrag', [ - 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag','error_no_right') + 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right') ] ); @@ -301,7 +303,7 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToApproveAntrag', [ - 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag','error_no_right') + 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right') ] ); @@ -332,7 +334,7 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToRejectAntrag', [ - 'isEntitledToRejectAntrag' => $this->p->t('studierendenantrag','error_no_right') + 'isEntitledToRejectAntrag' => $this->p->t('studierendenantrag', 'error_no_right') ] ); $this->form_validation->set_rules('grund', 'Grund', 'required'); @@ -365,7 +367,7 @@ class Leitung extends FHC_Controller 'Studierenden Antrag', 'required|callback_isEntitledToApproveAntrag', [ - 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag','error_no_right') + 'isEntitledToApproveAntrag' => $this->p->t('studierendenantrag', 'error_no_right') ] ); diff --git a/application/controllers/components/Antrag/Unterbrechung.php b/application/controllers/components/Antrag/Unterbrechung.php index 78594fa65..f0c269617 100644 --- a/application/controllers/components/Antrag/Unterbrechung.php +++ b/application/controllers/components/Antrag/Unterbrechung.php @@ -69,7 +69,9 @@ class Unterbrechung extends FHC_Controller $result = getData($result); $this->output->set_status_header(400); - return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', ['typ' => $this->p->t('studierendenantrag','antrag_typ_' . $result->typ)])); + return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', [ + 'typ' => $this->p->t('studierendenantrag', 'antrag_typ_' . $result->typ) + ])); } elseif ($result == -3) { diff --git a/application/controllers/components/Antrag/Wiederholung.php b/application/controllers/components/Antrag/Wiederholung.php index a2252a7f5..e7fde6031 100644 --- a/application/controllers/components/Antrag/Wiederholung.php +++ b/application/controllers/components/Antrag/Wiederholung.php @@ -67,7 +67,7 @@ class Wiederholung extends FHC_Controller $result = $result->retval; if (!$result) { $this->output->set_status_header(REST_Controller::HTTP_FORBIDDEN); - return $this->outputJsonError($this->p->t('studierendenantrag','error_no_student_no_failed_exam')); + return $this->outputJsonError($this->p->t('studierendenantrag', 'error_no_student_no_failed_exam')); } elseif ($result == -1) { @@ -97,7 +97,9 @@ class Wiederholung extends FHC_Controller $result = getData($result); $this->output->set_status_header(REST_Controller::HTTP_BAD_REQUEST); - return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', ['typ' => $this->p->t('studierendenantrag','antrag_typ_' . $result->typ)])); + return $this->outputJsonError($this->p->t('studierendenantrag', 'error_antrag_pending', [ + 'typ' => $this->p->t('studierendenantrag', 'antrag_typ_' . $result->typ) + ])); } elseif ($result == -3) { @@ -217,7 +219,9 @@ class Wiederholung extends FHC_Controller return [ 'studierendenantrag_id' => $lv->studierendenantrag_id, 'lehrveranstaltung_id' => $lv->lehrveranstaltung_id, - 'note' => $lv->zugelassen ? ($lv->zugelassen == 1 ? 0 : $this->config->item('wiederholung_note_angerechnet')) : $this->config->item('wiederholung_note_nicht_zugelassen'), + 'note' => $lv->zugelassen + ? ($lv->zugelassen == 1 ? 0 : $this->config->item('wiederholung_note_angerechnet')) + : $this->config->item('wiederholung_note_nicht_zugelassen'), 'anmerkung' => $lv->anmerkung, 'insertvon' => getAuthUID(), 'studiensemester_kurzbz' => $lv->studiensemester_kurzbz diff --git a/application/controllers/components/Phrasen.php b/application/controllers/components/Phrasen.php index 52de719f7..87516ce00 100644 --- a/application/controllers/components/Phrasen.php +++ b/application/controllers/components/Phrasen.php @@ -19,5 +19,4 @@ class Phrasen extends FHC_Controller $this->load->library('PhrasesLib', [$module], 'pj'); $this->outputJsonSuccess(json_decode($this->pj->getJSON())); } - } diff --git a/application/controllers/jobs/AntragJob.php b/application/controllers/jobs/AntragJob.php index e0c88ac3a..f932a420c 100644 --- a/application/controllers/jobs/AntragJob.php +++ b/application/controllers/jobs/AntragJob.php @@ -6,9 +6,7 @@ use \DateTime as DateTime; class AntragJob extends JOB_Controller { - private $allPrestudentsWhereCommitteeExamFailed; - - /** + /** * API constructor */ public function __construct() @@ -21,7 +19,7 @@ class AntragJob extends JOB_Controller // Loads SanchoHelper $this->load->helper('hlp_sancho_helper'); - //Load Model + // Load Model $this->load->model('education/Studierendenantrag_model', 'StudierendenantragModel'); $this->load->model('education/Studierendenantragstatus_model', 'StudierendenantragstatusModel'); $this->load->model('education/Pruefung_model', 'PruefungModel'); @@ -34,102 +32,144 @@ class AntragJob extends JOB_Controller */ public function sendStglSammelmail() { - $this->logInfo('Start Job sendStglSammelmail'); + $this->load->model('person/Person_model', 'PersonModel'); - // TODO(chris): get all Abmeldung:Created, Unterbrechung:Created, Wiederholung:LvZugeordnet - $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + $this->logInfo('Start Job sendStglSammelmail'); - $this->StudierendenantragModel->addJoin('public.tbl_prestudent','prestudent_id'); - $this->db->group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->StudierendenantragModel->addJoin('public.tbl_prestudent', 'prestudent_id'); + $this->db->group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); - $this->db->group_end(); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $this->db->or_group_start(); - $this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG); - $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED); - $this->db->group_end(); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_UNTERBRECHUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_CREATED); + $this->db->group_end(); - $result = $this->StudierendenantragModel->load(); - if(isError($result)) - return $this->logError(getError($result)); + $this->db->or_group_start(); + $this->db->where('typ', Studierendenantrag_model::TYP_WIEDERHOLUNG); + $this->db->where('campus.get_status_studierendenantrag(studierendenantrag_id)', Studierendenantragstatus_model::STATUS_LVSASSIGNED); + $this->db->group_end(); - if(!hasData($result)) - return $this->logInfo('End Job sendStglSammelmail: 0 Mails sent'); + $result = $this->StudierendenantragModel->load(); + if(isError($result)) + return $this->logError(getError($result)); - $antraege = getData($result); + if(!hasData($result)) + return $this->logInfo('End Job sendStglSammelmail: 0 Mails sent'); - $stgs = array(); - $stgLeitungen = array(); + $antraege = getData($result); - foreach($antraege as $antrag) - { - if(!isset($stgs[$antrag->studiengang_kz])) - { - $result = $this->StudiengangModel->getLeitung($antrag->studiengang_kz); - if(isError($result)) - { - $this->logError(getError($result)); - continue; - } - if(!hasData($result)) - { - $this->logError('Keine Leitung für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); - continue; - } + $stgs = array(); + $stgLeitungen = array(); - $leitung = current(getData($result)); - if(!isset($stgLeitungen[$leitung->uid])) - { - $stgLeitungen[$leitung->uid] = [ 'Details' => $leitung, 'stgs' => [] ]; - } - $stgLeitungen[$leitung->uid] ['stgs'][] = $antrag->studiengang_kz; + foreach ($antraege as $antrag) + { + if (!isset($stgs[$antrag->studiengang_kz])) + { + $result = $this->StudiengangModel->getLeitung($antrag->studiengang_kz); + if (isError($result)) + { + $this->logError(getError($result)); + continue; + } + if (!hasData($result)) + { + $this->logError('Keine Leitung für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); + continue; + } - $result = $this->StudiengangModel->load($antrag->studiengang_kz); - if(isError($result)) - { - $this->logError(getError($result)); - continue; - } - if(!hasData($result)) - { - $this->logError('Keine Details für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); - continue; - } - $details = current(getData($result)); + $leitung = current(getData($result)); + if (!isset($stgLeitungen[$leitung->uid])) + { + $stgLeitungen[$leitung->uid] = [ 'Details' => $leitung, 'stgs' => [] ]; + } + $stgLeitungen[$leitung->uid]['stgs'][] = $antrag->studiengang_kz; - $stgs[$antrag->studiengang_kz] = [ 'Abmeldung' => [], 'Unterbrechung' => [], 'Wiederholung' => [], 'Details' => $details ]; - } - $stgs[$antrag->studiengang_kz] [$antrag->typ] = $antrag; - } + $result = $this->StudiengangModel->load($antrag->studiengang_kz); + if (isError($result)) + { + $this->logError(getError($result)); + continue; + } + if (!hasData($result)) + { + $this->logError('Keine Details für Studiengang ' . $antrag->studiengang_kz . ' gefunden!'); + continue; + } + $details = current(getData($result)); -/* var_dump($stgs); - var_dump($stgLeitungen);*/ + $stgs[$antrag->studiengang_kz] = [ + 'Abmeldung' => [], + 'Unterbrechung' => [], + 'Wiederholung' => [], + 'Details' => $details + ]; + } + $stgs[$antrag->studiengang_kz][str_replace('Stgl', '', $antrag->typ)] = $antrag; + } - $count = 0; - foreach($stgLeitungen as $leitung) - { - $data = array(); - if(sendSanchoMail("Sancho_Mail_Antrag_Stgl",$data,$leitung['Details']->email, 'Anträge - Aktion(en) erforderlich')) - $count++; - } + $this->load->model('system/Sprache_model', 'SpracheModel'); + $result = $this->SpracheModel->loadWhere(['content' => true]); + if (isError($result)) { + $this->logError(getError($result)); + $languages = [DEFAULT_LANGUAGE]; + } elseif (!hasData($result)) { + $languages = [DEFAULT_LANGUAGE]; + } else { + $languages = array_map(function ($row) { + return $row->sprache; + }, getData($result)); + } - $this->logInfo($count . " Emails erfolgreich versandt"); + $count = 0; + foreach ($stgLeitungen as $leitung) + { + $data = [ + 'name' => trim($leitung['Details']->vorname . ' ' . $leitung['Details']->nachname) + ]; - // TODO(chris): Emailadresse stg - // TODO(chris): data Fertig + foreach ($languages as $lang) { + unset($this->p); + $this->loadPhrases(['studierendenantrag'], $lang); - $this->logInfo('End Job sendStglSammelmail'); + $table = ''; + foreach ($leitung['stgs'] as $studiengang_kz) { + $rows = ''; + $stg = $stgs[$studiengang_kz]; + foreach (['Abmeldung', 'Unterbrechung', 'Wiederholung'] as $typ) { + $c = count($stg[$typ]); + if ($c) { + $rows .= $this->p->t('studierendenantrag', 'mail_part_x_new_' . $typ, ['count' => $c]); + } + } + $table .= $this->p->t('studierendenantrag', 'mail_part_table', [ + 'stg_bezeichnung' => $stg['Details']->bezeichnung, + 'stg_orgform_kurzbz' => $stg['Details']->orgform_kurzbz, + 'rows' => $rows + ]); + } + $data['table_' . $lang] = $table; + } + + $data['table'] = $data['table_' . DEFAULT_LANGUAGE]; + + // NOTE(chris): Sancho mail + if (sendSanchoMail("Sancho_Mail_Antrag_Stgl", $data, $leitung['Details']->uid . '@' . DOMAIN, 'Anträge - Aktion(en) erforderlich')) + $count++; + } + + $this->logInfo($count . " Emails erfolgreich versandt"); + + $this->logInfo('End Job sendStglSammelmail'); } /** @@ -210,22 +250,22 @@ class AntragJob extends JOB_Controller return; } - $digi_start= $this->config->item('digitalization_start'); - if($digi_start) - $digi_start = new DateTime($digi_start); + $digi_start= $this->config->item('digitalization_start'); + if($digi_start) + $digi_start = new DateTime($digi_start); $dateDeadline = new DateTime(); $dateDeadline->sub(DateInterval::createFromDateString($modifier_deadline)); - $result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed( - [ - null, - Studierendenantragstatus_model::STATUS_REQUESTSENT_1, - Studierendenantragstatus_model::STATUS_REQUESTSENT_2 - ], - $dateDeadline, - $digi_start - ); + $result = $this->PruefungModel->getAllPrestudentsWhereCommitteeExamFailed( + [ + null, + Studierendenantragstatus_model::STATUS_REQUESTSENT_1, + Studierendenantragstatus_model::STATUS_REQUESTSENT_2 + ], + $dateDeadline, + $digi_start + ); if(isError($result)) { $this->logError(getError($result)); @@ -238,18 +278,18 @@ class AntragJob extends JOB_Controller $prestudents = $this->prestudentsGetUnique($prestudents); - foreach ($prestudents as $prestudent) - { - $result = $this->prestudentlib->setAbbrecher($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz, $insertvon); - if (isError($result)) - $this->logError(getError($result)); - else - $count++; - } - $this->logInfo($count . " Students set to Abbrecher"); - } + foreach ($prestudents as $prestudent) + { + $result = $this->prestudentlib->setAbbrecher($prestudent->prestudent_id, $prestudent->studiensemester_kurzbz, $insertvon); + if (isError($result)) + $this->logError(getError($result)); + else + $count++; + } + $this->logInfo($count . " Students set to Abbrecher"); + } - $this->logInfo('Ende Job handleWiederholerDeadline'); + $this->logInfo('Ende Job handleWiederholerDeadline'); } /** @@ -283,13 +323,11 @@ class AntragJob extends JOB_Controller $this->StudierendenantragModel->addSelect('studiensemester_kurzbz'); $this->StudierendenantragModel->addSelect('s.insertamum'); - $result = $this->StudierendenantragModel->getWithLastStatusWhere( - [ - 'typ' => Studierendenantrag_model::TYP_ABMELDUNG_STGL, - 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, - 's.insertamum <=' => $dateDeadline->format('c') - ] - ); + $result = $this->StudierendenantragModel->getWithLastStatusWhere([ + 'typ' => Studierendenantrag_model::TYP_ABMELDUNG_STGL, + 'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED, + 's.insertamum <=' => $dateDeadline->format('c') + ]); if(isError($result)) { @@ -302,7 +340,13 @@ class AntragJob extends JOB_Controller foreach ($antraege as $antrag) { - $result = $this->prestudentlib->setAbbrecher($antrag->prestudent_id, $antrag->studiensemester_kurzbz, $insertvon, 'abbrecherStgl', $antrag->insertamum); + $result = $this->prestudentlib->setAbbrecher( + $antrag->prestudent_id, + $antrag->studiensemester_kurzbz, + $insertvon, + 'abbrecherStgl', + $antrag->insertamum + ); if (isError($result)) $this->logError(getError($result)); else @@ -364,7 +408,8 @@ class AntragJob extends JOB_Controller $this->logInfo('Ende Job sendAufforderungWiederholer'); } - protected function prestudentsGetUnique($prestudents) { + protected function prestudentsGetUnique($prestudents) + { $result = []; foreach ($prestudents as $prestudent) { if (!isset($result[$prestudent->prestudent_id])) @@ -466,42 +511,4 @@ class AntragJob extends JOB_Controller } $this->logInfo('Ende Job sendAufforderungWiederholer ' . $name); } - - - - // TODO(chris): REMOVE DEBUG! - - /** - * Writes a cronjob info log - */ - protected function logInfo($response, $parameters = null) - { - echo $response . "\n"; - } - - /** - * Writes a cronjob debug log - */ - protected function logDebug($response, $parameters = null) - { - echo $response . "\n"; - } - - /** - * Writes a cronjob warning log - */ - protected function logWarning($response, $parameters = null) - { - echo $response . "\n"; - } - - /** - * Writes a cronjob error log - */ - protected function logError($response, $parameters = null) - { - echo $response . "\n"; - } - - } diff --git a/application/controllers/lehre/Antrag/Wiederholung.php b/application/controllers/lehre/Antrag/Wiederholung.php index 5b22641f7..2aa57d733 100644 --- a/application/controllers/lehre/Antrag/Wiederholung.php +++ b/application/controllers/lehre/Antrag/Wiederholung.php @@ -29,7 +29,7 @@ class Wiederholung extends Auth_Controller // ----------------------------------------------------------------------------------------------------------------- // Public methods - public function assistenz($antrag_id, $frame = false) + public function assistenz($antrag_id) { $result = $this->antraglib->getDetailsForAntrag($antrag_id); @@ -42,8 +42,7 @@ class Wiederholung extends Auth_Controller $this->load->view('lehre/Antrag/Wiederholung/Student', [ 'antrag_id' => $antrag_id, - 'antrag' => getData($result), - 'frame' => $frame + 'antrag' => getData($result) ]); } } diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 6e05380a5..753432edf 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -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'] . '
' . $data['errors']['person']]); + $errors[] = $this->_ci->p->t('studierendenantrag', 'error_mail_and_name', [ + 'message' => $data['errors']['email'] . '
' . $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; } /** diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index bb1250a62..59cba0df1 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -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(); } - } diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index da3d37479..9fa0d179f 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -399,7 +399,11 @@ class Prestudentstatus_model extends DB_Model 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); + $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/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index d7f3fa09f..fad6c635e 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -93,7 +93,20 @@ class Pruefung_model extends DB_Model $this->addSelect('campus.get_status_studierendenantrag(a.studierendenantrag_id) status'); $this->addSelect('count(1) as count'); - $this->addGroupBy(['pers.vorname','pers.nachname','pers.person_id', 's.matrikelnr','g.bezeichnung', 'g.studiengang_kz','o.bezeichnung_mehrsprachig','ps.prestudent_id', 'lv.bezeichnung', 'le.studiensemester_kurzbz', 'a.typ', 'a.studierendenantrag_id']); + $this->addGroupBy([ + 'pers.vorname', + 'pers.nachname', + 'pers.person_id', + 's.matrikelnr', + 'g.bezeichnung', + 'g.studiengang_kz', + 'o.bezeichnung_mehrsprachig', + 'ps.prestudent_id', + 'lv.bezeichnung', + 'le.studiensemester_kurzbz', + 'a.typ', + 'a.studierendenantrag_id' + ]); $this->addJoin('lehre.tbl_note n', 'note'); $this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id'); $this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id'); @@ -120,7 +133,15 @@ class Pruefung_model extends DB_Model AND ps.prestudent_id = ps1.prestudent_id)', null, false); // NOTE(chris): is Wiederholer without set statusgrund (legacy?) - $this->db->where('(SELECT COUNT(*) FROM (SELECT DISTINCT studiensemester_kurzbz FROM tbl_prestudentstatus _s WHERE ausbildungssemester=get_absem_prestudent(ps.prestudent_id, le.studiensemester_kurzbz) AND prestudent_id=ps.prestudent_id) a) = 1', null, false); + $this->db->where( + '(SELECT COUNT(*) + FROM (SELECT DISTINCT studiensemester_kurzbz + FROM tbl_prestudentstatus _s + WHERE ausbildungssemester=get_absem_prestudent(ps.prestudent_id, le.studiensemester_kurzbz) + AND prestudent_id=ps.prestudent_id) a) = 1', + null, + false + ); return $this->db->get_compiled_select($this->dbTable); } @@ -142,7 +163,11 @@ class Pruefung_model extends DB_Model if (!is_array($statusgruende)) $statusgruende = []; - return $this->execQuery('select * from ( ' . $sql . ') temp where count >= 3 AND prestudent_id = ?' , [Studierendenantrag_model::TYP_WIEDERHOLUNG, $statusgruende, $prestudent_id]); + return $this->execQuery('select * from ( ' . $sql . ') temp where count >= 3 AND prestudent_id = ?', [ + Studierendenantrag_model::TYP_WIEDERHOLUNG, + $statusgruende, + $prestudent_id + ]); } public function getAllPrestudentsWhereCommitteeExamFailed($status, $maxDate, $minDate) diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index a4dfb0d59..67adca855 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -54,8 +54,11 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); $this->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); - $this->addJoin('campus.tbl_studierendenantrag_status as s','campus.get_status_id_studierendenantrag('.$this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id' ); - $this->addJoin('campus.tbl_studierendenantrag_statustyp as st','studierendenantrag_statustyp_kurzbz' ); + $this->addJoin( + 'campus.tbl_studierendenantrag_status as s', + 'campus.get_status_id_studierendenantrag('. $this->dbTable .'.studierendenantrag_id) = studierendenantrag_status_id' + ); + $this->addJoin('campus.tbl_studierendenantrag_statustyp as st', 'studierendenantrag_statustyp_kurzbz'); $this->db->where_in('p.studiengang_kz', $studiengaenge); @@ -189,7 +192,11 @@ class Studierendenantrag_model extends DB_Model $this->addJoin('public.tbl_prestudent p', 'prestudent_id', 'RIGHT'); $this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz'); $this->addJoin('bis.tbl_orgform', 'orgform_kurzbz'); - $this->addJoin('campus.tbl_studierendenantrag_statustyp st', 'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz','LEFT'); + $this->addJoin( + 'campus.tbl_studierendenantrag_statustyp st', + 'campus.get_status_studierendenantrag(studierendenantrag_id)=st.studierendenantrag_statustyp_kurzbz', + 'LEFT' + ); return $this->loadWhere([ 'p.person_id' => $person_id diff --git a/application/models/education/Studierendenantraglehrveranstaltung_model.php b/application/models/education/Studierendenantraglehrveranstaltung_model.php index 88d591053..9445b8cf8 100644 --- a/application/models/education/Studierendenantraglehrveranstaltung_model.php +++ b/application/models/education/Studierendenantraglehrveranstaltung_model.php @@ -65,7 +65,11 @@ class Studierendenantraglehrveranstaltung_model extends DB_Model 'stat.studierendenantrag_status_id = campus.get_status_id_studierendenantrag(a.studierendenantrag_id)' ); $this->addJoin('public.tbl_student s', 'prestudent_id'); - $this->addJoin('lehre.tbl_zeugnisnote z', 'z.lehrveranstaltung_id=lv.lehrveranstaltung_id AND z.student_uid=s.student_uid AND z.studiensemester_kurzbz=a.studiensemester_kurzbz', 'LEFT'); + $this->addJoin( + 'lehre.tbl_zeugnisnote z', + 'z.lehrveranstaltung_id=lv.lehrveranstaltung_id AND z.student_uid=s.student_uid AND z.studiensemester_kurzbz=a.studiensemester_kurzbz', + 'LEFT' + ); return $this->loadWhere([ 'ps.prestudent_id' => $prestudent_id, diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 27af2ab22..c8e9571d4 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -628,7 +628,14 @@ class Studiengang_model extends DB_Model if ($not_antrag_typ !== null && is_array($not_antrag_typ)) { foreach($not_antrag_typ as $k => $v) $not_antrag_typ[$k] = $this->db->escape($v); - $this->addJoin('campus.tbl_studierendenantrag a', 'a.prestudent_id=p.prestudent_id and a.typ in ('. implode(',', $not_antrag_typ ).") AND campus.get_status_studierendenantrag (a.studierendenantrag_id)<>'" . Studierendenantragstatus_model::STATUS_CANCELLED . "'", 'LEFT'); + $this->addJoin( + 'campus.tbl_studierendenantrag a', + 'a.prestudent_id=p.prestudent_id and a.typ in ('. + implode(',', $not_antrag_typ). + ") AND campus.get_status_studierendenantrag (a.studierendenantrag_id)<>'" . + Studierendenantragstatus_model::STATUS_CANCELLED . "'", + 'LEFT' + ); $this->db->where('a.typ IS NULL'); } diff --git a/application/views/lehre/Antrag/Student/List.php b/application/views/lehre/Antrag/Student/List.php index b1ec9e061..52242d7d6 100644 --- a/application/views/lehre/Antrag/Student/List.php +++ b/application/views/lehre/Antrag/Student/List.php @@ -33,29 +33,14 @@ $this->load->view( $array){ ?>

()

- - - - p->t('studierendenantrag', 'btn_new'); ?> - -