From b8ac076bdb4ddef7b1b8369deacfb0c57eae4165 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 19 Jan 2022 17:56:30 +0100 Subject: [PATCH] projektbeurteilungs uebersicht hinzugefuegt --- .../education/Projektbetreuer_model.php | 77 ++++++++++++++ .../models/system/Variablenname_model.php | 9 +- system/filtersupdate.php | 25 +++++ system/phrasesupdate.php | 100 ++++++++++++++++++ 4 files changed, 210 insertions(+), 1 deletion(-) diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index 4da88e344..22c7be1ec 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -60,4 +60,81 @@ class Projektbetreuer_model extends DB_Model return $this->execQuery($qry, array($zugangstoken)); } + + /** + * Holt Zweitbegutachter einer Projektarbeit mit Mail. + * @param $erstbegutachter_person_id int person_id des Erstbegutachters + * @param $projektarbeit_id int + * @param $student_uid string uid des Studenten der Arbeit abgibt + * @return object | bool + */ + public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid) + { + $qry_betr = "SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt, + trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name, + CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum + FROM lehre.tbl_projektbetreuer betr + JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id + JOIN public.tbl_person pers ON betr.person_id = pers.person_id + LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true + LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id + LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end' + WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter' + AND betr.projektarbeit_id = ? + AND parb.student_uid = ? + AND EXISTS ( + SELECT 1 FROM lehre.tbl_projektbetreuer + WHERE person_id = ? + AND betreuerart_kurzbz = 'Erstbegutachter' + AND projektarbeit_id = betr.projektarbeit_id + ) + AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL) + ORDER BY betr.insertamum DESC + LIMIT 1"; + + return $this->execQuery($qry_betr, array($projektarbeit_id, $student_uid, $erstbegutachter_person_id)); + } + + /** + * Generiert neuen Token für externen Zweitbetreuer. + * @param int $zweitbegutachter_person_id + * @param int $projektarbeit_id + * @return object | bool + */ + public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id) + { + $betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id + FROM lehre.tbl_projektbetreuer + JOIN public.tbl_person USING(person_id) + LEFT JOIN public.tbl_benutzer USING(person_id) + WHERE projektarbeit_id = ? + AND tbl_projektbetreuer.person_id = ? + AND betreuerart_kurzbz = 'Zweitbegutachter' + LIMIT 1"; + + $betreueruidres = $this->execQuery($betreuerUidQry, array($projektarbeit_id, $zweitbegutachter_person_id)); + + if (!hasData($betreueruidres)) + return error('Zweitbegutachter nicht gefunden'); + + $row_betr = getData($betreueruidres)[0]; + + if (!isset($row_betr->uid)) + { + do { + $token = generateToken(16); + $qry_tokencheck = $this->load(array('zugangstoken' => $token)); + } while(hasData($qry_tokencheck)); + + $result = $this->update( + array('projektarbeit_id' => $projektarbeit_id, + 'person_id' => $row_betr->person_id, + 'betreuerart_kurzbz' => 'Zweitbegutachter'), + array('zugangstoken' => $token, + 'zugangstoken_gueltigbis' => date('Y-m-d', strtotime('+1 year'))) + ); + + return $result; + } + } } diff --git a/application/models/system/Variablenname_model.php b/application/models/system/Variablenname_model.php index 869a03275..33ace3c8d 100644 --- a/application/models/system/Variablenname_model.php +++ b/application/models/system/Variablenname_model.php @@ -12,7 +12,14 @@ class Variablenname_model extends DB_Model ) sem WHERE start > now() LIMIT 1;', - 'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1' + 'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1;', + 'projektuebersicht_studiensemester' => 'SELECT studiensemester_kurzbz FROM ( + SELECT DISTINCT ON (studienjahr_kurzbz) start, studiensemester_kurzbz + FROM public.tbl_studiensemester + ORDER BY studienjahr_kurzbz, start + ) sem + WHERE start > now() + LIMIT 1;' ); /** diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 1a1717339..521e6b4dd 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -981,6 +981,31 @@ $filters = array( } ', 'oe_kurzbz' => null, + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'dataset_name' => 'projektuebersicht', + 'filter_kurzbz' => 'alleProjekte', + 'description' => '{Projektübersicht}', + 'sort' => 1, + 'default_filter' => true, + 'filter' => ' + { + "name": "Projektübersicht", + "columns": [ + {"name": "ProjectWorkID"}, + {"name": "ErstNachname"}, + {"name": "ErstAbgeschickt"}, + {"name": "ZweitNachname"}, + {"name": "ZweitAbgeschickt"}, + {"name": "StudentNachname"}, + {"name": "Note"}, + {"name": "Abgabedatum"} + ], + "filters": [] + } + ', + 'oe_kurzbz' => null, ) ); diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index e05ee6086..a5bceb40d 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9772,6 +9772,106 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'projektarbeitsbeurteilungUebersicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Projektarbeitsbeurteilungsübersicht', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt Work Assessment Overview', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'abgabedatum', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Abgabe - Datum', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Upload - Date', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'freischaltung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Freischaltung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Activation', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'resendToken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Token an Zweit-Begutachter*in senden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Send token to Second Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'freischalten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Freischalten', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Unlock', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'anrechnung',