mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user