diff --git a/application/core/Tag_Controller.php b/application/core/Tag_Controller.php index ecfb6f5de..44fd06891 100644 --- a/application/core/Tag_Controller.php +++ b/application/core/Tag_Controller.php @@ -100,7 +100,7 @@ class Tag_Controller extends FHCAPI_Controller $this->NotiztypModel->addSelect( "typ_kurzbz as tag_typ_kurzbz, - array_to_json(bezeichnung_mehrsprachig::varchar[])->>". $language. " as bezeichnung, + array_to_json(bezeichnung_mehrsprachig::varchar[])->>0 as bezeichnung, style, beschreibung, tag, diff --git a/application/libraries/TagLib.php b/application/libraries/TagLib.php index 5724d3ff5..721215965 100644 --- a/application/libraries/TagLib.php +++ b/application/libraries/TagLib.php @@ -39,15 +39,12 @@ class TagLib // Libraries $this->_ci->load->library('PermissionLib'); $this->_ci->load->library('PrestudentLib'); - - } public function updateAutomatedTags($tag, $inputData) { /* - $inputData expected pattern - + $params array expected pattern [ [ 'prestudent_id' => 123456, @@ -64,6 +61,8 @@ class TagLib $zeitraum = []; $prestudentIds = []; + //TODO(Manu) check minimal input: + foreach ($inputData as $row) { $pid = $row['prestudent_id']; @@ -74,7 +73,6 @@ class TagLib 'bis' => $row['bis'] ?? null ]; } - $prestudentIds = array_unique($prestudentIds); // --------------------------------- @@ -239,11 +237,18 @@ class TagLib ]); } - public function updateAutomatedTagsForPrestudent($tag, $prestudent_id) + public function updateAutomatedTagsForPrestudent_DEPR($tag, $prestudent_id) { + $_ci = get_instance(); + $_ci->addMeta( + 'IN OLD FUNCTION updateTags', $tag + ); $return = null; $notiz_id = null; + //von und bis auslesen + + $this->_ci->NotizModel->addSelect('nz.notiz_id'); $this->_ci->NotizModel->addSelect('prestudent_id'); $this->_ci->NotizModel->addJoin('public.tbl_notizzuordnung nz', 'notiz_id'); @@ -275,6 +280,7 @@ class TagLib $return = ['recycled' => $notiz_id]; } else + { //TODO(Manu) refactor for recycle, add $resultInsertNotiz = $this->_ci->NotizModel->insert(array( @@ -303,28 +309,96 @@ class TagLib return success($return); } + public function updateAutomatedTagsForPrestudent(array $params) + { + $return = null; + $notiz_id = null; + + $von = $params['von']; + $bis = $params['bis']; + $tag = $params['kurzbz']; + $prestudent_id = $params['prestudent_id']; + + $this->_ci->NotizModel->addSelect('nz.notiz_id'); + $this->_ci->NotizModel->addSelect('prestudent_id'); + $this->_ci->NotizModel->addJoin('public.tbl_notizzuordnung nz', 'notiz_id'); + $resultAllTags = $this->_ci->NotizModel->loadWhere([ + 'typ' => $tag, + 'prestudent_id' => $prestudent_id + ]); + if(hasData($resultAllTags)) + { + $notiz_id = $resultAllTags->retval[0]->notiz_id; + } + + //RECYCLE + if ($notiz_id !== null) + { + //TODO(Manu) refactor for recycle, add + $resultUpdateNotiz = $this->_ci->NotizModel->update( + [ + 'notiz_id' => $notiz_id + ], + array( + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => getAuthUID(), + )); + + if (isError($resultUpdateNotiz)) + return error ('Error occurred update Result ' . $notiz_id); + + $return = ['recycled' => $notiz_id]; + } + else + + { + $resultInsertNotiz = $this->_ci->NotizModel->insert(array( + 'titel' => 'TAG', + 'text' => 'AUTOMATED TAG', + 'verfasser_uid' => getAuthUID(), + 'erledigt' => false, + 'insertamum' => date('Y-m-d H:i:s'), + 'insertvon' => getAuthUID(), + 'typ' => $tag, + 'start' => $von, + 'ende' => $bis + )); + + if (isError($resultInsertNotiz)) + return error ('Error occurred insert Result ' . $prestudent_id); + + $resultInsertZuordnung = $this->_ci->NotizzuordnungModel->insert(array( + 'notiz_id' => $resultInsertNotiz->retval, + self::TYP_ZUORDNUNG => $prestudent_id + )); + + if (isError($resultInsertZuordnung)) + return error ('Error occurred insert Zuordnung' . $prestudent_id); + + $return = ['added' => $resultInsertNotiz->retval]; + } + return success($return); + } + /* * main function for rebuild Tags for single prestudent * */ public function rebuildTagsForPrestudent($prestudent_id) { $automatedTagsRes = $this->_ci->NotiztypModel->loadWhere(array('automatisiert' => true, 'taglib IS NOT NULL' => null)); - //echo $this->NotiztypModel->db->last_query(); $automatedTags = hasData($automatedTagsRes) ? getData($automatedTagsRes) : []; $result = $this->_ci->StudiensemesterModel->getLastOrAktSemester(); if (isError($result)) - return error ('Error occurred during retrieving studiensemester'); + return error('Error occurred during retrieving studiensemester'); if (empty($result->retval) || !isset($result->retval[0])) { return error('No studiensemester found'); } $studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz ?? null; - print_r($automatedTags); - $return = []; - foreach($automatedTags as $autoTag) + foreach ($automatedTags as $autoTag) { // getPath: must not be lost $filePath = APPPATH . 'libraries/' . $autoTag->taglib . '.php'; // APPPATH = application/ @@ -338,37 +412,40 @@ class TagLib // className without PATH (basename) $className = basename($autoTag->taglib); + $kurz_bz = $autoTag->typ_kurzbz; $obj = new $className(); $criteriaIsSet = $obj->isCriteriaSetFor([ 'prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $studiensemester_kurzbz ]); - //$return = $this->_ci->PrestudentstatusModel->db->last_query(); - $kurz_bz = $autoTag->typ_kurzbz; - // $return[$kurz_bz] = $criteriaIsSet; - - if($criteriaIsSet) + if (hasData($criteriaIsSet)) { - $result = $this->updateAutomatedTagsForPrestudent($kurz_bz, $prestudent_id); + $von = isset($criteriaIsSet->retval[0]->von) ? $criteriaIsSet->retval[0]->von : ''; + $bis = isset($criteriaIsSet->retval[0]->bis) ? $criteriaIsSet->retval[0]->bis : ''; + + $params = [ + 'von' => $von, + 'bis' => $bis, + 'kurzbz' => $autoTag->typ_kurzbz, + 'prestudent_id' => $prestudent_id + ]; + + $result = $this->updateAutomatedTagsForPrestudent($params); if (isError($result)) - return error ('Error occurred during updateAutomatedTags' . $kurz_bz); + return error('Error occurred during updateAutomatedTags' . $kurz_bz); - else - $return[$kurz_bz] = $result; + return $result; } - else { + else + { $result = $this->checkForDelete($kurz_bz, $prestudent_id); - if($result != null) + if ($result != null) $return[$kurz_bz] = $result; } - } - - return success($return); - } public function checkForDelete($tag, $prestudent_id) diff --git a/application/libraries/tags/CoreDoubleDegreeTagLib.php b/application/libraries/tags/CoreDoubleDegreeTagLib.php index 038d29ae1..6de5b053d 100644 --- a/application/libraries/tags/CoreDoubleDegreeTagLib.php +++ b/application/libraries/tags/CoreDoubleDegreeTagLib.php @@ -49,6 +49,7 @@ class CoreDoubleDegreeTagLib public function isCriteriaSetFor(array $params) { + if(!isset($params['prestudent_id']) || !isset($params['studiensemester_kurzbz'])) { return false; @@ -57,18 +58,26 @@ class CoreDoubleDegreeTagLib $semester = $params['studiensemester_kurzbz']; $prestudent_id = $params['prestudent_id']; + $this->ci->MobilitaetModel->addSelect('prestudent_id'); + $this->ci->MobilitaetModel->addSelect('start as von'); + $this->ci->MobilitaetModel->addSelect('ende as bis'); + $this->ci->MobilitaetModel->addJoin('bis.tbl_gsprogramm', 'gsprogramm_id'); + $this->ci->MobilitaetModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); + $result = $this->ci->MobilitaetModel->loadWhere(array( 'gsprogrammtyp_kurzbz' => 'Double', 'studiensemester_kurzbz' => $semester, 'prestudent_id' => $prestudent_id )); + if(hasData($result)) { - return true; + //array mit prestudent_id, von und bis + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreJgvTagLib.php b/application/libraries/tags/CoreJgvTagLib.php index 028c172a2..7342a38ff 100644 --- a/application/libraries/tags/CoreJgvTagLib.php +++ b/application/libraries/tags/CoreJgvTagLib.php @@ -56,10 +56,10 @@ class CoreJgvTagLib if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreMissingZgvTagLib.php b/application/libraries/tags/CoreMissingZgvTagLib.php index f108adb78..1ad87ab7a 100644 --- a/application/libraries/tags/CoreMissingZgvTagLib.php +++ b/application/libraries/tags/CoreMissingZgvTagLib.php @@ -73,10 +73,10 @@ class CoreMissingZgvTagLib )); if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreOutgoingTagLib.php b/application/libraries/tags/CoreOutgoingTagLib.php index 185c3a92b..146513c6d 100644 --- a/application/libraries/tags/CoreOutgoingTagLib.php +++ b/application/libraries/tags/CoreOutgoingTagLib.php @@ -55,67 +55,11 @@ class CoreOutgoingTagLib $result = $this->ci->BisioModel->isPrestudentOutgoing($semester, $prestudent_id); + if (hasData($result)) { - return true; - } else - return false; - } - -/* if(hasData($result)) - { - return array( - $result - ); - - var_dump($result); - die(); - - $row = $result->data->retval[0] ?? null; - return [ - 'prestudent_id' => $row->prestudent_id, //trying to get property of non-object - 'von' => $row->von, //trying to get property of non-object - 'bis' => $row->bis //trying to get property of non-object - ]; - - - return current($result);//-> warum retvall = [] - return getData($result); //-> warum retvall = [] - - $row = $result->data->retval[0] ?? null; - $row = $result->data->retval[0] ?? null; - return [ - 'prestudent_id' => $row->prestudent_id, - 'von' => $row->von, - 'bis' => $row->bis - ]; - } - else - return false;*/ - - //return $result; -/* if(hasData($result)) - { - $data = $result->retval; return $result; - return [ - 'prestudent_id' => $data->prestudent_id, - 'von' => $data->von, - 'bis' => $data->bis - ]; - } - else - return [ - 'prestudent_id' => $prestudent_id, - 'von' => null, - 'bis' => null - ];*/ - -/* return (object) array( - 'data' => $data - );*/ - - // return $data; - - //} + } else + return null; + } } diff --git a/application/libraries/tags/CorePrewiederholerTagLib.php b/application/libraries/tags/CorePrewiederholerTagLib.php index a968fa9a7..f0dee27b3 100644 --- a/application/libraries/tags/CorePrewiederholerTagLib.php +++ b/application/libraries/tags/CorePrewiederholerTagLib.php @@ -55,6 +55,12 @@ class CorePrewiederholerTagLib $semester = $params['studiensemester_kurzbz']; $prestudent_id = $params['prestudent_id']; + $this->ci->PrestudentstatusModel->addSelect('prestudent_id'); + $this->ci->PrestudentstatusModel->addSelect('start as von'); + $this->ci->PrestudentstatusModel->addSelect('ende as bis'); + + $this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); + $result = $this->ci->PrestudentstatusModel->loadWhere(array( 'statusgrund_id' => 15, 'studiensemester_kurzbz' => $semester, @@ -62,10 +68,10 @@ class CorePrewiederholerTagLib )); if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreStbErhoehtTagLib.php b/application/libraries/tags/CoreStbErhoehtTagLib.php index 2c0b47d2e..76269e998 100644 --- a/application/libraries/tags/CoreStbErhoehtTagLib.php +++ b/application/libraries/tags/CoreStbErhoehtTagLib.php @@ -57,7 +57,12 @@ class CoreStbErhoehtTagLib $semester = $params['studiensemester_kurzbz']; $prestudent_id = $params['prestudent_id']; + $this->ci->KontoModel->addSelect('prestudent_id'); + $this->ci->KontoModel->addSelect('start as von'); + $this->ci->KontoModel->addSelect('ende as bis'); $this->ci->KontoModel->addJoin('public.tbl_prestudent', 'person_id'); + $this->ci->KontoModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); + $result = $this->ci->KontoModel-> loadWhere(array( 'buchungstyp_kurzbz' => 'StudiengebuehrErhoeht', 'studiensemester_kurzbz' => $semester, @@ -66,10 +71,10 @@ class CoreStbErhoehtTagLib if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreUnterbrecherTagLib.php b/application/libraries/tags/CoreUnterbrecherTagLib.php index 160881d48..aa05030e7 100644 --- a/application/libraries/tags/CoreUnterbrecherTagLib.php +++ b/application/libraries/tags/CoreUnterbrecherTagLib.php @@ -55,17 +55,23 @@ class CoreUnterbrecherTagLib $semester = $params['studiensemester_kurzbz']; $prestudent_id = $params['prestudent_id']; + $this->ci->PrestudentstatusModel->addSelect('prestudent_id'); + $this->ci->PrestudentstatusModel->addSelect('start as von'); + $this->ci->PrestudentstatusModel->addSelect('ende as bis'); + + $this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); $result = $this->ci->PrestudentstatusModel-> loadWhere(array( 'status_kurzbz' => 'Unterbrecher', 'studiensemester_kurzbz' => $semester, 'prestudent_id' => $prestudent_id )); + if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/libraries/tags/CoreWiederholerTagLib.php b/application/libraries/tags/CoreWiederholerTagLib.php index c02fca608..6cd78bb36 100644 --- a/application/libraries/tags/CoreWiederholerTagLib.php +++ b/application/libraries/tags/CoreWiederholerTagLib.php @@ -47,6 +47,7 @@ class CoreWiederholerTagLib public function isCriteriaSetFor(array $params) { + if(!isset($params['prestudent_id']) || !isset($params['studiensemester_kurzbz'])) { return false; @@ -55,16 +56,23 @@ class CoreWiederholerTagLib $semester = $params['studiensemester_kurzbz']; $prestudent_id = $params['prestudent_id']; + $this->ci->PrestudentstatusModel->addSelect('prestudent_id'); + $this->ci->PrestudentstatusModel->addSelect('start as von'); + $this->ci->PrestudentstatusModel->addSelect('ende as bis'); + + $this->ci->PrestudentstatusModel->addJoin('public.tbl_studiensemester', 'studiensemester_kurzbz'); + $result = $this->ci->PrestudentstatusModel->loadWhere(array( 'statusgrund_id' => 16, 'studiensemester_kurzbz' => $semester, - 'prestudent_id' => $prestudent_id + 'prestudent_id' => $prestudent_id, )); + if(hasData($result)) { - return true; + return $result; } else - return false; + return null; } } diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index 2ce83d181..0d54cd9c7 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -353,7 +353,7 @@ class Benutzerfunktion_model extends DB_Model public function isJgv($semester, $prestudent_id) { $query = " - SELECT * + SELECT ps.prestudent_id, ss.start as von, ss.ende as bis FROM public.tbl_benutzerfunktion bf JOIN public.tbl_benutzer bn USING (uid) JOIN public.tbl_prestudent ps USING (person_id) diff --git a/public/js/components/Tag/tagFormatter.js b/public/js/components/Tag/tagFormatter.js index e438c4c55..76471ec42 100644 --- a/public/js/components/Tag/tagFormatter.js +++ b/public/js/components/Tag/tagFormatter.js @@ -3,7 +3,6 @@ export function idTagFormatter (id, tagData, tagComponent, typeId) { if (!id) return; - console.log(tagData); const parsedTags = tagData.map(tag => ({ id: tag.notiz_id,