From e7d9d8859c457b9a27fb3b6ea9e99fddf5ded3eb Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 22 Dec 2020 15:43:44 +0100 Subject: [PATCH 01/28] Created VIEW Anrechnungen for students (CIS) Signed-off-by: cris-technikum --- .../lehre/anrechnung/requestAnrechnung.php | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 application/views/lehre/anrechnung/requestAnrechnung.php diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php new file mode 100644 index 000000000..9b648e0dd --- /dev/null +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -0,0 +1,170 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => $this->p->t('ui', 'antragStellen'), + 'jquery' => true, + 'bootstrap' => true, + 'fontawesome' => true, + 'ajaxlib' => true, + 'dialoglib' => true, + 'phrases' => array( + 'global' => array( + 'anerkennungNachgewiesenerKenntnisse', + 'antragStellen' + ), + 'ui' => array( + 'hilfeZuDieserSeite', + ) + ), + 'customJSs' => array( + 'public/js/bootstrapper.js', + 'public/js/lehre/anrechnung/Anrechnung.js') + ) +); +?> + + +
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+
+
+ p->t('anrechnung', 'antragsdaten'); ?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StudentInCristina Hainberger
StudentInCristina Hainberger
StudentInCristina Hainberger
StudentInCristina Hainberger
StudentInCristina Hainberger
StudentInCristina Hainberger
StudentInCristina Hainberger
+
+
+
+ +
+
+
+
+ p->t('anrechnung', 'dokumentZumNachweis'); ?> +
+
+ +
+ +
+ + +
+ +
+
+
+
+ +
+
+
+
+
+ p->t('anrechnung', 'weitereInformationen'); ?> +
+
+ +
+
+
+
+
+
+ +
+
+
+

p->t('anrechnung', 'antragStellenText'); ?>

+
+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + +load->view('templates/FHC-Footer'); ?> From 8309dfb3cae78bca886ee183ff8ff8ab65b9814e Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 22 Dec 2020 16:00:07 +0100 Subject: [PATCH 02/28] Created CONTROLLER Anrechnungen for students (CIS) Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 application/controllers/lehre/anrechnung/RequestAnrechnung.php diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php new file mode 100644 index 000000000..368a463df --- /dev/null +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -0,0 +1,66 @@ + 'admin:rw', + 'uploadFile' => 'admin:rw', + ) + ); + + // Load models + $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); + + // Load libraries + $this->load->library('WidgetLib'); + $this->load->library('PermissionLib'); + + // Load helpers + $this->load->helper('form'); + $this->load->helper('url'); + $this->load->helper('hlp_sancho_helper'); + + // Load language phrases + $this->loadPhrases( + array( + 'global', + 'ui', + 'anrechnung' + ) + ); + + $this->_setAuthUID(); + + $this->setControllerId(); + } + + public function index() + { + $this->load->view('lehre/anrechnung/requestAnrechnung.php'); + + } + + public function uploadFile($filename = null) + { +// $this->extensionslib->installExtension(urldecode($filename)); + } + + + /** + * Retrieve the UID of the logged user and checks if it is valid + */ + private function _setAuthUID() + { + $this->_uid = getAuthUID(); + + if (!$this->_uid) show_error('User authentification failed'); + } + + +} \ No newline at end of file From fb29dc1e0ec6eb7947a945fc35c8d605127e3409 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 5 Jan 2021 12:17:41 +0100 Subject: [PATCH 03/28] Added method getLvByStudent() to Lehrveranstaltung_model Signed-off-by: cris-technikum --- .../education/Lehrveranstaltung_model.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index d80d02b41..ef5373f5f 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -273,4 +273,24 @@ class Lehrveranstaltung_model extends DB_Model return $this->execQuery($query, $parametersarray); } + + /** + * Gets Lehrveranstaltung and its Lehreinheiten (multiple rows possible). + * Returns empty array if student has no Lehrveranstaltung. + * @param $uid + * @param $studiensemester_kurzbz + * @param $lehrveranstaltung_id + * @return array|null + */ + public function getLvByStudent($uid, $studiensemester_kurzbz, $lehrveranstaltung_id) + { + $query = ' + SELECT * FROM campus.vw_student_lehrveranstaltung + WHERE uid = ? + AND studiensemester_kurzbz = ? + AND lehrveranstaltung_id = ?; + '; + + return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id)); + } } From 04174d35f5d0c628f68f98be9cb76e30153470c2 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 5 Jan 2021 12:19:27 +0100 Subject: [PATCH 04/28] Added Anrechnungsdata (student, lv and lectors of lv) Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 15 ++++- application/libraries/AnrechnungLib.php | 65 +++++++++++++++++++ application/models/person/Person_model.php | 2 +- .../lehre/anrechnung/requestAnrechnung.php | 54 ++++++++++----- 4 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 application/libraries/AnrechnungLib.php diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 368a463df..b79c2797b 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -20,6 +20,7 @@ class requestAnrechnung extends Auth_Controller // Load libraries $this->load->library('WidgetLib'); $this->load->library('PermissionLib'); + $this->load->library('AnrechnungLib'); // Load helpers $this->load->helper('form'); @@ -31,7 +32,9 @@ class requestAnrechnung extends Auth_Controller array( 'global', 'ui', - 'anrechnung' + 'anrechnung', + 'person', + 'lehre' ) ); @@ -42,8 +45,14 @@ class requestAnrechnung extends Auth_Controller public function index() { - $this->load->view('lehre/anrechnung/requestAnrechnung.php'); - + $studiensemester_kurzbz = $this->input->get('studiensemester'); + $lv_id = $this->input->get('lv_id'); + + $viewData = array( + 'anrechnungData' => $this->anrechnunglib->getAnrechnungData($this->_uid, $studiensemester_kurzbz, $lv_id) + ); + + $this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData); } public function uploadFile($filename = null) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php new file mode 100644 index 000000000..472a2c0e1 --- /dev/null +++ b/application/libraries/AnrechnungLib.php @@ -0,0 +1,65 @@ +ci =& get_instance(); + + $this->ci->load->model('person/Person_model', 'PersonModel'); + $this->ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); + $this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel'); + } + + /** + * Get Anrechnung data + * @param $uid + * @param $studiensemester_kurzbz + * @param $lv_id + * @return StdClass + */ + public function getAnrechnungData($uid, $studiensemester_kurzbz, $lv_id) + { + $anrechnung_data = new StdClass(); + + // Get lehrveranstaltung data. Break, if course is not assigned to student. + if(!$lv = getData($this->ci->LehrveranstaltungModel->getLvByStudent($uid, $studiensemester_kurzbz, $lv_id))[0]) + { + show_error('You are not assigned to this course yet.'); + } + + // Get the students personal data + if (!$person = getData($this->ci->PersonModel->getByUid($uid))[0]) + { + show_error('Failed loading person data.'); + } + + // Get studiengang bezeichnung + if (!$studiengang = getData($this->ci->StudiengangModel->load($lv->studiengang_kz))[0]) + { + show_error('Failed loading studiengang data.'); + } + + // Get lectors of lehrveranstaltung + $anrechnung_data->lektoren = array(); + if (!$lv_lektoren = getData($this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lv_id))) + { + show_error('Failed loading course lectors.'); + } + + // Set the given studiensemester + $anrechnung_data->lv_bezeichnung = $lv->bezeichnung; + $anrechnung_data->ects = $lv->ects; + $anrechnung_data->studiensemester_kurzbz = $studiensemester_kurzbz; + $anrechnung_data->vorname = $person->vorname; + $anrechnung_data->nachname = $person->nachname; + $anrechnung_data->bpk = $person->bpk; + $anrechnung_data->stg_bezeichnung = $studiengang->bezeichnung; + $anrechnung_data->lektoren = $lv_lektoren; + + return $anrechnung_data; + } + +} \ No newline at end of file diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index d8ddb381c..bf85efe33 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -191,7 +191,7 @@ class Person_model extends DB_Model */ public function getByUid($uid) { - $this->addSelect('vorname, nachname, gebdatum, person_id'); + $this->addSelect('vorname, nachname, gebdatum, person_id, bpk'); $this->addJoin('tbl_benutzer', 'person_id'); return $this->loadWhere(array('uid' => $uid)); diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 9b648e0dd..87ae62b0f 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -2,7 +2,7 @@ $this->load->view( 'templates/FHC-Header', array( - 'title' => $this->p->t('ui', 'antragStellen'), + 'title' => $this->p->t('anrechnung', 'antragStellen'), 'jquery' => true, 'bootstrap' => true, 'fontawesome' => true, @@ -15,7 +15,19 @@ $this->load->view( ), 'ui' => array( 'hilfeZuDieserSeite', - ) + 'hochladen' + ), + 'person' => array( + 'student', + 'personenkennzeichen' + ), + 'lehre' => array( + 'studiensemester', + 'studiengang', + 'lehrveranstaltung', + 'ects', + 'lektor', + ) ), 'customJSs' => array( 'public/js/bootstrapper.js', @@ -51,36 +63,43 @@ $this->load->view(
p->t('anrechnung', 'antragsdaten'); ?> + Status: p->t('anrechnung', 'neu'); ?>
- - + + - - + + - - + + - - + + - - + + - - + + - - + +
StudentInCristina Hainbergerp->t('person', 'student'); ?>vorname. ' '. $anrechnungData->nachname; ?>
StudentInCristina Hainbergerp->t('person', 'personenkennzeichen'); ?>bpk ?>
StudentInCristina Hainbergerp->t('lehre', 'studiensemester'); ?>studiensemester_kurzbz ?>
StudentInCristina Hainbergerp->t('lehre', 'studiengang'); ?>stg_bezeichnung ?>
StudentInCristina Hainbergerp->t('lehre', 'lehrveranstaltung'); ?>lv_bezeichnung ?>
StudentInCristina Hainbergerp->t('lehre', 'ects'); ?>ects ?>
StudentInCristina Hainbergerp->t('lehre', 'lektor'); ?> + lektoren) - 1 ?> + lektoren as $key => $lektor): ?> + vorname. ' '. $lektor->nachname; + echo $key === $len ? '' : ', ' ?> + +
@@ -112,7 +131,8 @@ $this->load->view(
  • bla.pdf -
  • + +
    From 1fefffcab3e2f13131188b63d729847f5e496d2c Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 11 Jan 2021 13:43:57 +0100 Subject: [PATCH 05/28] Added / Adapted DB for Anrechnungen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung in tbl_anrechnung - Changed genehmigt_von and begruendung_id to be NULLABLE in tbl_anrechnung - Added DMS category "anrechnung" - Added DMS category permissiongroup for DMS category "anrechnung" - Add table anrechnung_status - Added table anrechnung_anrechnungstatus - Für bestehende genehmigte Anrechnungsanträge wird ein Eintrag mit dem Status 'approved' angelegt Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 146 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..f4ecc29d1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,148 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// Add column dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung +// Change genehmigt_von and begruendung_id to be NULLABLE +if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) +{ + $qry = " + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN dms_id bigint; + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6); + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text; + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean DEFAULT FALSE; + + ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL; + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL; + "; + + + if(!$db->db_query($qry)) + echo 'lehre.tbl_anrechnung: '.$db->db_last_error().'
    '; + else + echo '
    lehre.tbl_anrechnung: Neue Spalten dms_id, studiensemester_kurzbz, anmerkung_student und empfehlung_anrechnung hinzugefuegt. Not null constraint entfernt für genehmigt_von und begruendung_id'; +} + +// Add DMS category "anrechnung" +if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz = 'anrechnung';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO campus.tbl_dms_kategorie ( + kategorie_kurzbz, + bezeichnung, + beschreibung, + parent_kategorie_kurzbz, + oe_kurzbz, + berechtigung_kurzbz + ) VALUES( + 'anrechnung', + 'Anrechnung', + 'Dokumente zur Anrechnung von Lehrveranstaltungen', + 'studium', + 'etw', + NULL + );"; + if (!$db->db_query($qry)) + echo 'campus.tbl_dms_kategorie '.$db->db_last_error().'
    '; + else + echo ' campus.tbl_dms_kategorie: Added category "anrechnung"!
    '; + } +} + + +// Add DMS category permissiongroup for DMS category "anrechnung" +if ($result = @$db->db_query("SELECT 1 FROM campus.tbl_dms_kategorie_gruppe WHERE kategorie_kurzbz = 'anrechnung';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO campus.tbl_dms_kategorie_gruppe ( + kategorie_kurzbz, + gruppe_kurzbz, + insertamum, + insertvon + ) VALUES( + 'anrechnung', + 'CMS_LOCK', + NOW(), + 'dbcheck' + );"; + if (!$db->db_query($qry)) + echo 'campus.tbl_dms_kategorie_gruppe '.$db->db_last_error().'
    '; + else + echo ' campus.tbl_dms_kategorie_gruppe: Added category group "CMS_LOCK" to category "anrechnung"!
    '; + } +} + +// Add table anrechnung_status +if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnungstatus LIMIT 1;")) +{ + $qry = " + CREATE TABLE lehre.tbl_anrechnungstatus + ( + status_kurzbz varchar(32) NOT NULL, + bezeichnung_mehrsprachig varchar(64)[] + ); + + ALTER TABLE lehre.tbl_anrechnungstatus ADD CONSTRAINT pk_anrechnungstatus PRIMARY KEY (status_kurzbz); + + INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgressDP', '{\'bearbeitet von STG-Leitung\',\'processed by STG-Director\'}'); + INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('inProgressKF', '{\'bearbeitet von KF-Leitung\',\'processed by KF-Manager\'}'); + INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('approved', '{\'genehmigt\',\'approved\'}'); + INSERT INTO lehre.tbl_anrechnungstatus(status_kurzbz, bezeichnung_mehrsprachig) VALUES('rejected', '{\'abgelehnt\',\'rejected\'}'); + + GRANT SELECT ON lehre.tbl_anrechnungstatus TO web; + GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnungstatus TO vilesci; + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_anrechnungstatus: '.$db->db_last_error().'
    '; + else + echo ' lehre.tbl_anrechnungstatus: Tabelle hinzugefuegt
    '; +} + +// Add table anrechnung_anrechnungstatus +// Für bestehende genehmigte Anrechnungsanträge wird ein Eintrag mit dem Status 'approved' angelegt +if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus LIMIT 1;")) +{ + $qry = " + CREATE TABLE lehre.tbl_anrechnung_anrechnungstatus + ( + anrechnungstatus_id integer NOT NULL, + anrechnung_id integer, + status_kurzbz varchar(32), + datum timestamp default now(), + insertamum timestamp default now(), + insertvon varchar(32) + ); + + ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT pk_anrechnung_anrechnungstatus PRIMARY KEY (anrechnungstatus_id); + ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnung FOREIGN KEY (anrechnung_id) REFERENCES lehre.tbl_anrechnung(anrechnung_id) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ADD CONSTRAINT fk_anrechnung_anrechnungstatus_anrechnungstatus FOREIGN KEY (status_kurzbz) REFERENCES lehre.tbl_anrechnungstatus (status_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + + CREATE SEQUENCE lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + ALTER TABLE lehre.tbl_anrechnung_anrechnungstatus ALTER COLUMN anrechnungstatus_id SET DEFAULT nextval('lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id'); + + INSERT INTO lehre.tbl_anrechnung_anrechnungstatus(anrechnung_id, status_kurzbz) SELECT anrechnung_id, 'approved' as status_kurzbz FROM lehre.tbl_anrechnung WHERE genehmigt_von is not null; + + GRANT SELECT ON lehre.tbl_anrechnung_anrechnungstatus TO web; + GRANT SELECT, UPDATE, INSERT, DELETE ON lehre.tbl_anrechnung_anrechnungstatus TO vilesci; + GRANT SELECT, UPDATE ON lehre.seq_anrechnung_anrechnungstatus_anrechnungstatus_id TO vilesci; + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_anrechnung_anrechnungstatus: '.$db->db_last_error().'
    '; + else + echo ' lehre.tbl_anrechnung_anrechnungstatus: Tabelle hinzugefuegt
    '; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; @@ -4571,8 +4713,10 @@ $tabellen=array( "lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"), "lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"), "lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"), - "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"), + "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"), + "lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id","status_kurzbz","datum", "insertamum","insertvon"), "lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"), + "lehre.tbl_anrechnungstatus" => array("status_kurzbz","bezeichnung_mehrsprachig"), "lehre.tbl_betreuerart" => array("betreuerart_kurzbz","beschreibung","aktiv"), "lehre.tbl_ferien" => array("bezeichnung","studiengang_kz","vondatum","bisdatum"), "lehre.tbl_lehreinheit" => array("lehreinheit_id","lehrveranstaltung_id","studiensemester_kurzbz","lehrfach_id","lehrform_kurzbz","stundenblockung","wochenrythmus","start_kw","raumtyp","raumtypalternativ","sprache","lehre","anmerkung","unr","lvnr","updateamum","updatevon","insertamum","insertvon","ext_id","lehrfach_id_old","gewicht"), From 5cd163819dae36eeb3bf84d33d36ba7760e95611 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 11 Jan 2021 15:24:12 +0100 Subject: [PATCH 06/28] Added upload function to DmsLib Signed-off-by: cris-technikum --- application/libraries/DmsLib.php | 54 +++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index f32df5fd1..04204012b 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -5,7 +5,10 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); class DmsLib { const FILE_CONTENT_PROPERTY = 'file_content'; - + + const FILE_INPUT_NAME = 'uploadfile'; // name of the HTML input tag containing the uploaded file + private $UPLOAD_PATH = DMS_PATH; // temporary directory to store the upload file + /** * Object initialization */ @@ -92,6 +95,42 @@ class DmsLib return $result; } + + /** + * Uploads a document and saves it to DMS + * @param $dms DMS assoc array + * @param array $allowed_types Default: all. Param example: array(jpg, pdf) + * @return array + */ + public function upload($dms, $allowed_types = array('*')) + { + // Init upload configs + $this->_loadUploadLibrary($allowed_types); + + if (!$this->ci->upload->do_upload(DmsLib::FILE_INPUT_NAME)) + { + return error($this->ci->upload->display_errors()); + } + + $upload_data = $this->ci->upload->data(); // data about the uploaded file + $filename = $upload_data['file_name']; + + // Insert to DMS table + if (!$result = $this->ci->DmsModel->insert($this->ci->DmsModel->filterFields($dms))) + { + return error('Failed inserting to DMS'); + } + + // Insert DMS version + if (!$result = $this->ci->DmsVersionModel->insert( + $this->ci->DmsVersionModel->filterFields($dms, $result->retval, $filename))) + { + return error('Failed inserting DMS version'); + } + + // return result of uploaded data + return success($upload_data); // data about the uploaded file + } /** * Saves a Document @@ -302,4 +341,17 @@ class DmsLib return $result; } + + /** + * Loads the upload library of CI + */ + private function _loadUploadLibrary($allowed_types) + { + $config['upload_path'] = $this->UPLOAD_PATH; + $config['allowed_types'] = implode('|', $allowed_types); + $config['overwrite'] = true; + + $this->ci->load->library('upload', $config); + $this->ci->upload->initialize($config); + } } From 2454104cc32cff6374ca53bc75699af0c371ab6e Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 13 Jan 2021 14:37:55 +0100 Subject: [PATCH 07/28] Changed datum type from timestamp to date in tbl_anrechnung_anrechnungstatus Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index f4ecc29d1..1e0a76e35 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4577,7 +4577,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu anrechnungstatus_id integer NOT NULL, anrechnung_id integer, status_kurzbz varchar(32), - datum timestamp default now(), + datum date default now(), insertamum timestamp default now(), insertvon varchar(32) ); From 47f66644ef4c295c4293a214b274d02a0e48fefa Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 13 Jan 2021 14:55:50 +0100 Subject: [PATCH 08/28] Added Bezeichnung 'berufliche Praxis' to Anrechnungbegruendung Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1e0a76e35..af3ae2fff 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4607,6 +4607,19 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatu echo ' lehre.tbl_anrechnung_anrechnungstatus: Tabelle hinzugefuegt
    '; } +// Added Bezeichnung 'berufliche Praxis' to Anrechnungbegruendung +if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHERE bezeichnung = 'berufliche Praxis';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_anrechnung_begruendung (bezeichnung) VALUES('berufliche Praxis');"; + if (!$db->db_query($qry)) + echo 'lehre.tbl_anrechnung_begruendung '.$db->db_last_error().'
    '; + else + echo ' lehre.tbl_anrechnung_begruendung: Added bezeichnung "berufliche Praxis"
    '; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; From 78e4edd59005046327fc972e99deb2ef3a5232e8 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 08:36:53 +0100 Subject: [PATCH 09/28] Added permission student/anrechnung_beantragen Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index af3ae2fff..1a0a2838e 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4620,6 +4620,20 @@ if ($result = @$db->db_query("SELECT 1 FROM lehre.tbl_anrechnung_begruendung WHE } } +// Add permission to apply for Anrechnung +if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/anrechnung_beantragen';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/anrechnung_beantragen', 'Anrechnung beantragen');"; + + if(!$db->db_query($qry)) + echo 'system.tbl_berechtigung '.$db->db_last_error().'
    '; + else + echo ' system.tbl_berechtigung: Added permission for student/anrechnung_beantragen
    '; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; From 44e8bd57b07e723d3359f8c17154ea602a1e089a Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 10:00:44 +0100 Subject: [PATCH 10/28] Set default value to NOW() for insertamum in lehre.tbl_anrechnung Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 1a0a2838e..9ca75012b 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4480,6 +4480,7 @@ if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN genehmigt_von DROP NOT NULL; ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN begruendung_id DROP NOT NULL; + ALTER TABLE lehre.tbl_anrechnung ALTER COLUMN insertamum SET DEFAULT NOW(); "; From 3116d4c7c90ca96f53919378989295041bdb94c7 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:04:49 +0100 Subject: [PATCH 11/28] Adapted index method and library(deadline, status, refactored code, lib functions) - Check if application deadline is expired - Refactored retrieving Anrechnung data (reusable) - Adapted status for student view (new, in progress) Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 122 +++++++++++++++++- application/libraries/AnrechnungLib.php | 95 ++++++++++++-- 2 files changed, 201 insertions(+), 16 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index b79c2797b..482c5ab7b 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -4,6 +4,15 @@ class requestAnrechnung extends Auth_Controller { + const REQUEST_ANRECHNUNG_URI = '/lehre/anrechnung/RequestAnrechnung'; + + const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP'; + const ANRECHNUNGSTATUS_PROGRESSED_BY_KF = 'inProgressKF'; + const ANRECHNUNGSTATUS_APPROVED = 'approved'; + const ANRECHNUNGSTATUS_REJECTED = 'rejected'; + + const DEADLINE_INTERVAL_NACH_SEMESTERSTART = 'P1M'; // Deadline for application + public function __construct() { // Set required permissions @@ -15,12 +24,14 @@ class requestAnrechnung extends Auth_Controller ); // Load models - $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); + $this->load->model('education/Anrechnung_model', 'AnrechnungModel'); + $this->load->model('content/DmsVersion_model', 'DmsVersionModel'); // Load libraries $this->load->library('WidgetLib'); $this->load->library('PermissionLib'); $this->load->library('AnrechnungLib'); + $this->load->library('DmsLib'); // Load helpers $this->load->helper('form'); @@ -46,10 +57,35 @@ class requestAnrechnung extends Auth_Controller public function index() { $studiensemester_kurzbz = $this->input->get('studiensemester'); - $lv_id = $this->input->get('lv_id'); + $lehrveranstaltung_id = $this->input->get('lv_id'); + + if (!is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz)) + { + show_error('Missing correct parameter'); + } + + // Check if application deadline is expired + $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz); + + // Get Anrechung data + $result = $this->anrechnunglib->getAnrechnungData($lehrveranstaltung_id); + if (!$anrechnungData = getData($result)) + { + show_error(getError($anrechnungData)); + } + + // Overwrite progress status for student view. If no Anrechnung exists yet, set to new. + $anrechnungData->status = empty($anrechnungData->status) + ? getUserLanguage() == 'German' ? 'neu' : 'new' + : $this->_getLastAnrechnungstatus($anrechnungData->anrechnung_id); $viewData = array( - 'anrechnungData' => $this->anrechnunglib->getAnrechnungData($this->_uid, $studiensemester_kurzbz, $lv_id) + 'antragData' => $this->anrechnunglib->getAntragData($this->_uid, $studiensemester_kurzbz, $lehrveranstaltung_id), + 'anrechnungData' => $anrechnungData, + 'is_expired' => $is_expired, + 'disabled' => $is_expired && empty($anrechnungData->anrechnung_id) || !empty($anrechnungData->anrechnung_id) + ? 'disabled' + : '' ); $this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData); @@ -71,5 +107,85 @@ class requestAnrechnung extends Auth_Controller if (!$this->_uid) show_error('User authentification failed'); } + /** + * Load Prestudent by uid and Studiensemester. + * @param $uid + * @param $studiensemester_kurzbz + * @return mixed + */ + private function _loadPrestudent($uid, $studiensemester_kurzbz) + { + $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel'); + $this->load->model('crm/Student_model', 'StudentModel'); + + $this->PrestudentstatusModel->addJoin('public.tbl_student', 'prestudent_id'); + return $this->PrestudentstatusModel->loadWhere(array( + 'student_uid' => $uid, + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ) + ); + } + /** + * Check if application deadline is expired. + * @param $studiensemester_kurzbz + * @return bool True if semester start is more then 1 week ago + * @throws Exception + */ + private function _checkAntragDeadline($studiensemester_kurzbz) + { + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + $this->StudiensemesterModel->addSelect('start'); + if (!$start = getData($this->StudiensemesterModel->load($studiensemester_kurzbz))) + { + show_error(getError($start)); + } + + $start = new DateTime($start[0]->start); + $today = new DateTime('today midnight'); + + // True if today > application deadline + return ($today > $start->add((new DateInterval(self::DEADLINE_INTERVAL_NACH_SEMESTERSTART)))); + } + + /** + * Get Anrechnung by Lehrveranstaltung + * @param $lehrveranstaltung_id + * @return mixed + */ + private function _getAnrechnung($lehrveranstaltung_id) + { + $result = $this->AnrechnungModel->loadWhere(array( + 'lehrveranstaltung_id' => $lehrveranstaltung_id + )); + + if (isError($result)) + { + show_error(getError($result)); + } + + return $result; + } + + /** + * Get last Anrechnungstatus. Modify progress status for student view. + * @param $anrechnung_id + * @return string + */ + private function _getLastAnrechnungstatus($anrechnung_id) + { + $result = $this->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id); + $status_kurzbz = getData($result)[0]->status_kurzbz; + + // Dont show who is progressing the application + if ($status_kurzbz == 'inProgressDP' || $status_kurzbz == 'inProgressKF') + { + return getUserLanguage() == 'German' ? 'in Bearbeitung' : 'in process'; + } + else + { + $status_mehrsprachig = getData($result)[0]->bezeichnung_mehrsprachig; + return getUserLanguage() == 'German' ? $status_mehrsprachig[0] : $status_mehrsprachig[1]; + } + } } \ No newline at end of file diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index 472a2c0e1..ad3ce44b9 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -8,21 +8,23 @@ class AnrechnungLib { $this->ci =& get_instance(); + $this->ci->load->model('education/Anrechnung_model', 'AnrechnungModel'); $this->ci->load->model('person/Person_model', 'PersonModel'); $this->ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); $this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel'); + $this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel'); } /** - * Get Anrechnung data + * Get Antrag data * @param $uid * @param $studiensemester_kurzbz * @param $lv_id * @return StdClass */ - public function getAnrechnungData($uid, $studiensemester_kurzbz, $lv_id) + public function getAntragData($uid, $studiensemester_kurzbz, $lv_id) { - $anrechnung_data = new StdClass(); + $antrag_data = new StdClass(); // Get lehrveranstaltung data. Break, if course is not assigned to student. if(!$lv = getData($this->ci->LehrveranstaltungModel->getLvByStudent($uid, $studiensemester_kurzbz, $lv_id))[0]) @@ -43,23 +45,90 @@ class AnrechnungLib } // Get lectors of lehrveranstaltung - $anrechnung_data->lektoren = array(); + $antrag_data->lektoren = array(); if (!$lv_lektoren = getData($this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lv_id))) { show_error('Failed loading course lectors.'); } // Set the given studiensemester - $anrechnung_data->lv_bezeichnung = $lv->bezeichnung; - $anrechnung_data->ects = $lv->ects; - $anrechnung_data->studiensemester_kurzbz = $studiensemester_kurzbz; - $anrechnung_data->vorname = $person->vorname; - $anrechnung_data->nachname = $person->nachname; - $anrechnung_data->bpk = $person->bpk; - $anrechnung_data->stg_bezeichnung = $studiengang->bezeichnung; - $anrechnung_data->lektoren = $lv_lektoren; + $antrag_data->lv_id = $lv_id; + $antrag_data->lv_bezeichnung = $lv->bezeichnung; + $antrag_data->ects = $lv->ects; + $antrag_data->studiensemester_kurzbz = $studiensemester_kurzbz; + $antrag_data->vorname = $person->vorname; + $antrag_data->nachname = $person->nachname; + $antrag_data->bpk = $person->bpk; + $antrag_data->stg_bezeichnung = $studiengang->bezeichnung; + $antrag_data->lektoren = $lv_lektoren; - return $anrechnung_data; + return $antrag_data; + } + + /** + * Get Anrechnung data by Lehrveranstaltung. Also retrieves last status and Nachweisdokument dms data. + * @param $lehrveranstaltung_id + * @return array + * @throws Exception + */ + public function getAnrechnungData($lehrveranstaltung_id) + { + $anrechnung_data = new StdClass(); + $anrechnung_data->anrechnung_id = ''; + $anrechnung_data->begruendung_id = ''; + $anrechnung_data->anmerkung = ''; + $anrechnung_data->dms_id = ''; + $anrechnung_data->insertamum = ''; + $anrechnung_data->insertvon = ''; + $anrechnung_data->studiensemester_kurzbz = ''; + $anrechnung_data->empfehlung = false; + $anrechnung_data->status = ''; + $anrechnung_data->dokumentname = ''; + + $result = $this->ci->AnrechnungModel->loadWhere(array('lehrveranstaltung_id' => $lehrveranstaltung_id)); + + if (isError($result)) + { + show_error(getError($result)); + } + + if ($anrechnung = getData($result)[0]) + { + // Get Anrechnung data + $anrechnung_data->anrechnung_id = $anrechnung->anrechnung_id; + $anrechnung_data->begruendung_id = $anrechnung->begruendung_id; + $anrechnung_data->anmerkung = $anrechnung->anmerkung_student; + $anrechnung_data->dms_id = $anrechnung->dms_id; + $anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y'); + $anrechnung_data->insertvon= $anrechnung->insertvon; + $anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemster_kurzbz; + $anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung; + + // Get last status bezeichnung in the users language + $anrechnung_data->status = $this->getLastAnrechnungstatus($anrechnung->anrechnung_id); + + // Get document name + $this->ci->DmsVersionModel->addSelect('name'); + $result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $anrechnung->dms_id)); + $anrechnung_data->dokumentname = $result->retval[0]->name; + } + + return success($anrechnung_data); + } + + /** + * @param $anrechnung_id + * @return mixed + */ + public function getLastAnrechnungstatus($anrechnung_id) + { + $result = $this->ci->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id); + + $status_mehrsprachig = getData($result)[0]->bezeichnung_mehrsprachig; + $status = getUserLanguage() == 'German' ? $status_mehrsprachig[0] : $status_mehrsprachig[1]; + + return $status; } + } \ No newline at end of file From 5af134312c06f2692b6d16f5afd999c3fd47186d Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:12:08 +0100 Subject: [PATCH 12/28] Added logic for uploading file and saving anrechnung Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 99 ++++++++++++++++++- application/libraries/DmsLib.php | 1 + 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 482c5ab7b..d831f4f2d 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -91,9 +91,104 @@ class requestAnrechnung extends Auth_Controller $this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData); } - public function uploadFile($filename = null) + public function apply() { -// $this->extensionslib->installExtension(urldecode($filename)); + $anmerkung = $this->input->post('anmerkung'); + $begruendung_id = $this->input->post('begruendung'); + $lehrveranstaltung_id = $this->input->post('lehrveranstaltung_id'); + $studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz'); + + if (empty($_FILES['uploadfile']['name'])) + { + show_error('Missing upload file'); + } + + if (!is_numeric($begruendung_id) || !is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz)) + { + show_error('Missing correct parameter'); + } + + $result = $this->_getAnrechnung($lehrveranstaltung_id); + if (hasData($result)) + { + show_error('Der Antrag wurde bereits gestellt'); + } + + // Start DB transaction + $this->db->trans_start(false); + + // Upload document + $dms = array( + 'kategorie_kurzbz' => 'anrechnung', + 'version' => 0, + 'name' => $_FILES['uploadfile']['name'], + 'mimetype' => $_FILES['uploadfile']['type'], + 'insertamum' => (new DateTime())->format('Y-m-d H:i:s'), + 'insertvon' => $this->_uid + ); + + if(isError($uploaddata = $this->dmslib->upload($dms, array('jpg', 'pdf')))) + { + show_error(getError($uploaddata)); + } + + // Get PrestudentID + $result = $this->_loadPrestudent($this->_uid, $studiensemester_kurzbz); + + if (!$prestudent = getData($result)[0]) + { + show_error('Failed retrieving prestudent'); + } + + // Save Anrechnung with Status 'inProgressSTGL' + $result = $this->AnrechnungModel->insert(array( + 'prestudent_id' => $prestudent->prestudent_id, + 'lehrveranstaltung_id' => $lehrveranstaltung_id, + 'begruendung_id' => $begruendung_id, + 'dms_id' => $uploaddata->retval['dms_id'], + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'anmerkung_student' => $anmerkung + )); + + if (isError($result)) + { + show_error('Failed inserting Anrechnung'); + } + + $result = $this->AnrechnungModel->saveAnrechnungstatus($result->retval, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL); + + if (isError($result)) + { + show_error('Failed saving Anrechnungstatus'); + } + + // Transaction complete! + $this->db->trans_complete(); + + if ($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + show_error($result->msg, EXIT_ERROR); + } + + // Send mail to STGL + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + $studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz); + + // Send mail + $this->load->library('MailLib'); + if(!$this->maillib->send( + "noreply@". DOMAIN, + $studiengang->retval[0]->email, + 'Neuer LV-Anrechnungsantrag', + 'Eine neuer LV Anrechnungsantrag steht zur Prüfung bereit.')) + { + show_error('Failed sending email to STGL'); + } + else + { + redirect(site_url(). self::REQUEST_ANRECHNUNG_URI. '?studiensemester='. $studiensemester_kurzbz. '&lv_id='. $lehrveranstaltung_id); + } } diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index 04204012b..bad9e0acf 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -120,6 +120,7 @@ class DmsLib { return error('Failed inserting to DMS'); } + $upload_data['dms_id'] = $result->retval; // Insert DMS version if (!$result = $this->ci->DmsVersionModel->insert( From b57a3ec90f6a50f5746eafbb527055fa09623735 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:13:17 +0100 Subject: [PATCH 13/28] Added logic to download and open a document Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 14 +++++++ application/libraries/DmsLib.php | 41 +++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index d831f4f2d..68e06ca80 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -191,6 +191,20 @@ class requestAnrechnung extends Auth_Controller } } + /** + * Download and open uploaded document (Nachweisdokument). + */ + public function download() + { + $dms_id = $this->input->get('dms_id'); + + if (!is_numeric($dms_id)) + { + show_error('Wrong parameter'); + } + + $this->dmslib->download($dms_id); + } /** * Retrieve the UID of the logged user and checks if it is valid diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index bad9e0acf..64d58f987 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -132,6 +132,47 @@ class DmsLib // return result of uploaded data return success($upload_data); // data about the uploaded file } + + /** + * Download a document + * @param $dms_id + */ + public function download($dms_id) + { + if (!is_numeric($dms_id)) + { + show_error('Wrong parameter'); + } + + $this->ci->DmsVersionModel->addSelect('filename'); + $result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $dms_id)); + + if (isError($result)) + { + show_error(getError($result)); + } + + $filename = $result->retval[0]->filename; + $file = DMS_PATH. $filename; + + if (file_exists($file)) + { + $finfo = new finfo(FILEINFO_MIME); + + header('Content-Description: File Transfer'); + header('Content-Type: '.$finfo->file($file)); + header('Expires: 0'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Content-Length: ' . filesize($file)); + readfile($file); + exit; + } + else + { + show_error('File does not exist'); + } + } /** * Saves a Document From 091d921efad112f058caa7665f6c6712ae207863 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:16:53 +0100 Subject: [PATCH 14/28] Redesigned and adapted GUI Added download, alerts, new layout and styles that fit better to new adaptations and to other GUIs. Signed-off-by: cris-technikum --- .../lehre/anrechnung/requestAnrechnung.php | 212 ++++++++++-------- 1 file changed, 114 insertions(+), 98 deletions(-) diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 87ae62b0f..c1e9b7818 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -31,7 +31,7 @@ $this->load->view( ), 'customJSs' => array( 'public/js/bootstrapper.js', - 'public/js/lehre/anrechnung/Anrechnung.js') + 'public/js/lehre/anrechnung/requestAnrechnung.js') ) ); ?> @@ -40,149 +40,165 @@ $this->load->view(
    -
    - +
    + + 'requestAnrechnung-form'], + ['lehrveranstaltung_id' => $antragData->lv_id, 'studiensemester_kurzbz' => $antragData->studiensemester_kurzbz] + ); ?>
    -
    -
    - -
    -
    - -
    -
    -
    -
    - p->t('anrechnung', 'antragsdaten'); ?> - Status: p->t('anrechnung', 'neu'); ?> -
    - - +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + p->t('anrechnung', 'antrag'); ?> + Status: status; ?> +
    +
    + - + - + - + - + - + - + - -
    p->t('person', 'student'); ?>vorname. ' '. $anrechnungData->nachname; ?>vorname. ' '. $antragData->nachname; ?>
    p->t('person', 'personenkennzeichen'); ?>bpk ?>bpk ?>
    p->t('lehre', 'studiensemester'); ?>studiensemester_kurzbz ?>studiensemester_kurzbz ?>
    p->t('lehre', 'studiengang'); ?>stg_bezeichnung ?>stg_bezeichnung ?>
    p->t('lehre', 'lehrveranstaltung'); ?>lv_bezeichnung ?>lv_bezeichnung ?>
    p->t('lehre', 'ects'); ?>ects ?>ects ?>
    p->t('lehre', 'lektor'); ?> - lektoren) - 1 ?> - lektoren as $key => $lektor): ?> - vorname. ' '. $lektor->nachname; - echo $key === $len ? '' : ', ' ?> - + lektoren) - 1 ?> + lektoren as $key => $lektor): ?> + vorname. ' '. $lektor->nachname; + echo $key === $len ? '' : ', ' ?> +
    + + +
    -
    - -
    -
    -
    -
    - p->t('anrechnung', 'dokumentZumNachweis'); ?> -
    -
    - -
    - + +
    +
    +
    +

    p->t('anrechnung', 'antragStellenText'); ?>

    +
    + +
    +
    +
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - p->t('anrechnung', 'weitereInformationen'); ?> + +
    +
    +
    +
    + p->t('anrechnung', 'nachweisdokumente'); ?> +
    +
    +
    + > +
    + dms_id)): ?> + dokumentname ?> + +
    -
    - +
    +
    + +
    +
    +
    +
    +
    +
    + p->t('anrechnung', 'weitereInformationen'); ?> +
    +
    + +
    +
    +
    - -
    -
    -
    -

    p->t('anrechnung', 'antragStellenText'); ?>

    -
    - -
    -
    - -
    -
    -
    -
    +
    +
    + Status: status; ?> +
    + anrechnung_id)): ?> +
    + Antrag gestellt am insertamum; ?> +
    + + +
    + p->t('global', 'bearbeitungGesperrt'); ?> + anrechnung_id)? ': '. $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?> +anrechnung_id) ? $this->p->t('anrechnung', 'anrechnungIst'). ' '. $anrechnungData->status : ''; ?> +
    + +
    -
    -
    +
    From 85ec64876d18ff384fd35642fc2c4bb029195628 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:18:28 +0100 Subject: [PATCH 15/28] Changed permission to student/anrechnung_beantragen Signed-off-by: cris-technikum --- .../controllers/lehre/anrechnung/RequestAnrechnung.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 68e06ca80..c4f188f0c 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -18,8 +18,9 @@ class requestAnrechnung extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'admin:rw', - 'uploadFile' => 'admin:rw', + 'index' => 'student/anrechnung_beantragen:rw', + 'apply' => 'student/anrechnung_beantragen:rw', + 'download' => 'student/anrechnung_beantragen:rw', ) ); From dc84c91dae8f116940ce7d664c287a72de80247c Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:21:00 +0100 Subject: [PATCH 16/28] Added methods saveAnrechnungstatus() and getLastAnrechnungstatus() Signed-off-by: cris-technikum --- .../models/education/Anrechnung_model.php | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/application/models/education/Anrechnung_model.php b/application/models/education/Anrechnung_model.php index f16310fe4..56d3f3062 100644 --- a/application/models/education/Anrechnung_model.php +++ b/application/models/education/Anrechnung_model.php @@ -11,4 +11,40 @@ class Anrechnung_model extends DB_Model $this->dbTable = 'lehre.tbl_anrechnung'; $this->pk = 'anrechnung_id'; } + + /** + * Save Anrechnungstatus. + * @param $anrechnung_id + * @param $status_kurzbz + * @return array|null + */ + public function saveAnrechnungstatus($anrechnung_id, $status_kurzbz) + { + $qry = ' + INSERT INTO lehre.tbl_anrechnung_anrechnungstatus ( + anrechnung_id, status_kurzbz, insertvon + ) VALUES ( ?, ?, ?); + '; + + return $this->execQuery($qry, array($anrechnung_id, $status_kurzbz, getAuthUID())); + } + + /** + * Get the last inserted Anrechnungstatus + * @param $anrechnung_id + * @return array|null + */ + public function getLastAnrechnungstatus($anrechnung_id) + { + $qry = ' + SELECT status_kurzbz, bezeichnung_mehrsprachig + FROM lehre.tbl_anrechnungstatus + JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz) + WHERE anrechnung_id = ? + ORDER BY insertamum DESC + LIMIT 1 + '; + + return $this->execQuery($qry, array($anrechnung_id)); + } } From a1dfd3f598f3fb528572563a4522acdde4cfc000 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:21:53 +0100 Subject: [PATCH 17/28] Created new model Anrechnungstatus_model Signed-off-by: cris-technikum --- .../models/education/Anrechnungstatus_model.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 application/models/education/Anrechnungstatus_model.php diff --git a/application/models/education/Anrechnungstatus_model.php b/application/models/education/Anrechnungstatus_model.php new file mode 100644 index 000000000..6ae5ffd22 --- /dev/null +++ b/application/models/education/Anrechnungstatus_model.php @@ -0,0 +1,15 @@ +dbTable = 'lehre.tbl_anrechnungstatus'; + $this->pk = 'status_kurzbz'; + } +} From aff838d3c3307ed580d4c845583a584fcedc53d5 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 14:55:42 +0100 Subject: [PATCH 18/28] Fixed typo studiensemester in AnrechnungLib Signed-off-by: cris-technikum --- application/libraries/AnrechnungLib.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index ad3ce44b9..d317e4dfc 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -101,9 +101,8 @@ class AnrechnungLib $anrechnung_data->dms_id = $anrechnung->dms_id; $anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y'); $anrechnung_data->insertvon= $anrechnung->insertvon; - $anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemster_kurzbz; + $anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz; $anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung; - // Get last status bezeichnung in the users language $anrechnung_data->status = $this->getLastAnrechnungstatus($anrechnung->anrechnung_id); From 67c130f9c1c46ce831261cbff2e84d2c64fbc0e0 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 15:22:20 +0100 Subject: [PATCH 19/28] Included Anrechnung beantragen into CIS Menu Signed-off-by: cris-technikum --- config/global.config-default.inc.php | 1 + include/tw/cis_menu_lv.inc.php | 15 ++++++++++++++- locale/de-AT/lehre.php | 1 + locale/en-US/lehre.php | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 496eb73cb..b31447994 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -26,6 +26,7 @@ define('CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN',true); define('CIS_LEHRVERANSTALTUNG_SEMESTERINFO_ANZEIGEN',true); define('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN',false); define('CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN', true); +define('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN', true); // Im CIS Menue Links bei Modulen anzeigen wenn Lehrauftrag define('CIS_LEHRVERANSTALTUNG_MODULE_LINK',true); diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php index b8c42da11..173b8d88c 100644 --- a/include/tw/cis_menu_lv.inc.php +++ b/include/tw/cis_menu_lv.inc.php @@ -421,7 +421,6 @@ function checkZeilenUmbruch() 'link'=>'../../../cms/news.php?studiengang_kz='.urlencode($studiengang_kz).'&semester='.urlencode($semester), 'text'=>$text ); - } if(!defined('CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN) @@ -466,6 +465,20 @@ function checkZeilenUmbruch() } } + // Anerkennung nachgewiesener Kenntnisse (Anrechnung) + if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN) + && $rechte->isBerechtigt('student/anrechnung_beantragen')) + { + $menu[]=array + ( + 'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse', + 'position'=>'128', + 'name'=>$p->t('lehre/anerkennungNachgewiesenerKenntnisse'), + 'icon'=>'../../../skin/images/button_kreuzerltool.png', + 'link' => APP_ROOT. 'index.ci.php/lehre/anrechnung/RequestAnrechnung?studiensemester='.urlencode($angezeigtes_stsem).'&lv_id='.urlencode($lvid) + ); + } + //************* Menuepunkte anzeigen **************** diff --git a/locale/de-AT/lehre.php b/locale/de-AT/lehre.php index 46633c747..3262020d8 100644 --- a/locale/de-AT/lehre.php +++ b/locale/de-AT/lehre.php @@ -40,4 +40,5 @@ $this->phrasen['lehre/nichtzugeteilt']='Sie sind nicht zu dieser Lehrveranstaltu $this->phrasen['lehre/studienordnung']='Studienordnung'; $this->phrasen['lehre/studienplan']='Studienplan'; $this->phrasen['lehre/noteneingabedeaktiviert']='Noteneingabe deaktiviert'; +$this->phrasen['lehre/anerkennungNachgewiesenerKenntnisse']='Anerkennung nachgewiesener Kenntnisse'; ?> diff --git a/locale/en-US/lehre.php b/locale/en-US/lehre.php index 3fd6e5cd0..df990b6a1 100644 --- a/locale/en-US/lehre.php +++ b/locale/en-US/lehre.php @@ -40,4 +40,6 @@ $this->phrasen['lehre/nichtzugeteilt']='Sie sind nicht zu dieser Lehrveranstaltu $this->phrasen['lehre/studienordnung']='Studienordnung'; $this->phrasen['lehre/studienplan']='Studienplan'; $this->phrasen['lehre/noteneingabedeaktiviert']='Grading disabled'; +$this->phrasen['lehre/anerkennungNachgewiesenerKenntnisse']='Crediting for proven knowledge'; + ?> From 0d546dc0c0bc636cba626c5234c0f0345f1360a4 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 15:24:26 +0100 Subject: [PATCH 20/28] Renamed POST parameter lv_id, studiensemester ...to stay consistent Signed-off-by: cris-technikum --- .../controllers/lehre/anrechnung/RequestAnrechnung.php | 4 ++-- application/views/lehre/anrechnung/requestAnrechnung.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index c4f188f0c..b9d751611 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -96,8 +96,8 @@ class requestAnrechnung extends Auth_Controller { $anmerkung = $this->input->post('anmerkung'); $begruendung_id = $this->input->post('begruendung'); - $lehrveranstaltung_id = $this->input->post('lehrveranstaltung_id'); - $studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz'); + $lehrveranstaltung_id = $this->input->post('lv_id'); + $studiensemester_kurzbz = $this->input->post('studiensemester'); if (empty($_FILES['uploadfile']['name'])) { diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index c1e9b7818..7dd39b2e6 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -51,7 +51,7 @@ $this->load->view( 'requestAnrechnung-form'], - ['lehrveranstaltung_id' => $antragData->lv_id, 'studiensemester_kurzbz' => $antragData->studiensemester_kurzbz] + ['lv_id' => $antragData->lv_id, 'studiensemester' => $antragData->studiensemester_kurzbz] ); ?>
    From b6f5bc27037a9b11d419a5397fa5a20c88a40bdd Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 14 Jan 2021 15:27:44 +0100 Subject: [PATCH 21/28] Added phrases for Anrechnung beantragen Signed-off-by: cris-technikum --- system/phrasesupdate.php | 304 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 302 insertions(+), 2 deletions(-) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 727a389e4..cefdd6844 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -48,6 +48,26 @@ $phrases = array( ) ) ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'bearbeitungGesperrt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bearbeitung gesperrt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Locked for editing', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'global', @@ -1549,7 +1569,7 @@ $phrases = array( 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Student', + 'text' => 'StudentIn', 'description' => '', 'insertvon' => 'system' ), @@ -2471,7 +2491,7 @@ $phrases = array( 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Lektor', + 'text' => 'LektorIn', 'description' => '', 'insertvon' => 'system' ), @@ -7988,6 +8008,286 @@ Any unusual occurrences 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'anerkennungNachgewiesenerKenntnisse', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Anerkennung nachgewiesener Kenntnisse', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Crediting for proven knowledge', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'anrechnungBeantragen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Anrechnung beantragen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Apply', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragStellen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antrag stellen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Submit an application', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragsdaten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antragsdaten', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Application data', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'nachweisdokumente', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Nachweisdokumente', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Verification documents', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'person', + 'phrase' => 'personenkennzeichen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Personenkennzeichen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Personal identity number', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'hochladen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Hochladen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Upload', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragStellenText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ich beantrage die Feststellung der Gleichwertigkeit aufgrund', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragStellenWegenZeugnis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'eines Zeugnisses (vgl. § 4 Abs. 4, Satzungsteil 5 der FHTW)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragStellenWegenPraxis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'der nachgewiesenen beruflichen Praxis (vgl. § 4 Abs. 5, Satzungsteil 5 der FHTW)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => '', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'weitereInformationen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Weitere Informationen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Further information', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antrag', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antrag', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Application', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'anrechnungIst', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antrag ist', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Application is', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'deadlineUeberschritten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Deadline ist überschritten', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Deadline is exceeded', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From de5c67d2f18003e118b74fb0e585c8989f82440f Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 13:41:46 +0100 Subject: [PATCH 22/28] Devided methods getAnrechnungData and getAnrechnungDataByLv Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 2 +- application/libraries/AnrechnungLib.php | 81 ++++++++++++++----- 2 files changed, 64 insertions(+), 19 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index b9d751611..187d26685 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -69,7 +69,7 @@ class requestAnrechnung extends Auth_Controller $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz); // Get Anrechung data - $result = $this->anrechnunglib->getAnrechnungData($lehrveranstaltung_id); + $result = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id); if (!$anrechnungData = getData($result)) { show_error(getError($anrechnungData)); diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index d317e4dfc..f77565e7c 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -65,13 +65,44 @@ class AnrechnungLib return $antrag_data; } + /** + * Get Anrechnung data, last status and Nachweisdokument dms data. + * @param $anrechnung_id + * @return array + * @throws Exception + */ + public function getAnrechnungData($anrechnung_id) + { + if (!is_numeric($anrechnung_id)) + { + show_error('Incorrect parameter'); + } + + $anrechnung_data = new StdClass(); + + $result = $this->ci->AnrechnungModel->load($anrechnung_id); + + if (isError($result)) + { + show_error(getError($result)); + } + + if ($anrechnung = getData($result)[0]) + { + $anrechnung_data = $this->_setAnrechnungDataObject($anrechnung); + } + + return success($anrechnung_data); + + } + /** * Get Anrechnung data by Lehrveranstaltung. Also retrieves last status and Nachweisdokument dms data. * @param $lehrveranstaltung_id * @return array * @throws Exception */ - public function getAnrechnungData($lehrveranstaltung_id) + public function getAnrechnungDataByLv($lehrveranstaltung_id) { $anrechnung_data = new StdClass(); $anrechnung_data->anrechnung_id = ''; @@ -94,22 +125,7 @@ class AnrechnungLib if ($anrechnung = getData($result)[0]) { - // Get Anrechnung data - $anrechnung_data->anrechnung_id = $anrechnung->anrechnung_id; - $anrechnung_data->begruendung_id = $anrechnung->begruendung_id; - $anrechnung_data->anmerkung = $anrechnung->anmerkung_student; - $anrechnung_data->dms_id = $anrechnung->dms_id; - $anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y'); - $anrechnung_data->insertvon= $anrechnung->insertvon; - $anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz; - $anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung; - // Get last status bezeichnung in the users language - $anrechnung_data->status = $this->getLastAnrechnungstatus($anrechnung->anrechnung_id); - - // Get document name - $this->ci->DmsVersionModel->addSelect('name'); - $result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $anrechnung->dms_id)); - $anrechnung_data->dokumentname = $result->retval[0]->name; + $anrechnung_data = $this->_setAnrechnungDataObject($anrechnung); } return success($anrechnung_data); @@ -128,6 +144,35 @@ class AnrechnungLib return $status; } - + private function _setAnrechnungDataObject($anrechnung) + { + $anrechnung_data = new StdClass(); + + // Get Anrechnung data + $anrechnung_data->anrechnung_id = $anrechnung->anrechnung_id; + $anrechnung_data->begruendung_id = $anrechnung->begruendung_id; + $anrechnung_data->anmerkung = $anrechnung->anmerkung_student; + $anrechnung_data->dms_id = $anrechnung->dms_id; + $anrechnung_data->insertamum = (new DateTime($anrechnung->insertamum))->format('d.m.Y'); + $anrechnung_data->insertvon= $anrechnung->insertvon; + $anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz; + $anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung; + + // Get last status bezeichnung in the users language + $anrechnung_data->status = $this->getLastAnrechnungstatus($anrechnung->anrechnung_id); + + // Get document name + $this->ci->DmsVersionModel->addSelect('name'); + $result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $anrechnung->dms_id)); + + if (isError($result)) + { + show_error(getError($result)); + } + + $anrechnung_data->dokumentname = $result->retval[0]->name; + + return $anrechnung_data; + } } \ No newline at end of file From 4e0fd56d9913e71c71745ab28e8df146f617705e Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 13:45:11 +0100 Subject: [PATCH 23/28] Corrected empfehlung default value Now default value is empty instead of false, as there are 3 different stati to retrieve 1. null = no recommendation at all (default) 1. true = recommended 1. false = not recommended Signed-off-by: cris-technikum --- application/libraries/AnrechnungLib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index f77565e7c..a39e40fb3 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -112,7 +112,7 @@ class AnrechnungLib $anrechnung_data->insertamum = ''; $anrechnung_data->insertvon = ''; $anrechnung_data->studiensemester_kurzbz = ''; - $anrechnung_data->empfehlung = false; + $anrechnung_data->empfehlung = ''; $anrechnung_data->status = ''; $anrechnung_data->dokumentname = ''; From 0edccc299ce367aeffbf0e1badf0e9c0304a8534 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 13:52:26 +0100 Subject: [PATCH 24/28] Deleted js-file - not needed by now Signed-off-by: cris-technikum --- application/views/lehre/anrechnung/requestAnrechnung.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 7dd39b2e6..726a2892d 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -30,8 +30,8 @@ $this->load->view( ) ), 'customJSs' => array( - 'public/js/bootstrapper.js', - 'public/js/lehre/anrechnung/requestAnrechnung.js') + 'public/js/bootstrapper.js' + ) ) ); ?> From 3ffc5c7d3f16a491cd7f126b67ae84ba9eb8f5f0 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 13:55:45 +0100 Subject: [PATCH 25/28] Deactivated application deadline Deactivated application deadline by setting checking variable is_expired to false. This is to keep the logic for a later time when the application deadline is going to be defined. Signed-off-by: cris-technikum --- .../lehre/anrechnung/RequestAnrechnung.php | 3 ++- .../views/lehre/anrechnung/requestAnrechnung.php | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/application/controllers/lehre/anrechnung/RequestAnrechnung.php b/application/controllers/lehre/anrechnung/RequestAnrechnung.php index 187d26685..ed09b131a 100644 --- a/application/controllers/lehre/anrechnung/RequestAnrechnung.php +++ b/application/controllers/lehre/anrechnung/RequestAnrechnung.php @@ -66,7 +66,8 @@ class requestAnrechnung extends Auth_Controller } // Check if application deadline is expired - $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz); + // $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz); + $is_expired = false; // Set to false until Deadline is defined // Get Anrechung data $result = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id); diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 726a2892d..0b11094e4 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -182,12 +182,11 @@ $this->load->view( Antrag gestellt am insertamum; ?>
    - -
    - p->t('global', 'bearbeitungGesperrt'); ?> - anrechnung_id)? ': '. $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?> -anrechnung_id) ? $this->p->t('anrechnung', 'anrechnungIst'). ' '. $anrechnungData->status : ''; ?> -
    + +
    + p->t('global', 'bearbeitungGesperrt'); ?> + anrechnung_id)? ': '. $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?> +
    From e04e58441037b89a539e18d7807d7f2ec67d28ed Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 15:08:16 +0100 Subject: [PATCH 26/28] Added Anrechnungsdatum Signed-off-by: cris-technikum --- .../lehre/anrechnung/requestAnrechnung.php | 7 +------ system/phrasesupdate.php | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/application/views/lehre/anrechnung/requestAnrechnung.php b/application/views/lehre/anrechnung/requestAnrechnung.php index 0b11094e4..7e37e9e52 100644 --- a/application/views/lehre/anrechnung/requestAnrechnung.php +++ b/application/views/lehre/anrechnung/requestAnrechnung.php @@ -66,7 +66,7 @@ $this->load->view(
    p->t('anrechnung', 'antrag'); ?> - Status: status; ?> + p->t('anrechnung', 'antragdatum'); ?>: anrechnung_id) ? $anrechnungData->insertamum : '-' ?>
    @@ -177,11 +177,6 @@ $this->load->view(
    Status: status; ?>
    - anrechnung_id)): ?> -
    - Antrag gestellt am insertamum; ?> -
    -
    p->t('global', 'bearbeitungGesperrt'); ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index cefdd6844..d6cec5a1e 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8288,6 +8288,26 @@ Any unusual occurrences 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'core', + 'category' => 'anrechnung', + 'phrase' => 'antragdatum', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Antragsdatum', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Application date', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) ); From 4df012798f38b684e4f74d539a722cc6a9e67de0 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 18 Jan 2021 15:09:01 +0100 Subject: [PATCH 27/28] Changed bpk to Matrikelnummer Signed-off-by: cris-technikum --- application/libraries/AnrechnungLib.php | 3 ++- application/models/person/Person_model.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php index a39e40fb3..4a8f0f962 100644 --- a/application/libraries/AnrechnungLib.php +++ b/application/libraries/AnrechnungLib.php @@ -58,7 +58,8 @@ class AnrechnungLib $antrag_data->studiensemester_kurzbz = $studiensemester_kurzbz; $antrag_data->vorname = $person->vorname; $antrag_data->nachname = $person->nachname; - $antrag_data->bpk = $person->bpk; +// $antrag_data->bpk = $person->bpk; + $antrag_data->bpk = $person->matr_nr; $antrag_data->stg_bezeichnung = $studiengang->bezeichnung; $antrag_data->lektoren = $lv_lektoren; diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index bf85efe33..128af7860 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -191,7 +191,7 @@ class Person_model extends DB_Model */ public function getByUid($uid) { - $this->addSelect('vorname, nachname, gebdatum, person_id, bpk'); + $this->addSelect('vorname, nachname, gebdatum, person_id, bpk, matr_nr'); $this->addJoin('tbl_benutzer', 'person_id'); return $this->loadWhere(array('uid' => $uid)); From c0952af290d0e3e8c35761b2450fc8832dcd105d Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 19 Jan 2021 08:27:59 +0100 Subject: [PATCH 28/28] Corrected default value for empfehlung_anrechnung to be nullable Signed-off-by: cris-technikum --- system/dbupdate_3.3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 9ca75012b..0e172f9f0 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4473,7 +4473,7 @@ if(!$result = @$db->db_query("SELECT dms_id FROM lehre.tbl_anrechnung")) ALTER TABLE lehre.tbl_anrechnung ADD COLUMN dms_id bigint; ALTER TABLE lehre.tbl_anrechnung ADD COLUMN studiensemester_kurzbz varchar(6); ALTER TABLE lehre.tbl_anrechnung ADD COLUMN anmerkung_student text; - ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean DEFAULT FALSE; + ALTER TABLE lehre.tbl_anrechnung ADD COLUMN empfehlung_anrechnung boolean; ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_studiensemester FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE lehre.tbl_anrechnung ADD CONSTRAINT fk_anrechnung_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms(dms_id) ON DELETE RESTRICT ON UPDATE CASCADE;