enabled updating of oehbeitrag values

This commit is contained in:
KarpAlex
2021-05-31 23:20:56 +02:00
parent fc3921ecad
commit df8c946bb2
5 changed files with 349 additions and 64 deletions
+80 -12
View File
@@ -13,6 +13,7 @@ class Oehbeitrag extends Auth_Controller
'index' => 'admin:r',// TODO which Berechtigung?
'getValidStudiensemester' => 'admin:r',
'addOehbeitrag' => 'admin:rw',
'updateOehbeitrag' => 'admin:rw',
'deleteOehbeitrag' => 'admin:rw'
)
);
@@ -38,14 +39,16 @@ class Oehbeitrag extends Auth_Controller
public function getValidStudiensemester()
{
$oehbeitrag_id = $this->input->get('oehbeitrag_id');
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
$studiensemester = array();
$studiensemesterres = $this->OehbeitragModel->getUnassignedStudiensemester(self::STUDIENSEMESTER_START);
$studiensemesterres = $this->OehbeitragModel->getUnassignedStudiensemester(self::STUDIENSEMESTER_START, $oehbeitrag_id_arr);
if (isError($studiensemesterres))
{
$this->outputJsonError(getError($studiensemesterres));
die();
return;
}
if (hasData($studiensemesterres))
@@ -63,9 +66,9 @@ class Oehbeitrag extends Auth_Controller
if ($bis_studiensemester_kurzbz == 'null')
$bis_studiensemester_kurzbz = null;
if (!is_numeric($studierendenbeitrag))
if (!$this->_checkAmount($studierendenbeitrag))
$this->outputJsonError('Ungültiger Studierendenbeitrag');
elseif (!is_numeric($versicherung))
elseif (!$this->_checkAmount($versicherung))
$this->outputJsonError('Ungültige Versicherung');
else
{
@@ -82,13 +85,65 @@ class Oehbeitrag extends Auth_Controller
'bis_studiensemester_kurzbz' => $bis_studiensemester_kurzbz
);
$insertRes = $this->OehbeitragModel->insert($data);
$this->outputJson($insertRes);
$this->outputJson($this->OehbeitragModel->insert($data));
}
}
}
public function updateOehbeitrag()
{
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
$data = $this->input->post("data");
if (!is_numeric($oehbeitrag_id) || isEmptyArray($data))
{
$this->outputJsonError("Ungültige Parameter");
return;
}
foreach ($data as $idx => $value)
{
if ($idx == 'studierendenbeitrag' || $idx == 'versicherung')
{
if (!$this->_checkAmount($value))
{
$this->outputJsonError("Ungültiger $idx");
return;
}
}
elseif ($idx == 'von_studiensemester_kurzbz' || $idx == 'bis_studiensemester_kurzbz')
{
$this->OehbeitragModel->addSelect('von_studiensemester_kurzbz, bis_studiensemester_kurzbz');
$vonBisStudiensemesterRes = $this->OehbeitragModel->load($oehbeitrag_id);
if (!hasData($vonBisStudiensemesterRes))
{
$this->outputJsonError("Fehler beim Holen des Öhbeitrags");
return;
}
$vonBisStudiensemester = getData($vonBisStudiensemesterRes);
$von_studiensemester_kurzbz = $idx == 'von_studiensemester_kurzbz' ? $value : $vonBisStudiensemester[0]->von_studiensemester_kurzbz;
if ($idx == 'bis_studiensemester_kurzbz')
$bis_studiensemester_kurzbz = $data[$idx] = $value == 'null' ? null : $value;
else
$bis_studiensemester_kurzbz = $vonBisStudiensemester[0]->bis_studiensemester_kurzbz;
$checkStudiensemester = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id);
if (isError($checkStudiensemester))
{
$this->outputJsonError(getError($checkStudiensemester));
return;
}
}
}
$this->outputJson($this->OehbeitragModel->update($oehbeitrag_id, $data));
}
public function deleteOehbeitrag()
{
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
@@ -98,12 +153,19 @@ class Oehbeitrag extends Auth_Controller
private function _loadOehbeitraege()
{
$this->OehbeitragModel->addJoin('public.tbl_studiensemester', 'tbl_oehbeitrag.von_studiensemester_kurzbz = tbl_studiensemester.studiensemester_kurzbz');
$this->OehbeitragModel->addOrder('public.tbl_studiensemester.start', 'DESC');
$this->OehbeitragModel->addSelect('oehbeitrag_id, von_studiensemester_kurzbz, bis_studiensemester_kurzbz, studierendenbeitrag, versicherung, sem_von.start as von_datum, sem_bis.ende as bis_datum');
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_von', 'tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz');
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_bis', 'tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz', 'LEFT');
$this->OehbeitragModel->addOrder('sem_von.start', 'DESC');
return $this->OehbeitragModel->load();
}
private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz)
private function _checkAmount($amount)
{
return is_numeric($amount) && $amount <= 99999.99;
}
private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id = null)
{
$regex = "/^(WS|SS)\d{4}$/";
if (!preg_match($regex, $von_studiensemester_kurzbz))
@@ -130,7 +192,13 @@ class Oehbeitrag extends Auth_Controller
if ($bis_studiensemester_kurzbz != null && new DateTime($vonStudiensemester) > new DateTime($bisStudiensemester))
return error("Von-Studiensemester größer als Bis-Studiensemester");
$assignableRes = $this->OehbeitragModel->checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz);
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
$assignableRes = $this->OehbeitragModel->checkIfStudiensemesterAssignable(
$von_studiensemester_kurzbz,
$bis_studiensemester_kurzbz,
$oehbeitrag_id_arr
);
if (isError($assignableRes))
return $assignableRes;
+26 -8
View File
@@ -34,30 +34,40 @@ class Oehbeitrag_model extends DB_Model
}
/**
* Gets all Studiensemester for which no Oehbeitrag value assignment.
* Gets all Studiensemester for which no Oehbeitrag value assignment exists.
* @param string $start_studiensemester_kurzbz semester before the given semester are ignored
* @return object
*/
public function getUnassignedStudiensemester($start_studiensemester_kurzbz)
public function getUnassignedStudiensemester($start_studiensemester_kurzbz, $excluded_oehbeitrag_id = array())
{
$params = array($start_studiensemester_kurzbz);
$qry = "SELECT * FROM public.tbl_studiensemester sem
WHERE sem.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)
AND NOT EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag oeh
JOIN public.tbl_studiensemester oeh_von ON oeh.von_studiensemester_kurzbz = oeh_von.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester oeh_bis ON oeh.bis_studiensemester_kurzbz = oeh_bis.studiensemester_kurzbz
WHERE sem.start::date >= oeh_von.start::date AND (sem.start::date <= oeh_bis.start::date OR oeh_bis.studiensemester_kurzbz IS NULL))
ORDER BY sem.start";
WHERE sem.start::date >= oeh_von.start::date AND (sem.start::date <= oeh_bis.start::date OR oeh_bis.studiensemester_kurzbz IS NULL)";
return $this->execQuery($qry, array($start_studiensemester_kurzbz));
if (!isEmptyArray($excluded_oehbeitrag_id))
{
$qry .= " AND oehbeitrag_id NOT IN ?";
$params[] = $excluded_oehbeitrag_id;
}
$qry .= ") ORDER BY sem.start";
return $this->execQuery($qry, $params);
}
/**
* Checks if a Öhbeitrag can be assigned for a Studiensemester range.
* @param string $von_studiensemester_kurzbz
* @param string $bis_studiensemester_kurzbz
* @return object
* @param array $excluded_oehbeitrag_id
* @return object array with true if assignable, with false if not
*/
public function checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz = null)
public function checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz = null, $excluded_oehbeitrag_id = array())
{
$params = array($von_studiensemester_kurzbz);
@@ -73,7 +83,15 @@ class Oehbeitrag_model extends DB_Model
$allStdSemSpanQry .= " AND EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag
JOIN public.tbl_studiensemester sem_von ON tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester sem_bis ON tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz
WHERE sem.start >= sem_von.start AND (sem.start <= sem_bis.start OR sem_bis.studiensemester_kurzbz IS NULL))";
WHERE sem.start >= sem_von.start AND (sem.start <= sem_bis.start OR sem_bis.studiensemester_kurzbz IS NULL)";
if (!isEmptyArray($excluded_oehbeitrag_id))
{
$allStdSemSpanQry .= " AND oehbeitrag_id NOT IN ?";
$params[] = $excluded_oehbeitrag_id;
}
$allStdSemSpanQry .= ")";
$nrAssigned = $this->execQuery($allStdSemSpanQry, $params);
+14 -6
View File
@@ -12,7 +12,7 @@ $this->load->view(
'dialoglib' => true,
'ajaxlib' => true,
'navigationwidget' => true,
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css'/*, 'public/css/codex/oehbeitrag.css'*/),
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/codex/oehbeitrag.css'),
'customJSs' => array('public/js/tablesort/tablesort.js', 'public/js/codex/oehbeitrag.js')
)
);
@@ -41,7 +41,7 @@ $this->load->view(
<thead>
<tr>
<th>G&uuml;ltig von</th>
<th>G&uuml;ltig bis (inkl.)</th>
<th>G&uuml;ltig bis</th>
<th>Studierendenbetrag</th>
<th>Versicherungsbetrag</th>
<th id="actionHeading">Aktion</th>
@@ -50,10 +50,18 @@ $this->load->view(
<tbody>
<?php foreach ($oehbeitraege as $oehbeitrag): ?>
<tr>
<td><?php echo $oehbeitrag->von_studiensemester_kurzbz ?></td>
<td><?php echo $oehbeitrag->bis_studiensemester_kurzbz == null ? 'unbeschr&aumlnkt' : $oehbeitrag->bis_studiensemester_kurzbz ?></td>
<td><?php echo number_format($oehbeitrag->studierendenbeitrag, 2, ',', '.') ?></td>
<td><?php echo number_format($oehbeitrag->versicherung, 2, ',', '.') ?></td>
<td><?php echo date_format(date_create($oehbeitrag->von_datum), 'd.m.Y') . '/' . $oehbeitrag->von_studiensemester_kurzbz ?>
<i class="fa fa-edit editVonStudiensemester" id="edit_von_studiensemester_<?php echo $oehbeitrag->oehbeitrag_id ?>"></i>
</td>
<td><?php echo $oehbeitrag->bis_studiensemester_kurzbz == null ? 'unbeschr&aumlnkt' : (date_format(date_create($oehbeitrag->bis_datum), 'd.m.Y') . '/' . $oehbeitrag->bis_studiensemester_kurzbz) ?>
<i class="fa fa-edit editBisStudiensemester" id="edit_bis_studiensemester_<?php echo $oehbeitrag->oehbeitrag_id ?>"></i>
</td>
<td><?php echo number_format($oehbeitrag->studierendenbeitrag, 2, ',', '.') ?>
<i class="fa fa-edit editStudierendenbeitrag" id="edit_studierendenbeitrag_<?php echo $oehbeitrag->oehbeitrag_id ?>"></i>
</td>
<td><?php echo number_format($oehbeitrag->versicherung, 2, ',', '.') ?>
<i class="fa fa-edit editVersicherung" id="edit_versicherung_<?php echo $oehbeitrag->oehbeitrag_id ?>"></i>
</td>
<td><button class="btn btn-default deleteBtn" id="delete_<?php echo $oehbeitrag->oehbeitrag_id ?>">L&ouml;schen</button></td>
</tr>
<?php endforeach; ?>