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);
}
}