From 73328f0dea2459ef1cab8199b28a0e98f51d2e7c Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 21 May 2019 18:28:28 +0200 Subject: [PATCH] =?UTF-8?q?Infocenter=20Message=20Sending=20-=20Infocenter?= =?UTF-8?q?=20RT=20Freigabe=20not=20sent=20if=20Prestudent=20has=20ANY=20b?= =?UTF-8?q?est=C3=A4tigt=20Interessentenstatus=20for=20the=20Studiensemest?= =?UTF-8?q?er=20(not=20only=20last=20Status)=20-=20removed=20unnecessary?= =?UTF-8?q?=20interessentenCount=20array=20-=20moved=20part=20of=20message?= =?UTF-8?q?=20send=20check=20logic=20to=20InfoCenter=20Controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/infocenter/InfoCenter.php | 51 +++++++++++++++---- public/js/infocenter/infocenterDetails.js | 25 ++++----- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 575f1f23b..4a66daabe 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -65,6 +65,9 @@ class InfoCenter extends Auth_Controller ) ); + // Statusgruende for which no Studiengangsfreigabemessage should be sent + private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme'); + /** * Constructor */ @@ -1210,18 +1213,16 @@ class InfoCenter extends Auth_Controller show_error($prestudenten->retval); } - $interessentenCount = array(); - foreach ($prestudenten->retval as $prestudent) { - $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id); + $prestudentWithZgv = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id); - if (isError($prestudent)) + if (isError($prestudentWithZgv)) { - show_error($prestudent->retval); + show_error($prestudentWithZgv->retval); } - $zgvpruefung = $prestudent->retval[0]; + $zgvpruefung = $prestudentWithZgv->retval[0]; if (isset($zgvpruefung->prestudentstatus)) { @@ -1233,7 +1234,39 @@ class InfoCenter extends Auth_Controller //if prestudent is not interessent or is already bestaetigt, then show only as information, non-editable $zgvpruefung->infoonly = !isset($zgvpruefung->prestudentstatus) || isset($zgvpruefung->prestudentstatus->bestaetigtam) || $zgvpruefung->prestudentstatus->status_kurzbz != 'Interessent'; - //numeric application priority + //wether prestudent was freigegeben for RT/Stg + $zgvpruefung->isRtFreigegeben = false; + $zgvpruefung->isStgFreigegeben = false; + $zgvpruefung->sendStgFreigabeMsg = true;//wether Stgudiengangfreigabemessage can be sent (for "exceptions", Studiengänge with no message sending) + $this->PrestudentstatusModel->addSelect('bestaetigtam, statusgrund_id, tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund'); + $this->PrestudentstatusModel->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT'); + $isFreigegeben = $this->PrestudentstatusModel->loadWhere(array('studiensemester_kurzbz' => $zgvpruefung->prestudentstatus->studiensemester_kurzbz, + 'tbl_prestudentstatus.status_kurzbz' => 'Interessent', 'prestudent_id' => $prestudent->prestudent_id)); + + + if (hasData($isFreigegeben)) + { + foreach ($isFreigegeben->retval as $prestudentstatus) + { + if (isset($prestudentstatus->bestaetigtam)) + { + //if statusgrund set - RTfreigabe, otherwise Stgfreigabe + if (isset($prestudentstatus->statusgrund_id)) + { + if (isset($prestudentstatus->bezeichnung_statusgrund[0]) + && in_array($prestudentstatus->bezeichnung_statusgrund[0], $this->_statusgruendeNoStgFreigabeMessage)) + $zgvpruefung->sendStgFreigabeMsg = false; + else + $zgvpruefung->isStgFreigegeben = true; + + } + else + $zgvpruefung->isRtFreigegeben = true; + } + } + } + + //application priority change possible? $zgvpruefung->changeup = false; $zgvpruefung->changedown = false; @@ -1244,10 +1277,6 @@ class InfoCenter extends Auth_Controller $studiensemester = $zgvpruefung->prestudentstatus->studiensemester_kurzbz; $zgvpruefung->changeup = $this->PrestudentModel->checkPrioChange($zgvpruefung->prestudent_id, $studiensemester, -1); $zgvpruefung->changedown = $this->PrestudentModel->checkPrioChange($zgvpruefung->prestudent_id, $studiensemester, 1); - if (array_key_exists($studiensemester, $interessentenCount)) - $interessentenCount[$studiensemester]++; - else - $interessentenCount[$studiensemester] = 1; } } diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index e05b772ce..471fc1c18 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -9,7 +9,6 @@ const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben"; //Statusgründe for which no Studiengang Freigabe Message should be sent const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027]; -const STGFREIGABE_MESSAGESEND_EXCEPTIONS = ["FIT Programm", "FIT program", "FIT programme"]; /** * javascript file for infocenterDetails page @@ -510,10 +509,11 @@ var InfocenterDetails = { var prestudent_id = freigabedata.prestudent_id; var statusgrund_id = freigabedata.statusgrund_id; - var rtfreigabe = !$.isNumeric(statusgrund_id); + var rtfreigabe = !$.isNumeric(statusgrund_id);//no Statusgrund - RT Freigabe var rtFreigegeben = false; var stgFreigegeben = false; + var receiverPrestudent = null; var receiverPrestudentstatus = null; //get prestudentstatus of message receiver @@ -521,12 +521,13 @@ var InfocenterDetails = { { if (prestudentdata[i].prestudentstatus.prestudent_id === prestudent_id) { - receiverPrestudentstatus = prestudentdata[i].prestudentstatus; + receiverPrestudent = prestudentdata[i]; + receiverPrestudentstatus = receiverPrestudent.prestudentstatus; break; } } - if (receiverPrestudentstatus == null) + if (receiverPrestudent == null || receiverPrestudentstatus == null) return; //check other prestudentstati wether already freigegeben @@ -536,20 +537,18 @@ var InfocenterDetails = { var prestudentstatus = prestudent.prestudentstatus; var id = prestudentstatus.prestudent_id; - if (id !== prestudent_id) + if (id !== prestudent_id) //exclude receiver prestudentstatus { - var fitfreigegeben = $.inArray(prestudentstatus.bezeichnung_statusgrund[0], STGFREIGABE_MESSAGESEND_EXCEPTIONS) >= 0; var fitstg = $.inArray(parseInt(prestudent.studiengang_kz), FIT_PROGRAMM_STUDIENGAENGE) >= 0; if (receiverPrestudentstatus.studiensemester_kurzbz === prestudentstatus.studiensemester_kurzbz - && prestudentstatus.bestaetigtam !== null && prestudentstatus.status_kurzbz === "Interessent" && (prestudent.studiengangtyp === "b" || fitstg)) { - if (prestudentstatus.statusgrund_id === null) + if (prestudent.isRtFreigegeben) { rtFreigegeben = true; } - else if ($.isNumeric(prestudentstatus.statusgrund_id) && !fitfreigegeben) + else if (prestudent.isStgFreigegeben) { stgFreigegeben = true; } @@ -603,12 +602,10 @@ var InfocenterDetails = { InfocenterDetails.sendFreigabeMessage(prestudent_id, vorlage, msgvars); } } - else if (rtfreigabe === false) + else { - var statusgrundbez = freigabedata.statusgrundbezeichnung ? freigabedata.statusgrundbezeichnung : ""; - - //if Freigabe to Studiengang, send StgFreigabe Message if not already sent - if (!stgFreigegeben && $.inArray(statusgrundbez, STGFREIGABE_MESSAGESEND_EXCEPTIONS) < 0) + //if Freigabe to Studiengang, send StgFreigabe Message if not already sent and allowed to send + if (!stgFreigegeben && receiverPrestudent.sendStgFreigabeMsg === true) { InfocenterDetails.sendFreigabeMessage(prestudent_id, STGFREIGABE_MESSAGE_VORLAGE, msgvars); }