Abmeldung durch Stgl: status => typ

This commit is contained in:
cgfhtw
2023-07-10 10:19:06 +02:00
parent 5eca034911
commit 3fce448451
12 changed files with 204 additions and 13 deletions
@@ -76,6 +76,23 @@ class Abmeldung extends FHC_Controller
$this->outputJsonSuccess(getData($result));
}
public function getDetailsForAntrag($studierendenantrag_id)
{
if (!$this->antraglib->isEntitledToShowAntrag($studierendenantrag_id)) return show_404();
$result = $this->antraglib->getDetailsForAntrag($studierendenantrag_id);
if (isError($result)) {
return $this->outputJsonError(getError($result));
}
$data = getData($result);
if ($data->typ !== Studierendenantrag_model::TYP_ABMELDUNG_STGL)
return show_404();
$this->outputJsonSuccess($data);
}
public function createAntrag()
{
$this->load->library('form_validation');
@@ -201,7 +201,7 @@ class Leitung extends FHC_Controller
public function canBeObjected($studierendenantrag_id)
{
return $this->antraglib->hasStatus($studierendenantrag_id, Studierendenantragstatus_model::STATUS_APPROVED_STGL);
return $this->antraglib->hasType($studierendenantrag_id, Studierendenantrag_model::TYP_ABMELDUNG_STGL);
}
public function isObjected($studierendenantrag_id)
@@ -241,6 +241,11 @@ class Leitung extends FHC_Controller
return $this->outputJsonSuccess($studierendenantrag_id);
}
public function approveAbmeldungStgl()
{
return $this->approveAbmeldung();
}
public function approveUnterbrechung()
{
$this->load->library('form_validation');
@@ -129,6 +129,15 @@ class Studierendenantrag extends FHC_Controller
]);
}
public function abmeldungstgl($prestudent_id, $studierendenantrag_id)
{
$this->load->view('lehre/Antrag/Create', [
'prestudent_id' => $prestudent_id,
'studierendenantrag_id' => $studierendenantrag_id,
'antrag_type' => 'AbmeldungStgl'
]);
}
public function unterbrechung($prestudent_id, $studierendenantrag_id = null)
{
$this->load->view('lehre/Antrag/Create', [
+25 -6
View File
@@ -85,15 +85,15 @@ class AntragLib
$prestudent = getData($result)[0];
if($prestudent->person_id == getAuthPersonId())
$status = Studierendenantragstatus_model::STATUS_CREATED;
$typ = Studierendenantrag_model::TYP_ABMELDUNG;
else
$status = Studierendenantragstatus_model::STATUS_CREATED_STGL;
$typ = Studierendenantrag_model::TYP_ABMELDUNG_STGL;
$result = $this->_ci->StudierendenantragModel->insert([
'prestudent_id' => $prestudent_id,
'studiensemester_kurzbz'=> $studiensemester_kurzbz,
'datum' => date('c'),
'typ' => Studierendenantrag_model::TYP_ABMELDUNG,
'typ' => $typ,
'insertvon' => $insertvon,
'grund' => $grund
]);
@@ -105,7 +105,7 @@ class AntragLib
$result = $this->_ci->StudierendenantragstatusModel->insert([
'studierendenantrag_id' => $antrag_id,
'studierendenantrag_statustyp_kurzbz' => $status,
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_CREATED,
'insertvon' => $insertvon
]);
@@ -148,7 +148,7 @@ class AntragLib
$result = $this->_ci->StudierendenantragstatusModel->insert([
'studierendenantrag_id' => $studierendenantrag_id,
'studierendenantrag_statustyp_kurzbz' => $status_approved,
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
'insertvon' => $insertvon
]);
if (isError($result))
@@ -160,7 +160,7 @@ class AntragLib
$errors[] = getError($resultPrestudent);
continue;
}
if ($status_approved == Studierendenantragstatus_model::STATUS_APPROVED)
if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG)
{
$antrag = getData($resultPrestudent)[0];
@@ -1482,6 +1482,25 @@ class AntragLib
return in_array($lastStatus->studierendenantrag_statustyp_kurzbz, $status);
}
/**
* @param integer $antrag_id
* @param string|array $type
*
* @return boolean
*/
public function hasType($antrag_id, $type)
{
$result = $this->_ci->StudierendenantragModel->load($antrag_id);
if (!hasData($result))
return false;
$antrag = getData($result)[0];
if (!is_array($type))
$type = [$type];
return in_array($antrag->typ, $type);
}
/**
* @param integer $antrag_id
@@ -3,6 +3,7 @@ class Studierendenantrag_model extends DB_Model
{
const TYP_ABMELDUNG = 'Abmeldung';
const TYP_ABMELDUNG_STGL = 'AbmeldungStgl';
const TYP_UNTERBRECHUNG = 'Unterbrechung';
const TYP_WIEDERHOLUNG = 'Wiederholung';
@@ -567,7 +567,7 @@ 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 ).')', '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');
}