added collision checks on creation

This commit is contained in:
ma0048
2026-06-01 11:18:53 +02:00
parent 9ac9804563
commit e62848c773
2 changed files with 79 additions and 11 deletions
+73 -10
View File
@@ -437,6 +437,8 @@ class KalenderLib
}
public function addKalenderEvent($start_date, $end_date, $lehreinheit_id, $ort_kurzbz)
{
$this->_ci->KalenderModel->db->trans_start();
$kalenderresult = $this->_ci->KalenderModel->insert(
array (
'von' => $start_date,
@@ -448,7 +450,7 @@ class KalenderLib
)
);
if(isSuccess($kalenderresult) && hasData($kalenderresult))
if (isSuccess($kalenderresult) && hasData($kalenderresult))
{
$kalender_id = getData($kalenderresult);
@@ -459,13 +461,39 @@ class KalenderLib
)
);
if(isSuccess($kalenderlehreinheitresult) && !is_null($ort_kurzbz))
if (isSuccess($kalenderlehreinheitresult) && !is_null($ort_kurzbz))
{
return $this->_addKalenderOrt($kalender_id, $ort_kurzbz);
$ortresult = $this->_addKalenderOrt($kalender_id, $ort_kurzbz);
if (isError($ortresult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $ortresult;
}
}
$entryResult = $this->_loadKalenderEntry($kalender_id);
if (isError($entryResult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $entryResult;
}
$kalender_entry = getData($entryResult);
$errors = $this->_ci->collisionchecker->run($kalender_entry);
if (!empty($errors))
{
$this->_ci->KalenderModel->db->trans_rollback();
return error($errors);
}
$this->_ci->KalenderModel->db->trans_complete();
return $kalenderlehreinheitresult;
}
$this->_ci->KalenderModel->db->trans_rollback();
return $kalenderresult;
}
public function addReservierung($titel, $beschreibung, $ort_kurzbz, $start_date, $end_date, $teilnehmer, $specialFinalGroups, $specialGroups, $groups)
@@ -485,7 +513,7 @@ class KalenderLib
return error ('lvplan/bereitsReserviert');
}
$this->_ci->KalenderModel->db->trans_start();
$kalenderresult = $this->_ci->KalenderModel->insert(
array (
@@ -498,7 +526,7 @@ class KalenderLib
)
);
if(isSuccess($kalenderresult) && hasData($kalenderresult))
if (isSuccess($kalenderresult) && hasData($kalenderresult))
{
$kalender_id = getData($kalenderresult);
@@ -512,12 +540,22 @@ class KalenderLib
foreach ($teilnehmer as $teil)
{
$this->_addTeilnehmerToEvent($kalender_id, $teil['uid'], $teil['rolle']);
$teilnehmerresult = $this->_addTeilnehmerToEvent($kalender_id, $teil['uid'], $teil['rolle']);
if (isError($teilnehmerresult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $teilnehmerresult;
}
}
foreach($specialFinalGroups as $group)
foreach ($specialFinalGroups as $group)
{
$this->_addFinalGroupToEvent($kalender_id, $group['gid'], !($group['lehrverband'] === 'false'), $group['gruppe_kurzbz'], $group['studiensemester_kurzbz'], $group['rolle']);
$specialgroupresult = $this->_addFinalGroupToEvent($kalender_id, $group['gid'], !($group['lehrverband'] === 'false'), $group['gruppe_kurzbz'], $group['studiensemester_kurzbz'], $group['rolle']);
if (isError($specialgroupresult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $specialgroupresult;
}
}
/* foreach ($specialGroups as $group)
@@ -530,13 +568,38 @@ class KalenderLib
$this->_addGroupToEvent($kalender_id, $group['stg_kz'], $group['semester'], $group['verband'], $group['gruppe'], $group['rolle']);
}*/
if(isSuccess($kalendereventresult) && !is_null($ort_kurzbz))
if (isSuccess($kalendereventresult) && !is_null($ort_kurzbz))
{
return $this->_addKalenderOrt($kalender_id, $ort_kurzbz);
$ortresult = $this->_addKalenderOrt($kalender_id, $ort_kurzbz);
if (isError($ortresult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $ortresult;
}
}
$entryResult = $this->_loadKalenderEntry($kalender_id);
if (isError($entryResult))
{
$this->_ci->KalenderModel->db->trans_rollback();
return $entryResult;
}
$kalender_entry = getData($entryResult);
$errors = $this->_ci->collisionchecker->run($kalender_entry);
if (!empty($errors))
{
$this->_ci->KalenderModel->db->trans_rollback();
return error($errors);
}
$this->_ci->KalenderModel->db->trans_complete();
return $kalendereventresult;
}
$this->_ci->KalenderModel->db->trans_rollback();
return $kalenderresult;
}
private function _addTeilnehmerToEvent($kalender_id, $uid, $rolle)
+6 -1
View File
@@ -132,7 +132,12 @@ export default {
<span class="fw-semibold small w-50" v-tooltip="course.lehrfach_bez">{{ course.lehrfach }} {{ course.lehrform }}</span>
<span class="fw-semibold small w-50" v-tooltip="course.raumtypalternativ">{{ course.raumtyp }}</span>
</div>
<!--TODO(david) entfernen, dient nur für das mappen mit der lvverwaltung-->
<div class="d-flex gap-1">
<span class="small w-50" v-tooltip="course.lehreinheit_id">{{ course.lehreinheit_id[0] }} </span>
</div>
<div class="d-flex gap-1 text-muted">
<div class="w-50 d-flex flex-column" v-tooltip="course.anmerkung">
<span