From 631ef93d6b3a26e3ac592ee6600893f369938b25 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 22 Jan 2019 17:45:34 +0100 Subject: [PATCH 1/2] Infocenter: - even if a prestudent is already freigegeben for a studiengang, and if Quereinstieg, "shorter" Quereinstiegsinfomessage is sent when zum RT freigegeben - message sending: replaced ugly html parsing for check if already freigegeben with AJAX call --- .../system/infocenter/InfoCenter.php | 12 ++ .../views/system/infocenter/zgvpruefungen.php | 3 - public/js/infocenter/infocenterDetails.js | 124 ++++++++++++------ 3 files changed, 98 insertions(+), 41 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 65a6aec07..4c71da84a 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -78,6 +78,7 @@ class InfoCenter extends Auth_Controller 'showDetails' => 'infocenter:r', 'unlockPerson' => 'infocenter:rw', 'saveFormalGeprueft' => 'infocenter:rw', + 'getPrestudentData' => 'infocenter:r', 'getLastPrestudentWithZgvJson' => 'infocenter:r', 'getZgvInfoForPrestudent' => 'infocenter:r', 'saveBewPriorisierung' => 'infocenter:rw', @@ -263,6 +264,17 @@ class InfoCenter extends Auth_Controller $this->output->set_content_type('application/json')->set_output(json_encode($json)); } + /** + * Gets prestudent data for a person in json format + * @param $person_id + */ + public function getPrestudentData($person_id) + { + $prestudentdata = $this->_loadPrestudentData($person_id); + + $this->output->set_content_type('application/json')->set_output(json_encode($prestudentdata['zgvpruefungen'])); + } + /** * Gets prestudent that was last modified in json format, for ZGV übernehmen * @param $person_id diff --git a/application/views/system/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php index a26c94177..4f4037f43 100644 --- a/application/views/system/infocenter/zgvpruefungen.php +++ b/application/views/system/infocenter/zgvpruefungen.php @@ -98,9 +98,6 @@
- -
diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 5a1fd7653..252647a71 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -4,6 +4,7 @@ const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path; const CONTROLLER_URL = BASE_URL + "/"+CALLED_PATH; const RTFREIGABE_MESSAGE_VORLAGE = "InfocenterRTfreigegeben"; const RTFREIGABE_MESSAGE_VORLAGE_QUER = "InfocenterRTfreigegQuer"; +const RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ = "InfocenterRTfreigegQuerKurz"; const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben"; /** @@ -277,6 +278,9 @@ var InfocenterDetails = { { FHC_AjaxClient.showVeil(); InfocenterDetails.initFrgMessageSend(data.retval.prestudent_id, rtfreigabe); + InfocenterDetails._refreshZgv(); + FHC_AjaxClient.hideVeil(); + InfocenterDetails._refreshLog(); } else if (data.error === 2 && parseInt(data.retval.prestudent_id, 10)) { @@ -460,48 +464,98 @@ var InfocenterDetails = { } ); }, + getPrestudentData: function(personid, callback) + { + FHC_AjaxClient.ajaxCallGet( + CALLED_PATH + "/getPrestudentData/"+encodeURIComponent(personid), + null, + { + successCallback: callback, + veilTimeout: 0 + } + ); + }, initFrgMessageSend: function(prestudentid, rtfreigabe) { - var callback = function () + var callback = function (data) { + if (data == null) + return; + // check if a prestudent in same semester is already freigegeben - then not send message again var freigegeben = false; - var prestudentids = $(".prestudentidinput"); + var receiverPrestudentstatus = null; - if (prestudentids.length > 1) + //get prestudentstatus of message receiver + for(var i = 0; i < data.length; i++) { - prestudentids.each(function() - { - var id = $(this).val(); - - if (parseInt(id) !== parseInt(prestudentid)) - { - if ($("#studiensemester_"+id).val() === $("#studiensemester_"+prestudentid).val() && $("#isfreigegeben_"+id).val() === "1") - { - freigegeben = true; - return false; - } - } - } - ); + if (data[i].prestudentstatus.prestudent_id === prestudentid) + { + receiverPrestudentstatus = data[i].prestudentstatus; + break; + } } + if (receiverPrestudentstatus == null) + return; + + //check other prestudentstati wether already freigegeben + for(var j = 0; j < data.length; j++) + { + var prestudent = data[j]; + var prestudentstatus = prestudent.prestudentstatus; + var id = prestudentstatus.prestudent_id; + + if (id !== prestudentid) + { + if (receiverPrestudentstatus.studiensemester_kurzbz === prestudentstatus.studiensemester_kurzbz + && prestudentstatus.bestaetigtam !== null && prestudentstatus.status_kurzbz === "Interessent" + && prestudent.studiengangtyp === "b") + { + freigegeben = true; + break; + } + } + } + + var ausbildungssemester = receiverPrestudentstatus.ausbildungssemester; + var studiengangbezeichnung = receiverPrestudentstatus.studiengangbezeichnung; + var studiengangbezeichnung_englisch = receiverPrestudentstatus.studiengangbezeichnung_englisch; + var msgvars = {}; + if (freigegeben) { InfocenterDetails._refreshLog(); + //if already freigegeben, still send (shorter) message if Quereinsteiger + if (ausbildungssemester > 1) + { + msgvars = { + 'ausbildungssemester': ausbildungssemester, + 'studiengangbezeichnung': studiengangbezeichnung, + 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch + }; + InfocenterDetails.sendFreigabeMessage(prestudentid, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars); + } } else { - var ausbildungssem = $("#ausbildungssem_" + prestudentid).val(); var vorlage_kurzbz = null; - var msgvars = {}; if (rtfreigabe) { - vorlage_kurzbz = isNaN(ausbildungssem) || parseInt(ausbildungssem) === 1 ? RTFREIGABE_MESSAGE_VORLAGE : RTFREIGABE_MESSAGE_VORLAGE_QUER; - msgvars = { - 'rtlink': FHC_JS_DATA_STORAGE_OBJECT.app_root + 'addons/bewerbung/cis/registration.php?active=aufnahme', - 'ausbildungssemester': ausbildungssem + if (ausbildungssemester > 1) + { + vorlage_kurzbz = RTFREIGABE_MESSAGE_VORLAGE_QUER; + msgvars = { + /*'rtlink': FHC_JS_DATA_STORAGE_OBJECT.app_root + 'addons/bewerbung/cis/registration.php?active=aufnahme',*/ + 'ausbildungssemester': ausbildungssemester, + 'studiengangbezeichnung': studiengangbezeichnung, + 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch + } + } + else + { + vorlage_kurzbz = RTFREIGABE_MESSAGE_VORLAGE; } } else @@ -510,18 +564,16 @@ var InfocenterDetails = { } InfocenterDetails.sendFreigabeMessage(prestudentid, vorlage_kurzbz, msgvars); } - FHC_AjaxClient.hideVeil(); }; - InfocenterDetails._refreshZgv( - false, - //send message only after refresh to have current Ausbildungssemester - callback - ); + var personid = $("#hiddenpersonid").val(); + + InfocenterDetails.getPrestudentData( + personid, callback + ) }, sendFreigabeMessage: function(prestudentid, vorlage_kurzbz, msgvars) { - FHC_AjaxClient.ajaxCallPost( 'system/Messages/sendJson', { @@ -668,7 +720,7 @@ var InfocenterDetails = { $(".freigabeModal").modal("hide"); var prestudent_id = this.id.substr(this.id.indexOf("_") + 1); var data = {"prestudent_id": prestudent_id}; - InfocenterDetails.saveFreigabe(data, true); + InfocenterDetails.saveFreigabe(data, true);//Reihungstestfreigabe } ); @@ -678,17 +730,17 @@ var InfocenterDetails = { var prestudent_id = this.id.substr(this.id.indexOf("_") + 1); var statusgrund_id = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]").val(); var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id}; - InfocenterDetails.saveFreigabe(data); + InfocenterDetails.saveFreigabe(data);//Studiengangfreigabe } ) }, - _refreshZgv: function(preserveCollapseState, callback) + _refreshZgv: function(preserveCollapseState) { var personid = $("#hiddenpersonid").val(); var collapsed = {}; - //save if panel is collapsed to preserve collapse state + //check if panel is collapsed to preserve collapse state if (preserveCollapseState) { $("#zgvpruefungen").find(".panel-collapse").each( @@ -715,10 +767,6 @@ var InfocenterDetails = { $("#"+i).addClass("in"); } } - - // variable callback executed after refresh - if (callback) - callback(); } ); }, From cf347c42f2da89096ceef451a74a8adeb4169706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 29 Jan 2019 08:18:06 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Beim=20automatischen=20Erstellen=20von=20Pr?= =?UTF-8?q?=C3=BCfungsterminen=20nach=20der=20Noteneintragung=20im=20FAS?= =?UTF-8?q?=20wird=20Lehreinheit=20jetzt=20korrekt=20ermittelt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/student/studentDBDML.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 6fdbd7306..02fa0deab 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -176,10 +176,17 @@ function NotePruefungAnlegen($studiensemester_kurzbz, $student_uid, $lehrveranst // Lehreinheit ermitteln $error = false; - $qry = "SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung " - . "WHERE uid=".$db->db_add_param($student_uid)." AND lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id)." " - . "ORDER BY lehreinheit_id ASC " - . "LIMIT 1"; + $qry = " + SELECT + lehreinheit_id + FROM + campus.vw_student_lehrveranstaltung + WHERE + uid=".$db->db_add_param($student_uid)." + AND lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id)." + AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." + ORDER BY lehreinheit_id ASC + LIMIT 1"; if($result = $db->db_query($qry)) { @@ -1209,7 +1216,7 @@ if(!$error) $rolle->bestaetigtam = $_POST['bestaetigtam']; if($_POST['bestaetigtam']=='') $rolle->bestaetigtvon = null; - + $rolle->bewerbung_abgeschicktamum = $_POST['bewerbung_abgeschicktamum']; $rolle->orgform_kurzbz = $_POST['orgform_kurzbz']; $rolle->studienplan_id = $_POST['studienplan_id'];