Merge branch 'feature-6079/Infocenter_Freigabe_nach_RT_Anmeldung'

This commit is contained in:
Andreas Österreicher
2020-03-02 16:03:28 +01:00
4 changed files with 135 additions and 7 deletions
@@ -69,6 +69,7 @@ class InfoCenter extends Auth_Controller
// Name of Interessentenstatus
const INTERESSENTSTATUS = 'Interessent';
const ABGEWIESENERSTATUS = 'Abgewiesener';
const BEWERBERSTATUS = 'Bewerber';
// Statusgruende for which no Studiengangsfreigabemessage should be sent
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
@@ -493,7 +494,9 @@ class InfoCenter extends Auth_Controller
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
$akteresult = $this->AkteModel->loadWhere(array('person_id' => $logdata['person_id'], 'formal_geprueft_amum !=' => NULL));
$person_id = $logdata['person_id'];
$akteresult = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'formal_geprueft_amum !=' => NULL));
if (hasData($lastStatus) && isSuccess($akteresult))
{
@@ -529,6 +532,8 @@ class InfoCenter extends Auth_Controller
if (isSuccess($result))
{
$this->load->model('crm/Dokumentprestudent_model', 'DokumentprestudentModel');
$json->retval['nonCriticalErrors'] = array();
$json->retval['infoMessages'] = array();
//set documents which have been formal geprüft to accepted
$dokument_kurzbzs = array();
@@ -542,7 +547,7 @@ class InfoCenter extends Auth_Controller
// acceptresult returns null if no documents to accept
if ($acceptresult !== null && isError($acceptresult))
$json->retval['nonCriticalErrors'] = 'error when accepting documents in FAS';
$json->retval['nonCriticalErrors'][] = 'error when accepting documents in FAS';
$logparams = array($prestudent_id, $logdata['studiengang_kurzbz'], '');
@@ -554,8 +559,69 @@ class InfoCenter extends Auth_Controller
if (hasData($statusgrund_kurzbz))
$logparams[2] = ', confirmation type '.$statusgrund_kurzbz->retval[0]->bezeichnung_mehrsprachig[0];
}
else
{
// check if there is already a Bewerberstatus and Reihungsverfahren already absolviert
$bewerber = $this->PersonModel->hasBewerber($person_id, $lastStatus->studiensemester_kurzbz, 'b');
$this->_log($logdata['person_id'], 'freigegeben', $logparams);
if (hasData($bewerber))
{
$bewerbercnt = getData($bewerber);
if (is_numeric($bewerbercnt[0]->anzahl_bewerber) && $bewerbercnt[0]->anzahl_bewerber > 0)
{
// then insert Bewerberstatus and rt absolviert, teilgenommen for prestudent
$bewerberresult = $this->PrestudentstatusModel->insert(
array(
'prestudent_id' => $prestudent_id,
'status_kurzbz' => self::BEWERBERSTATUS,
'studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
'ausbildungssemester' => $lastStatus->ausbildungssemester,
'datum' => date('Y-m-d'),
'orgform_kurzbz' => $lastStatus->orgform_kurzbz,
'studienplan_id' => $lastStatus->studienplan_id,
'insertvon' => $this->_uid,
'insertamum' => date('Y-m-d H:i:s')
)
);
if (isError($bewerberresult))
$json->retval['nonCriticalErrors'][] = 'error when inserting Bewerberstatus';
$rtangetretenres = $this->PrestudentModel->update(
$prestudent_id,
array(
'reihungstestangetreten' => true
)
);
if (isError($rtangetretenres))
{
$json->retval['nonCriticalErrors'][] = 'error when setting reihungstestangetreten';
}
else
{
$json->retval['infoMessages'][] = $this->p->t('infocenter', 'rtPunkteEintragenInfo');
$this->load->model('crm/RtPerson_model', 'RtPersonModel');
$rtteilgenommenres = $this->RtPersonModel->update(
array(
'person_id' => $person_id,
'studienplan_id' => $lastStatus->studienplan_id
),
array(
'teilgenommen' => true
)
);
if (isError($rtteilgenommenres))
$json->retval['nonCriticalErrors'][] = 'error when setting reihungstest teilgenommen';
}
}
}
}
$this->_log($person_id, 'freigegeben', $logparams);
$this->_sendFreigabeMail($prestudent_id);
}
@@ -1496,7 +1562,7 @@ class InfoCenter extends Auth_Controller
}
/**
* Sends infomail with prestudent and person data when Prestudent is freigegeben
* Sends infomail to Studiengang with prestudent and person data when Prestudent is freigegeben
* @param $prestudent_id
*/
private function _sendFreigabeMail($prestudent_id)
@@ -213,4 +213,39 @@ class Person_model extends DB_Model
return $this->loadWhere(array('uid' => $uid, 'content' => true));
}
/**
* Checks if a person has a Bewerberstatus and reihungstestangetreten = true
* @param $person_id
* @param $studiensemester_kurzbz
* @return array
*/
public function hasBewerber($person_id, $studiensemester_kurzbz, $studiengangtyp = null)
{
$parametersArray = array($person_id, $studiensemester_kurzbz);
$qry = "SELECT count(*) AS anzahl_bewerber FROM public.tbl_person
JOIN public.tbl_prestudent USING (person_id)
JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = tbl_prestudent.prestudent_id";
if (isset($studiengangtyp))
{
$qry .= " JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN public.tbl_studiengang ON tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz";
}
$qry .= " WHERE person_id = ?
AND studiensemester_kurzbz = ?
AND tbl_prestudentstatus.status_kurzbz = 'Bewerber'
AND reihungstestangetreten";
if (isset($studiengangtyp))
{
$parametersArray[] = $studiengangtyp;
$qry .= " AND tbl_studiengang.typ = ?";
}
return $this->execQuery($qry, $parametersArray);
}
}
+6 -3
View File
@@ -284,10 +284,13 @@ var InfocenterDetails = {
{
var freigabeResponseData = FHC_AjaxClient.getData(data);
if (freigabeResponseData.nonCriticalErrors && freigabeResponseData.nonCriticalErrors.length > 0
&& typeof freigabeResponseData.nonCriticalErrors == "string")
if (freigabeResponseData.nonCriticalErrors && freigabeResponseData.nonCriticalErrors.length > 0)
{
FHC_DialogLib.alertWarning(freigabeResponseData.nonCriticalErrors);
FHC_DialogLib.alertWarning(freigabeResponseData.nonCriticalErrors.join(", "));
}
else if (freigabeResponseData.infoMessages && freigabeResponseData.infoMessages.length > 0)
{
FHC_DialogLib.alertInfo(freigabeResponseData.infoMessages.join(", "));
}
FHC_AjaxClient.showVeil();
InfocenterDetails.initFrgMessageSend(freigabeData);
+24
View File
@@ -3610,6 +3610,30 @@ When on hold, the date is only a reminder.',
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'rtPunkteEintragenInfo',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es existierte bereits ein Bewerberstatus und eine Reihungstestteilnahme.
Deshalb wurde bei der Freigabe der Bewerberstatus automatisch hinzugefügt und der Bewerber als Reihungstestabsolvent markiert.
Die Reihungstestpunkte müssen aber noch manuell eingetragen werden!',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'An applicant status and a placement test participation already existed for this person.
Thus, the applicant status was added automatically and the applicant was marked as placement test participant.
However, the placement test result is yet to be entered manually!',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'password',