diff --git a/application/controllers/Cis/ProfilUpdate.php b/application/controllers/Cis/ProfilUpdate.php index 74641d748..698b091d1 100644 --- a/application/controllers/Cis/ProfilUpdate.php +++ b/application/controllers/Cis/ProfilUpdate.php @@ -13,7 +13,7 @@ class ProfilUpdate extends Auth_Controller { parent::__construct([ 'index' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r'], - 'show' => ['basis/cis:r'], + 'show' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r', 'basis/cis:r'], 'id' => ['student/stammdaten:r', 'mitarbeiter/stammdaten:r'] ]); diff --git a/application/controllers/api/frontend/v1/ProfilUpdate.php b/application/controllers/api/frontend/v1/ProfilUpdate.php index bbfed651c..604ae33c9 100644 --- a/application/controllers/api/frontend/v1/ProfilUpdate.php +++ b/application/controllers/api/frontend/v1/ProfilUpdate.php @@ -706,7 +706,13 @@ class ProfilUpdate extends FHCAPI_Controller private function setStatusOnUpdateRequest($id, $status, $status_message) { - return $this->ProfilUpdateModel->update([$id], ["status" => $status, "status_timestamp" => "NOW()", "status_message" => $status_message]); + return $this->ProfilUpdateModel->update([$id], [ + "status" => $status, + "status_timestamp" => "NOW()", + "status_message" => $status_message, + "updateamum" => "NOW()", + "updatevon" => getAuthUID() + ]); } private function updateRequestedChange($id, $requested_change) @@ -716,13 +722,12 @@ class ProfilUpdate extends FHCAPI_Controller private function deleteOldVersionFile($dms_id) { + if (!isset($dms_id)) { + return true; + } + // starting the transaction $this->db->trans_start(); - - - if (!isset($dms_id)) { - return; - } //? delete the file from the profilUpdate first $profilUpdateFileDelete = $this->ProfilUpdateModel->removeFileFromProfilUpdate($dms_id); @@ -777,13 +782,8 @@ class ProfilUpdate extends FHCAPI_Controller $res = $this->StudentModel->execReadOnlyQuery($query, [$student_uid]); $res = $this->getDataOrTerminateWithError($res, $this->p->t('profilUpdate', 'profilUpdate_loadingOE_error')); - $res = array_map( - function ($item) { - return $item->oe_kurzbz; - }, - $res - ); - return $res; + $oe = ($res[0])->oe_kurzbz; + return $oe; } private function handleAdresse($requested_change, $personID) @@ -813,7 +813,7 @@ class ProfilUpdate extends FHCAPI_Controller $insert_adresse_id = $insertID; $insert_adresse_id = $this->getDataOrTerminateWithError($insert_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error')); if ($insert_adresse_id) { - $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $insert_adresse_id, $personID); } } //! DELETE @@ -825,12 +825,33 @@ class ProfilUpdate extends FHCAPI_Controller } //! UPDATE else { - $requested_change['updateamum'] = "NOW()"; - $requested_change['updatevon'] = getAuthUID(); - $update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change); - $update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error')); - $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id); + $curadresse_res = $this->AdresseModel->load($adresse_id); + $curadresse = ($this->getDataOrTerminateWithError($curadresse_res))[0]; + if($curadresse->heimatadresse) + { + $tmpadresse = array_merge((array) $curadresse, $requested_change); + unset($tmpadresse["adresse_id"]); + $tmpadresse['insertamum'] = "NOW()"; + $tmpadresse['insertvon'] = getAuthUID(); + $tmpadresse['person_id'] = $personID; + unset($tmpadresse["heimatadresse"]); + unset($tmpadresse["updateamum"]); + unset($tmpadresse["updatevon"]); + + $tmpadresse_res = $this->AdresseModel->insert($tmpadresse); + $tmpadresse_id = $this->getDataOrTerminateWithError($tmpadresse_res, $this->p->t('profilUpdate', 'profilUpdate_insertAdresse_error')); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $tmpadresse_id, $personID); + } + else + { + $requested_change['updateamum'] = "NOW()"; + $requested_change['updatevon'] = getAuthUID(); + + $update_adresse_id = $this->AdresseModel->update($adresse_id, $requested_change); + $update_adresse_id = $this->getDataOrTerminateWithError($update_adresse_id, $this->p->t('profilUpdate', 'profilUpdate_updateAdresse_error')); + $this->handleDupplicateZustellAdressen($requested_change['zustelladresse'], $update_adresse_id, $personID); + } } return $insertID ?? null; } @@ -852,7 +873,7 @@ class ProfilUpdate extends FHCAPI_Controller $insert_kontakt_id = $insertID; $insert_kontakt_id = $this->getDataOrTerminateWithError($insert_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_insertKontakt_error')); if ($insert_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $insert_kontakt_id, $requested_change['kontakttyp'], $personID); } } //! DELETE @@ -869,18 +890,18 @@ class ProfilUpdate extends FHCAPI_Controller $update_kontakt_id = $this->KontaktModel->update($kontakt_id, $requested_change); $update_kontakt_id = $this->getDataOrTerminateWithError($update_kontakt_id, $this->p->t('profilUpdate', 'profilUpdate_updateKontakt_error')); if ($update_kontakt_id) { - $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id); + $this->handleDupplicateZustellKontakte($requested_change['zustellung'], $update_kontakt_id, $requested_change['kontakttyp'], $personID); } } return isset($insertID) ? $insertID : null; } - private function handleDupplicateZustellAdressen($zustellung, $adresse_id) + private function handleDupplicateZustellAdressen($zustellung, $adresse_id, $person_id) { if ($zustellung) { $this->PersonModel->addSelect("public.tbl_adresse.adresse_id"); $this->PersonModel->addJoin("public.tbl_adresse", "public.tbl_adresse.person_id = public.tbl_person.person_id"); - $zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustelladresse" => TRUE]); + $zustellAdressenArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $person_id, "zustelladresse" => TRUE]); if (isError($zustellAdressenArray)) { $this->terminateWithError($this->p->t('profilUpdate', 'profilUpdate_loadingZustellAdressen_error')); } @@ -893,6 +914,8 @@ class ProfilUpdate extends FHCAPI_Controller return $adresse->adresse_id != $adresse_id; }); + $this->addMeta('bhzustelladressen', $zustellAdressenArray); + // remove the zustelladresse from all other zustelladressen foreach ($zustellAdressenArray as $adresse) { $this->AdresseModel->update($adresse->adresse_id, ["zustelladresse" => FALSE]); @@ -902,12 +925,16 @@ class ProfilUpdate extends FHCAPI_Controller } } - private function handleDupplicateZustellKontakte($zustellung, $kontakt_id) + private function handleDupplicateZustellKontakte($zustellung, $kontakt_id, $kontakttyp, $person_id) { if ($zustellung) { $this->PersonModel->addSelect("public.tbl_kontakt.kontakt_id"); $this->PersonModel->addJoin("public.tbl_kontakt", "public.tbl_kontakt.person_id = public.tbl_person.person_id"); - $zustellKontakteArray = $this->PersonModel->loadWhere(["public.tbl_person.person_id" => $this->pid, "zustellung" => TRUE]); + $zustellKontakteArray = $this->PersonModel->loadWhere([ + "public.tbl_person.person_id" => $person_id, + "zustellung" => TRUE, + "kontakttyp" => $kontakttyp + ]); if (!isSuccess($zustellKontakteArray)) { return error($this->p->t('profilUpdate', 'profilUpdate_loadingZustellkontakte_error')); } diff --git a/application/controllers/jobs/MeldezettelJob.php b/application/controllers/jobs/MeldezettelJob.php new file mode 100644 index 000000000..329597985 --- /dev/null +++ b/application/controllers/jobs/MeldezettelJob.php @@ -0,0 +1,86 @@ +_ci =& get_instance(); + + $this->_ci->load->model('crm/Dokumentprestudent_model', 'DokumentprestudentModel'); + } + + /** + * Sets Meldezettel to "accepted" for all students with Meldeadresse. + */ + public function acceptMeldezettel() + { + $this->logInfo('Start Meldezettel Job'); + + $params = array(self::DOKUMENT_KURZBZ); + + $qry = " + -- get all prestudents with meldeadresse, but no accepted Meldezettel + SELECT + DISTINCT prestudent_id + FROM + public.tbl_adresse + JOIN public.tbl_person USING (person_id) + JOIN public.tbl_prestudent ps USING (person_id) + WHERE + typ = 'm' + AND NOT EXISTS ( + SELECT + 1 + FROM + public.tbl_dokumentprestudent + WHERE + prestudent_id = ps.prestudent_id + AND dokument_kurzbz = ? + )"; + + // get all prestudents with Meldeadresse and no accpeted Meldezettel + $result = $this->_ci->DokumentprestudentModel->execReadOnlyQuery($qry, $params); + + if (isError($result)) + { + $this->logError(getError($result)); + } + + $count = 0; + + if (hasData($result)) + { + $prestudents = getData($result); + + foreach ($prestudents as $prestudent) + { + // set Meldezettel to accepted + $result = $this->_ci->DokumentprestudentModel->insert( + array( + 'prestudent_id' => $prestudent->prestudent_id, + 'dokument_kurzbz' => self::DOKUMENT_KURZBZ, + 'datum' => date('Y-m-d'), + 'insertamum' => strftime('%Y-%m-%d %H:%M'), + 'insertvon' => self::INSERT_VON + ) + ); + + if (isError($result)) + $this->logError(getError($result)); + else + $count++; + } + } + + $this->logInfo('End Meldezettel Job', array('Number of changes ' => $count)); + } +} diff --git a/application/libraries/FilterCmptLib.php b/application/libraries/FilterCmptLib.php index 272899de6..b1de89245 100644 --- a/application/libraries/FilterCmptLib.php +++ b/application/libraries/FilterCmptLib.php @@ -1,7 +1,7 @@ getSession(); // If session is NOT empty -> a filter was already loaded - if ($session != null) + if (!isError($session) && $session != null) { // Retrieve the filterId stored in the session $sessionFilterId = $this->_getSessionElement(FilterCmptLib::FILTER_ID); @@ -219,9 +219,7 @@ class FilterCmptLib } } } - - // If the session is empty -> first time that this filter is loaded - if ($session == null) + else { // Load filter definition data from DB $definition = $this->_loadDefinition( @@ -602,7 +600,7 @@ class FilterCmptLib { $session = getSessionElement(self::SESSION_NAME, $this->_filterUniqueId); - if (isset($session[$name])) + if (!isError($session) && isset($session[$name])) { return $session[$name]; } @@ -623,7 +621,7 @@ class FilterCmptLib if (!$this->_ci->permissionlib->hasAtLeastOne($this->_requiredPermissions, self::PERMISSION_FILTER_METHOD, self::PERMISSION_TYPE)) { - $this->_setSession(error('The required permission is not help by the logged user')); + $this->_setSession(error('The required permission is not held by the logged user')); return false; } @@ -904,7 +902,7 @@ class FilterCmptLib $filterCmptsSession = getSession(self::SESSION_NAME); // If something is present in session - if ($filterCmptsSession != null) + if (!isError($filterCmptsSession) && $filterCmptsSession != null) { // Loops in the session for all the filter components foreach ($filterCmptsSession as $filterCmpt => $filterCmptData) @@ -951,9 +949,11 @@ class FilterCmptLib { $session = getSessionElement(self::SESSION_NAME, $this->_filterUniqueId); - $session[$name] = $value; - - setSessionElement(self::SESSION_NAME, $this->_filterUniqueId, $session); // stores the single value + if (!isError($session) && $session != null) + { + $session[$name] = $value; + setSessionElement(self::SESSION_NAME, $this->_filterUniqueId, $session); // stores the single value + } } /** @@ -965,7 +965,7 @@ class FilterCmptLib $filterCmptsSession = getSession(self::SESSION_NAME); // If something is present in session - if ($filterCmptsSession != null) + if (!isError($filterCmptsSession) && $filterCmptsSession != null) { // Loops in the session for all the filter components foreach ($filterCmptsSession as $filterCmpt => $filterCmptData) @@ -1174,3 +1174,4 @@ class FilterCmptLib return $filterName; } } + diff --git a/application/libraries/ProfilLib.php b/application/libraries/ProfilLib.php index 6e93a0943..97cb8ce5d 100644 --- a/application/libraries/ProfilLib.php +++ b/application/libraries/ProfilLib.php @@ -183,7 +183,10 @@ class ProfilLib{ $zutrittskarte_ausgegebenam = $zutrittskarte_ausgegebenam ? current($zutrittskarte_ausgegebenam)->ausgegebenam : null; //? formats date from 01-01-2000 to 01.01.2000 - $zutrittskarte_ausgegebenam = str_replace("-", ".", $zutrittskarte_ausgegebenam); + if ($zutrittskarte_ausgegebenam !== NULL) + { + $zutrittskarte_ausgegebenam = (new DateTime($zutrittskarte_ausgegebenam))->format('d.m.Y'); + } return $zutrittskarte_ausgegebenam; } @@ -196,7 +199,7 @@ class ProfilLib{ private function getAdressenInfo($pid) { $this->ci->load->model("person/Adresse_model","AdresseModel"); - $adresse_res = $this->ci->AdresseModel->addSelect(["adresse_id", "strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort", "zustelladresse", "gemeinde", "nation"]); + $adresse_res = $this->ci->AdresseModel->addSelect(["adresse_id", "strasse", "tbl_adressentyp.bezeichnung as typ", "plz", "ort", "heimatadresse", "zustelladresse", "gemeinde", "nation"]); $adresse_res = $this->ci->AdresseModel->addOrder("zustelladresse", "DESC"); $adresse_res = $this->ci->AdresseModel->addJoin("tbl_adressentyp", "typ=adressentyp_kurzbz"); diff --git a/application/models/person/Kontaktverifikation_model.php b/application/models/person/Kontaktverifikation_model.php new file mode 100644 index 000000000..17bcb1c35 --- /dev/null +++ b/application/models/person/Kontaktverifikation_model.php @@ -0,0 +1,42 @@ +dbTable = 'public.tbl_kontakt_verifikation'; + $this->pk = 'kontakt_verifikation_id'; + } + + /** + * Gets contact verification for a person and a verification code + * @param person_id + * @param kontakttyp + * @param verifikation_code + * @param expiration_days number of days after which verifikation code expires + * @return object success or error + */ + public function getKontaktVerifikation($person_id, $kontakttyp, $verifikation_code, $expiration_days = 1) + { + $qry = " + SELECT + kt.kontakt_id, + kv.verifikation_code + FROM + public.tbl_kontakt_verifikation kv + JOIN public.tbl_kontakt kt USING(kontakt_id) + WHERE kt.person_id = ? + AND kt.kontakttyp = ? + AND kv.verifikation_code = ? + AND kv.erstelldatum >= NOW() - INTERVAL '".$this->escape($expiration_days)." days' + ORDER BY + kt.kontakt_id DESC + LIMIT 1"; + + return $this->execQuery($qry, array($person_id, $kontakttyp, $verifikation_code)); + } +} diff --git a/application/models/person/Profil_update_model.php b/application/models/person/Profil_update_model.php index ffb04b7e7..31005c4b7 100644 --- a/application/models/person/Profil_update_model.php +++ b/application/models/person/Profil_update_model.php @@ -63,6 +63,7 @@ class Profil_update_model extends DB_Model $this->addSelect(["public.tbl_profil_update.*", "public.tbl_person.vorname"]); $this->addJoin("public.tbl_benutzer", "public.tbl_benutzer.uid = public.tbl_profil_update.uid"); $this->addJoin("public.tbl_person", "public.tbl_person.person_id = public.tbl_benutzer.person_id"); + $this->db->order_by('COALESCE(public.tbl_profil_update.updateamum, public.tbl_profil_update.insertamum)', 'DESC', false); $res = $this->loadWhere($whereClause); if (isError($res)) { return $res; @@ -118,13 +119,47 @@ class Profil_update_model extends DB_Model $parameters = []; $query = " SELECT - profil_update_id, tbl_profil_update.uid, (tbl_person.vorname || ' ' || tbl_person.nachname) AS name , topic, requested_change, tbl_profil_update.updateamum, tbl_profil_update.updatevon, tbl_profil_update.insertamum, tbl_profil_update.insertvon, status, public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] as status_translated, status_timestamp, status_message, attachment_id + profil_update_id, + tbl_profil_update.uid, + (tbl_person.vorname || ' ' || tbl_person.nachname) AS name , + topic, + requested_change, + tbl_profil_update.updateamum, + tbl_profil_update.updatevon, + tbl_profil_update.insertamum, + tbl_profil_update.insertvon, + status, + public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] as status_translated, + status_timestamp, + status_message, + attachment_id, + UPPER(public.tbl_studiengang.typ || public.tbl_studiengang.kurzbz) AS studiengang, + COALESCE(of.orgform_kurzbz, public.tbl_studiengang.orgform_kurzbz) AS orgform, + NULL as oezuordnung FROM public.tbl_profil_update JOIN public.tbl_profil_update_status ON public.tbl_profil_update_status.status_kurzbz = public.tbl_profil_update.status JOIN public.tbl_student ON public.tbl_student.student_uid=public.tbl_profil_update.uid JOIN public.tbl_benutzer ON public.tbl_benutzer.uid = public.tbl_student.student_uid JOIN public.tbl_person ON public.tbl_benutzer.person_id=public.tbl_person.person_id JOIN public.tbl_studiengang ON public.tbl_studiengang.studiengang_kz=public.tbl_student.studiengang_kz + LEFT JOIN ( + select + pss.prestudent_id, COALESCE(sp.orgform_kurzbz, pss.orgform_kurzbz) as orgform_kurzbz + from ( + select + prestudent_id, max(insertamum) as insertamum + from + public.tbl_prestudentstatus + where + datum <= NOW() + group by + prestudent_id + ) mpss + join + public.tbl_prestudentstatus pss on pss.prestudent_id = mpss.prestudent_id and pss.insertamum = mpss.insertamum + left join + lehre.tbl_studienplan sp on pss.studienplan_id = sp.studienplan_id + ) of ON of.prestudent_id = public.tbl_student.prestudent_id Where public.tbl_studiengang.oe_kurzbz IN ? "; $parameters[] = $oe_berechtigung; if ($whereClause) { @@ -144,12 +179,33 @@ class Profil_update_model extends DB_Model } } if ($mitarbeiterBerechtigung) { - $this->addSelect(["profil_update_id", "tbl_profil_update.uid", "(tbl_person.vorname || ' ' || tbl_person.nachname) AS name", "topic", "requested_change", "tbl_profil_update.updateamum", "tbl_profil_update.updatevon", "tbl_profil_update.insertamum", "tbl_profil_update.insertvon", "status", "public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] AS status_translated", "status_timestamp", "status_message", "attachment_id"]); + $this->addSelect([ + "profil_update_id", + "tbl_profil_update.uid", + "(tbl_person.vorname || ' ' || tbl_person.nachname) AS name", + "topic", + "requested_change", + "tbl_profil_update.updateamum", + "tbl_profil_update.updatevon", + "tbl_profil_update.insertamum", + "tbl_profil_update.insertvon", + "status", + "public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] AS status_translated", + "status_timestamp", + "status_message", + "attachment_id", + "COALESCE(NULL) as studiengang", + "COALESCE(NULL) as orgform", + "oe.bezeichnung as oezuordnung" + ]); $this->addJoin('tbl_profil_update_status', 'tbl_profil_update_status.status_kurzbz=tbl_profil_update.status'); $this->addJoin('tbl_mitarbeiter', 'tbl_mitarbeiter.mitarbeiter_uid=tbl_profil_update.uid'); $this->addJoin('tbl_benutzer', 'tbl_benutzer.uid=tbl_profil_update.uid'); $this->addJoin('tbl_person', 'tbl_benutzer.person_id=tbl_person.person_id'); + $this->addJoin('tbl_benutzerfunktion bf', 'bf.uid = tbl_benutzer.uid AND bf.funktion_kurzbz = \'oezuordnung\' AND NOW() >= COALESCE(bf.datum_von, \'1970-01-01\'::date) AND NOW() <= COALESCE(bf.datum_bis, \'2170-12-31\'::date)', 'LEFT'); + $this->addJoin('tbl_organisationseinheit oe', 'oe.oe_kurzbz = bf.oe_kurzbz', 'LEFT'); $mitarbeiterRequests = $this->loadWhere($whereClause); + if (isError($mitarbeiterRequests)) return error("db error: " . getData($mitarbeiterRequests)); $mitarbeiterRequests = getData($mitarbeiterRequests) ?: []; @@ -179,8 +235,11 @@ class Profil_update_model extends DB_Model private function formatProfilRequest($request) { $request->requested_change = json_decode($request->requested_change); + $request->insertamum_iso = !is_null($request->insertamum) ? date_create($request->insertamum)->format('Y-m-d') : null; $request->insertamum = !is_null($request->insertamum) ? date_create($request->insertamum)->format('d.m.Y') : null; + $request->updateamum_iso = !is_null($request->updateamum) ? date_create($request->updateamum)->format('Y-m-d') : null; $request->updateamum = !is_null($request->updateamum) ? date_create($request->updateamum)->format('d.m.Y') : null; + $request->status_timestamp_iso = !is_null($request->status_timestamp) ? date_create($request->status_timestamp)->format('Y-m-d') : null; $request->status_timestamp = !is_null($request->status_timestamp) ? date_create($request->status_timestamp)->format('d.m.Y') : null; } diff --git a/application/views/Cis/ProfilUpdate.php b/application/views/Cis/ProfilUpdate.php index e797d436f..2e69208c7 100644 --- a/application/views/Cis/ProfilUpdate.php +++ b/application/views/Cis/ProfilUpdate.php @@ -2,10 +2,14 @@ $includesArray = array( 'title' => 'Profil Änderungen', 'vue3' => true, + 'primevue3' => true, 'bootstrap5' => true, 'fontawesome6'=> true, 'axios027' => true, 'tabulator5' => true, + 'customJSs' => array( + 'vendor/moment/luxonjs/luxon.min.js' + ), 'customJSModules' => array( 'public/js/apps/Cis/ProfilUpdateRequests.js' ), diff --git a/application/views/system/infocenter/stammdaten.php b/application/views/system/infocenter/stammdaten.php index f852e9ace..83961dd91 100644 --- a/application/views/system/infocenter/stammdaten.php +++ b/application/views/system/infocenter/stammdaten.php @@ -182,7 +182,7 @@ zugangscode)): ?>
-  p->t('infocenter','zugangBewerbung') ?>
diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 4142e413c..ea4c1eff0 100644 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -382,7 +382,7 @@ function writePruefungsTable(e, data, anmeldung) } else if(new Date() > minimumFrist) { - button = "

"+frist+"'>

"; + button = "

"+frist+"'>

"; } } else @@ -479,13 +479,15 @@ function showPruefungsDetails(prfId, lvId) * @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung * @param {type} terminVon Beginn der Prüfung * @param {type} terminBis Ende der Prüfung + * @param {type} ects der LV * @returns {undefined} */ -function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis) +function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis, ects) { $("#lehrveranstaltungHidden").val(lehrveranstaltung_id); $("#terminHidden").val(termin_id); $("#lehrveranstaltung").html(lvBezeichnung); + $("#ectsangabe").val(ects); $.ajax({ dataType: 'json', @@ -582,6 +584,12 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) if($('#prestudent_studiengang').length) studiengang_kz = $('#prestudent_studiengang option:selected').val(); + var ects = null; + if ($('#ectsangabe').length) + { + ects = $('#ectsangabe').val(); + } + $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", @@ -593,7 +601,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) bemerkung: bemerkungen, uid: uid, studienverpflichtung_id: studienverpflichtung_id, - studiengang_kz: studiengang_kz + studiengang_kz: studiengang_kz, + ects: ects }, error: loadError, success: function(data){ @@ -804,6 +813,7 @@ function writeAnmeldungen(data, showMessage = true) var pruefung_id = data.result.anmeldungen[0].pruefung_id; var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id; var ort_kurzbz = data.result.ort_kurzbz; + var anderer_raum = data.result.anderer_raum; var lv_bezeichnung = data.result.lv_bezeichnung; var lv_lehrtyp = data.result.lv_lehrtyp; var prf_termin = data.result.datum; @@ -816,24 +826,33 @@ function writeAnmeldungen(data, showMessage = true) count++; var vorname = d.student.vorname !== "null" ? d.student.vorname : ""; var nachname = d.student.nachname !== "null" ? d.student.nachname : ""; + + let ects = ""; + + ects = d.ects !== null ? "(" + d.ects + " ECTS) ": ""; + + + switch(d.status_kurzbz) { case 'angemeldet': - liste += "
  • "+vorname+" "+nachname+""; + liste += "
  • "+ects+vorname+" "+nachname+""; liste += "
    "+count+"
    ' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"; liste += "
    "; if(d.wuensche !== null) { - liste += "
    "+d.wuensche+"'>
    "; + let msg = $('
    ').text(d.wuensche).html(); + liste += `
    `; } liste += "
  • "; break; case 'bestaetigt': - liste += "
  • "+vorname+" "+nachname+""; + liste += "
  • "+ects+vorname+" "+nachname+""; liste += "
    "+count+"
    : "+d.statusupdatevon+"'>t('pruefung/bestaetigt'); ?>
    "; if(d.wuensche !== null) { - liste += "
    "+d.wuensche+"'>
    "; + let msg = $('
    ').text(d.wuensche).html(); + liste += `
    `; } break; @@ -844,13 +863,14 @@ function writeAnmeldungen(data, showMessage = true) }); liste += ""; $("#anmeldung_hinzufuegen").html("' onclick='saveAnmeldung(\""+lehrveranstaltung_id+"\",\""+terminId+"\");'/>"); - $("#reihungSpeichernButton").html("' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>' onclick='alleBestaetigen(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>"); + $("#reihungSpeichernButton").html("