Infocenter Message Sending

- Infocenter RT Freigabe not sent if Prestudent has ANY bestätigt Interessentenstatus for the Studiensemester (not only last Status)
- removed unnecessary interessentenCount array
- moved part of message send check logic to InfoCenter Controller
This commit is contained in:
alex
2019-05-21 18:28:28 +02:00
parent d95441fb52
commit 73328f0dea
2 changed files with 51 additions and 25 deletions
@@ -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;
}
}
+11 -14
View File
@@ -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);
}