puts the logic that adds the object informtion to the json reponse in the controllers instead of the models

This commit is contained in:
SimonGschnell
2024-09-11 09:50:04 +02:00
parent 1de658ace6
commit ac35ba3e27
3 changed files with 101 additions and 121 deletions
@@ -104,6 +104,12 @@ class Stundenplan extends FHCAPI_Controller
*/
public function getStundenplan(){
$this->load->model('ressource/Stundenplan_model', 'StundenplanModel');
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
// form validation
$this->load->library('form_validation');
$this->form_validation->set_data($_GET);
@@ -116,11 +122,51 @@ class Stundenplan extends FHCAPI_Controller
$start_date = $this->input->get('start_date', TRUE);
$end_date = $this->input->get('end_date', TRUE);
$this->load->model('ressource/Stundenplan_model', 'StundenplanModel');
// the stundenplan query needs the uid and a start and end date
$stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getStundenplanQuery(get_uid(),$start_date,$end_date));
$stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data);
$stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? [];
// get the benutzer object for the lektor of the lv
foreach ($stundenplan_data as $item) {
$lektor_obj_array = array();
$gruppe_obj_array = array();
// load lektor object
foreach ($item->lektor as $lv_lektor) {
$this->StundenplanModel->addLimit(1);
$lektor_object = $this->StundenplanModel->execReadOnlyQuery("
SELECT mitarbeiter_uid, vorname, nachname, kurzbz
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer benutzer ON benutzer.uid = mitarbeiter_uid
JOIN public.tbl_person person ON person.person_id = benutzer.person_id
WHERE kurzbz = ?", [$lv_lektor]);
if (isError($lektor_object)) {
$this->show_error(getError($lektor_object));
}
$lektor_object = current(getData($lektor_object));
// only provide needed information of the mitarbeiter object
$lektor_obj_array[] = $lektor_object;
}
// load gruppe object
foreach ($item->gruppe as $lv_gruppe) {
$lv_gruppe = strtr($lv_gruppe, ['(' => '', ')' => '', '"' => '']);
$lv_gruppe_array = explode(",", $lv_gruppe);
list($gruppe, $verband, $semester, $studiengang_kz, $gruppen_kuerzel) = $lv_gruppe_array;
$lv_gruppe_object = new stdClass();
$lv_gruppe_object->gruppe = $gruppe;
$lv_gruppe_object->verband = $verband;
$lv_gruppe_object->semester = $semester;
$lv_gruppe_object->studiengang_kz = $studiengang_kz;
$lv_gruppe_object->kuerzel = $gruppen_kuerzel;
$gruppe_obj_array[] = $lv_gruppe_object;
}
$item->lektor = $lektor_obj_array;
$item->gruppe = $gruppe_obj_array;
}
$this->terminateWithSuccess($stundenplan_data);
}
@@ -129,8 +175,7 @@ class Stundenplan extends FHCAPI_Controller
public function Reservierungen($ort_kurzbz = null)
{
$this->load->model('ressource/Reservierung_model', 'ReservierungModel');
$this->load->model('ressource/Stunde_model', 'StundeModel');
$this->load->model('ressource/Mitarbeiter_model','MitarbeiterModel');
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
//form validation
$this->load->library('form_validation');
@@ -143,18 +188,56 @@ class Stundenplan extends FHCAPI_Controller
$start_date = $this->input->get('start_date', TRUE);
$end_date = $this->input->get('end_date', TRUE);
// querying the stunden
$stunden = $this->StundeModel->load();
$stunden = $this->getDataOrTerminateWithError($stunden);
// querying the reservierungen
$result = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz);
$reservierungen = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz);
$result = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($result);
$reservierungen = $this->getDataOrTerminateWithError($reservierungen) ?? [];
foreach ($reservierungen as $reservierung) {
$lektor_obj_array = array();
$gruppe_obj_array = array();
// load lektor object
foreach ($reservierung->lektor as $lektor) {
$this->MitarbeiterModel->addLimit(1);
$lektor_object = $this->MitarbeiterModel->execReadOnlyQuery("
SELECT mitarbeiter_uid, vorname, nachname, kurzbz
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer benutzer ON benutzer.uid = mitarbeiter_uid
JOIN public.tbl_person person ON person.person_id = benutzer.person_id
WHERE mitarbeiter_uid = ?", [$lektor]);
if (isError($lektor_object)) {
$this->show_error(getError($lektor_object));
}
$lektor_object = current(getData($lektor_object));
// only provide needed information of the mitarbeiter object
$lektor_obj_array[] = $lektor_object;
}
// load gruppe object
foreach ($reservierung->gruppe as $lv_gruppe) {
$lv_gruppe = strtr($lv_gruppe, ['(' => '', ')' => '', '"' => '']);
$lv_gruppe_array = explode(",", $lv_gruppe);
list($gruppe, $verband, $semester, $studiengang_kz, $gruppen_kuerzel) = $lv_gruppe_array;
$lv_gruppe_object = new stdClass();
$lv_gruppe_object->gruppe = $gruppe;
$lv_gruppe_object->verband = $verband;
$lv_gruppe_object->semester = $semester;
$lv_gruppe_object->studiengang_kz = $studiengang_kz;
$lv_gruppe_object->kuerzel = $gruppen_kuerzel;
$gruppe_obj_array[] = $lv_gruppe_object;
}
$reservierung->gruppe = $gruppe_obj_array;
$reservierung->lektor = $lektor_obj_array;
}
$this->terminateWithSuccess($reservierungen);
}
@@ -67,58 +67,8 @@ class Reservierung_model extends DB_Model
ORDER BY datum, beginn
", is_null($ort_kurzbz) ?[getAuthUID(), getAuthUID(),$start_date,$end_date]: [$ort_kurzbz, $start_date, $end_date]);
if(isError($query_result)){
show_error(getError($query_result));
}
$query_result = getData($query_result) ?? [];
$this->load->model("ressrouce/Mitarbeiter_model","MitarbeiterModel");
foreach($query_result as $reservierung){
$lektor_obj_array = array();
$gruppe_obj_array = array();
// load lektor object
foreach ($reservierung->lektor as $lektor) {
$this->MitarbeiterModel->addLimit(1);
$lektor_object = $this->execReadOnlyQuery("
SELECT mitarbeiter_uid, vorname, nachname, kurzbz
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer benutzer ON benutzer.uid = mitarbeiter_uid
JOIN public.tbl_person person ON person.person_id = benutzer.person_id
WHERE mitarbeiter_uid = ?", [$lektor]);
if (isError($lektor_object)) {
$this->show_error(getError($lektor_object));
}
$lektor_object = current(getData($lektor_object));
// only provide needed information of the mitarbeiter object
$lektor_obj_array[] = $lektor_object;
}
// load gruppe object
foreach ($reservierung->gruppe as $lv_gruppe) {
$lv_gruppe = strtr($lv_gruppe, ['(' => '', ')' => '', '"' => '']);
$lv_gruppe_array = explode(",", $lv_gruppe);
list($gruppe, $verband, $semester, $studiengang_kz, $gruppen_kuerzel) = $lv_gruppe_array;
$lv_gruppe_object = new stdClass();
$lv_gruppe_object->gruppe = $gruppe;
$lv_gruppe_object->verband = $verband;
$lv_gruppe_object->semester = $semester;
$lv_gruppe_object->studiengang_kz = $studiengang_kz;
$lv_gruppe_object->kuerzel = $gruppen_kuerzel;
$gruppe_obj_array[] = $lv_gruppe_object;
}
$reservierung->gruppe = $gruppe_obj_array;
$reservierung->lektor = $lektor_obj_array;
}
return success($query_result);
return $query_result;
}
/**
@@ -142,7 +142,7 @@ class Stundenplan_model extends DB_Model
*/
public function stundenplanGruppierung($stundenplanViewQuery)
{
$gruppierteEvents = $this->execReadOnlyQuery("
$query_result = $this->execReadOnlyQuery("
SELECT
'lehreinheit' as type, beginn, ende, datum,
CONCAT(lehrfach,'-',lehrform) as topic,
@@ -182,60 +182,7 @@ class Stundenplan_model extends DB_Model
ORDER BY datum, beginn
");
if(isError($gruppierteEvents)){
$this->output(getError($gruppierteEvents));
}
$gruppierteEvents = getData($gruppierteEvents) ?? [];
// get the benutzer object for the lektor of the lv
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
foreach ($gruppierteEvents as $item) {
$lektor_obj_array = array();
$gruppe_obj_array = array();
// load lektor object
foreach ($item->lektor as $lv_lektor) {
$this->MitarbeiterModel->addLimit(1);
$lektor_object = $this->execReadOnlyQuery("
SELECT mitarbeiter_uid, vorname, nachname, kurzbz
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer benutzer ON benutzer.uid = mitarbeiter_uid
JOIN public.tbl_person person ON person.person_id = benutzer.person_id
WHERE kurzbz = ?",[$lv_lektor]);
if (isError($lektor_object)) {
$this->show_error(getError($lektor_object));
}
$lektor_object = current(getData($lektor_object));
// only provide needed information of the mitarbeiter object
$lektor_obj_array[] = $lektor_object;
}
// load gruppe object
foreach ($item->gruppe as $lv_gruppe) {
$lv_gruppe = strtr($lv_gruppe, ['(' => '', ')' => '', '"' => '']);
$lv_gruppe_array = explode(",", $lv_gruppe);
list($gruppe, $verband, $semester, $studiengang_kz, $gruppen_kuerzel) = $lv_gruppe_array;
$lv_gruppe_object = new stdClass();
$lv_gruppe_object->gruppe = $gruppe;
$lv_gruppe_object->verband = $verband;
$lv_gruppe_object->semester = $semester;
$lv_gruppe_object->studiengang_kz = $studiengang_kz;
$lv_gruppe_object->kuerzel = $gruppen_kuerzel;
$gruppe_obj_array[] = $lv_gruppe_object;
}
$item->lektor = $lektor_obj_array;
$item->gruppe = $gruppe_obj_array;
}
return success($gruppierteEvents);
return $query_result;
}
/**