mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-24 02:12:17 +00:00
Merge branch 'feature-27351/Digitalisierung_Formulare_Neu' into feature-25999/C4
This commit is contained in:
@@ -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.';
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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')
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -19,5 +19,4 @@ class Phrasen extends FHC_Controller
|
||||
$this->load->library('PhrasesLib', [$module], 'pj');
|
||||
$this->outputJsonSuccess(json_decode($this->pj->getJSON()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
|
||||
@@ -33,29 +33,14 @@ $this->load->view(
|
||||
<?php if ($antraege) { ?>
|
||||
<?php foreach($antraege as $prestudent_id => $array){ ?>
|
||||
<h4><?= $array['bezeichnungStg']; ?> (<?= $array['bezeichnungOrgform']; ?>)</h4>
|
||||
<?php switch(count($array['allowedNewTypes'])) {
|
||||
case 0: ?>
|
||||
<button class="btn btn-outline-secondary" type="button" disabled>
|
||||
<i class="fa-regular fa-plus fa-xl"></i> <?= $this->p->t('studierendenantrag', 'btn_new'); ?>
|
||||
</button>
|
||||
<?php
|
||||
break;
|
||||
case 1:
|
||||
?>
|
||||
<a class="btn btn-outline-secondary" href="<?= site_url('lehre/Studierendenantrag/' . strtolower($array['allowedNewTypes'][0]) . '/' . $prestudent_id); ?>"><i class="fa-regular fa-plus fa-xl"></i> <?= $array['allowedNewTypes'][0]; ?> <?= $this->p->t('studierendenantrag', 'btn_new'); ?></a>
|
||||
<?php
|
||||
break;
|
||||
default:
|
||||
?>
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="fa-regular fa-plus fa-xl"></i> <?= $this->p->t('studierendenantrag', 'btn_new'); ?>
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||
<?php foreach($array['allowedNewTypes'] as $type){ ?>
|
||||
<li><a class="dropdown-item" href="<?= site_url('lehre/Studierendenantrag/' . strtolower($type) . '/' . $prestudent_id); ?>"><?= $this->p->t('studierendenantrag', 'antrag_typ_' . $type); ?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
|
||||
<?php foreach ($array['allowedNewTypes'] as $type) { ?>
|
||||
<div class="alert alert-secondary">
|
||||
<p><?= $this->p->t('studierendenantrag', 'calltoaction_' . $type); ?></p>
|
||||
<hr>
|
||||
<a href="<?= site_url('lehre/Studierendenantrag/' . strtolower($type) . '/' . $prestudent_id); ?>" class="btn btn-outline-secondary">
|
||||
<i class="fa-regular fa-plus fa-xl"></i> <?= $this->p->t('studierendenantrag', 'antrag_typ_' . $type); ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@@ -26,11 +26,9 @@ $this->load->view(
|
||||
?>
|
||||
|
||||
<div id="wrapper" class="overflow-hidden">
|
||||
<?php if (!$frame) { ?>
|
||||
<div class="fhc-header">
|
||||
<div class="fhc-header" v-if="notinframe">
|
||||
<h1 class="h2"><?= $this->p->t('studierendenantrag', 'title_lvzuweisen', ['name' => $antrag->name]);?></h1>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="fhc-container row mt-3">
|
||||
<lv-zuweisung antrag-id="<?= $antrag_id; ?>" initial-status-code="<?= $antrag->status; ?>" initial-status-msg="<?= $antrag->statustyp; ?>"<?= ($antrag->status != Studierendenantragstatus_model::STATUS_CREATED && $antrag->status != Studierendenantragstatus_model::STATUS_LVSASSIGNED) ? ' disabled' : ''; ?>></lv-zuweisung>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user