mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 08:52:21 +00:00
new workflow Terminate of Studierendenantrag
- DB Update for new studierendenantrag_statustyp with studierendenantrag_statustyp_kurzbz = 'Storniert' - new permission student/studierendenantrag - possibility to set status to Terminated in case of new permission
This commit is contained in:
@@ -45,7 +45,8 @@ class Leitung extends FHCAPI_Controller
|
||||
'unpauseAntrag' => ['student/antragfreigabe:w', 'student/studierendenantrag:w'],
|
||||
'objectAntrag' => ['student/antragfreigabe:w', 'student/studierendenantrag:w'],
|
||||
'approveObjection' => ['student/antragfreigabe:w', 'student/studierendenantrag:w'],
|
||||
'denyObjection' => ['student/antragfreigabe:w', 'student/studierendenantrag:w']
|
||||
'denyObjection' => ['student/antragfreigabe:w', 'student/studierendenantrag:w'],
|
||||
'terminateAntrag' => ['student/antragstornieren:w']
|
||||
]);
|
||||
|
||||
// Libraries
|
||||
@@ -426,4 +427,37 @@ class Leitung extends FHCAPI_Controller
|
||||
|
||||
return $this->terminateWithSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function terminateAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules(
|
||||
'studierendenantrag_id',
|
||||
'Studierenden Antrag',
|
||||
[
|
||||
'required',
|
||||
['isEntitledToTerminateAntrag', [$this->antraglib, 'isEntitledToTerminateAntrag']],
|
||||
['antragCanBeTerminated', [$this->antraglib, 'antragCanBeTerminated']]
|
||||
],
|
||||
[
|
||||
'isEntitledToUnpauseAntrag' => $this->p->t('studierendenantrag', 'error_no_right'),
|
||||
'antragCanBeTerminated' => $this->p->t(
|
||||
'studierendenantrag',
|
||||
'error_not_terminated',
|
||||
['id' => $this->input->post('studierendenantrag_id')]
|
||||
)
|
||||
]
|
||||
);
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$studierendenantrag_id = $this->input->post('studierendenantrag_id');
|
||||
|
||||
$result = $this->antraglib->terminateAntrag($studierendenantrag_id, getAuthUID());
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
|
||||
return $this->terminateWithSuccess($studierendenantrag_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,9 +86,12 @@ class Studierendenantrag extends FHC_Controller
|
||||
|
||||
$stgA = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag') ?: [];
|
||||
|
||||
$permissionTerminateAntrag = $this->permissionlib->isBerechtigt('student/antragstornieren');
|
||||
|
||||
$this->load->view('lehre/Antrag/Leitung/List', [
|
||||
'stgA' => $stgA,
|
||||
'stgL' => $stgL
|
||||
'stgL' => $stgL,
|
||||
'permissionTerminateAntrag' => $permissionTerminateAntrag
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -1948,6 +1948,22 @@ class AntragLib
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
* @param string $insertvon
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function terminateAntrag($antrag_id, $insertvon)
|
||||
{
|
||||
$result = $this->_ci->StudierendenantragstatusModel->insert([
|
||||
'studierendenantrag_id' => $antrag_id,
|
||||
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_TERMINATED,
|
||||
'insertvon' => $insertvon
|
||||
]);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param integer $studierendenantrag_id
|
||||
@@ -2119,6 +2135,16 @@ class AntragLib
|
||||
return $this->hasAccessToAntrag($antrag_id, 'student/antragfreigabe');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isEntitledToTerminateAntrag($antrag_id)
|
||||
{
|
||||
return ($this->hasAccessToAntrag($antrag_id, 'student/antragstornieren'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
*
|
||||
@@ -2149,6 +2175,27 @@ class AntragLib
|
||||
return $this->_ci->StudierendenantragModel->isManuallyPaused($antrag_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function antragCanBeTerminated($antrag_id)
|
||||
{
|
||||
$this->_ci->StudierendenantragModel->db->where_not_in('campus.get_status_studierendenantrag(studierendenantrag_id)', [
|
||||
Studierendenantragstatus_model::STATUS_DEREGISTERED,
|
||||
Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
Studierendenantragstatus_model::STATUS_TERMINATED
|
||||
]);
|
||||
$result = $this->_ci->StudierendenantragModel->loadWhere([
|
||||
'studierendenantrag_id' => $antrag_id,
|
||||
'typ' => Studierendenantrag_model::TYP_WIEDERHOLUNG
|
||||
]);
|
||||
|
||||
return hasData($result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
* @param string|array $status
|
||||
|
||||
@@ -16,6 +16,7 @@ class Studierendenantragstatus_model extends DB_Model
|
||||
const STATUS_OBJECTION_DENIED = 'EinspruchAbgelehnt';
|
||||
const STATUS_DEREGISTERED = 'Abgemeldet';
|
||||
const STATUS_PAUSE = 'Pause';
|
||||
const STATUS_TERMINATED = 'Storniert';
|
||||
|
||||
const INSERTVON_ABMELDUNGSTGL = "AbmeldungStgl";
|
||||
const INSERTVON_DEREGISTERED = "Studienabbruch";
|
||||
|
||||
@@ -44,6 +44,7 @@ $this->load->view(
|
||||
<studierendenantrag-leitung
|
||||
:stg-a="<?= htmlspecialchars(json_encode(array_values($stgA))); ?>"
|
||||
:stg-l="<?= htmlspecialchars(json_encode(array_values($stgL))); ?>"
|
||||
:permission-terminate-antrag="<?= json_encode($permissionTerminateAntrag); ?>"
|
||||
>
|
||||
</studierendenantrag-leitung>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user