From 05a049edca223cefe61b34bfff53297403b2fe62 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 3 Jun 2019 16:30:44 +0200 Subject: [PATCH] Infocenter message Quereinsteiger Freigabe - Orgform bezeichnung shown in german and english Infocenter Controller changes - constants for Interessent and Abgewiesener names added - removed unnecessary parameters in comments crm/Prestudent_model - fixed typo --- .../system/infocenter/InfoCenter.php | 40 +++++++++++-------- application/models/crm/Prestudent_model.php | 2 +- .../models/crm/Prestudentstatus_model.php | 11 +++-- public/js/infocenter/infocenterDetails.js | 40 ++++++++++++------- system/dbupdate_3.3.php | 27 ++++++++++++- 5 files changed, 83 insertions(+), 37 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 4a66daabe..d59c058cf 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -65,6 +65,10 @@ class InfoCenter extends Auth_Controller ) ); + // Name of Interessentenstatus + const INTERESSENTSTATUS = 'Interessent'; + const ABGEWIESENERSTATUS = 'Abgewiesener'; + // Statusgruende for which no Studiengangsfreigabemessage should be sent private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme'); @@ -171,7 +175,6 @@ class InfoCenter extends Auth_Controller /** * Personal details page of the InfoCenter tool * Initialization function, gets person and prestudent data and loads the view with the data - * @param $person_id */ public function showDetails() { @@ -346,7 +349,6 @@ class InfoCenter extends Auth_Controller /** * Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master - * @param $prestudent_id */ public function saveZgvPruefung() { @@ -375,7 +377,7 @@ class InfoCenter extends Auth_Controller $zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d'); $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation'); - $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', 'Interessent'); + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', self::INTERESSENTSTATUS); $semresult = null; @@ -426,7 +428,6 @@ class InfoCenter extends Auth_Controller /** * Saves Absage for Prestudent including the reason for the Absage (statusgrund). * inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status. - * @param $prestudent_id */ public function saveAbsage() { @@ -442,7 +443,7 @@ class InfoCenter extends Auth_Controller if (hasData($lastStatus) && hasData($statusgrresult)) { //check if still Interessent and not freigegeben yet - if ($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam)) + if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->retval[0]->bestaetigtam)) { $result = $this->PrestudentstatusModel->insert( array( @@ -452,7 +453,7 @@ class InfoCenter extends Auth_Controller 'datum' => date('Y-m-d'), 'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz, 'studienplan_id' => $lastStatus->retval[0]->studienplan_id, - 'status_kurzbz' => 'Abgewiesener', + 'status_kurzbz' => self::ABGEWIESENERSTATUS, 'statusgrund_id' => $statusgrund, 'insertvon' => $this->_uid, 'insertamum' => date('Y-m-d H:i:s') @@ -478,7 +479,6 @@ class InfoCenter extends Auth_Controller /** * Saves Freigabe of a Prestudent to the Studiengang. * updates bestaetigtam and bestaetigtvon fields of the last status - * @param $prestudent_id */ public function saveFreigabe() { @@ -497,7 +497,7 @@ class InfoCenter extends Auth_Controller $lastStatus = $lastStatus->retval[0]; //check if still Interessent and not freigegeben yet - if ($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam)) + if ($lastStatus->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->bestaetigtam)) { $statusdata = array( 'bestaetigtvon' => $this->_uid, @@ -599,7 +599,6 @@ class InfoCenter extends Auth_Controller /** * Updates a new Notiz for a person * @param int $notiz_id - * @param int $person_id */ public function updateNotiz($notiz_id) { @@ -1226,13 +1225,22 @@ class InfoCenter extends Auth_Controller if (isset($zgvpruefung->prestudentstatus)) { + //get orgform for german and english + if (isset($zgvpruefung->prestudentstatus->bezeichnung_orgform) && is_array($zgvpruefung->prestudentstatus->bezeichnung_orgform)) + { + $zgvpruefung->prestudentstatus->bezeichnung_orgform_german = getPhraseByLanguage($zgvpruefung->prestudentstatus->bezeichnung_orgform, 'German'); + $zgvpruefung->prestudentstatus->bezeichnung_orgform_english = getPhraseByLanguage($zgvpruefung->prestudentstatus->bezeichnung_orgform, 'English'); + } + $position = strpos($zgvpruefung->prestudentstatus->anmerkung, 'Alt:'); //parse Anmerkung for Alternative (Prio is given in orgform and sprache anyway) $zgvpruefung->prestudentstatus->alternative = is_numeric($position) ? substr($zgvpruefung->prestudentstatus->anmerkung, $position) : null; } //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'; + $zgvpruefung->infoonly = !isset($zgvpruefung->prestudentstatus) + || isset($zgvpruefung->prestudentstatus->bestaetigtam) + || $zgvpruefung->prestudentstatus->status_kurzbz != self::INTERESSENTSTATUS; //wether prestudent was freigegeben for RT/Stg $zgvpruefung->isRtFreigegeben = false; @@ -1241,7 +1249,7 @@ class InfoCenter extends Auth_Controller $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)); + 'tbl_prestudentstatus.status_kurzbz' => self::INTERESSENTSTATUS, 'prestudent_id' => $prestudent->prestudent_id)); if (hasData($isFreigegeben)) @@ -1270,7 +1278,7 @@ class InfoCenter extends Auth_Controller $zgvpruefung->changeup = false; $zgvpruefung->changedown = false; - if (isset($zgvpruefung->prestudentstatus->status_kurzbz) && $zgvpruefung->prestudentstatus->status_kurzbz == 'Interessent') + if (isset($zgvpruefung->prestudentstatus->status_kurzbz) && $zgvpruefung->prestudentstatus->status_kurzbz == self::INTERESSENTSTATUS) { if (isset($zgvpruefung->prestudentstatus->studiensemester_kurzbz)) { @@ -1285,8 +1293,8 @@ class InfoCenter extends Auth_Controller $this->_sortPrestudents($zgvpruefungen); - $abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Abgewiesener'))->retval; - $intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Interessent'))->retval; + $abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::ABGEWIESENERSTATUS))->retval; + $intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::INTERESSENTSTATUS))->retval; $data = array ( 'zgvpruefungen' => $zgvpruefungen, @@ -1344,9 +1352,9 @@ class InfoCenter extends Auth_Controller return 1; elseif ($a->prestudentstatus->status_kurzbz !== $b->prestudentstatus->status_kurzbz) { - if ($a->prestudentstatus->status_kurzbz === 'Interessent') + if ($a->prestudentstatus->status_kurzbz === self::INTERESSENTSTATUS) return -1; - elseif ($b->prestudentstatus->status_kurzbz === 'Interessent') + elseif ($b->prestudentstatus->status_kurzbz === self::INTERESSENTSTATUS) return 1; } } diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 4a9b23ec9..ffc6afb0e 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -218,7 +218,7 @@ class Prestudent_model extends DB_Model if (count($lastStatus->retval) > 0) { - // get Studiengangname from Studienlan and -ordnung + //get Studiengangname from Studienplan and -ordnung $studienordnung = $this->PrestudentstatusModel->getStudienordnungFromPrestudent($prestudent_id); if ($studienordnung->error) return error($studienordnung->retval); diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php index fb265edbe..719ddf884 100644 --- a/application/models/crm/Prestudentstatus_model.php +++ b/application/models/crm/Prestudentstatus_model.php @@ -19,14 +19,17 @@ class Prestudentstatus_model extends DB_Model public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '') { $query = 'SELECT tbl_prestudentstatus.*, - bezeichnung AS studienplan_bezeichnung, - tbl_studienplan.orgform_kurzbz as orgform, + tbl_studienplan.bezeichnung AS studienplan_bezeichnung, + tbl_studienplan.orgform_kurzbz AS orgform, sprache, + tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform, tbl_status.bezeichnung_mehrsprachig, - tbl_status_grund.bezeichnung_mehrsprachig as bezeichnung_statusgrund - FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) + tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund + FROM public.tbl_prestudentstatus + LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) JOIN public.tbl_status USING (status_kurzbz) LEFT JOIN public.tbl_status_grund USING (statusgrund_id) + LEFT JOIN bis.tbl_orgform ON tbl_studienplan.orgform_kurzbz = bis.tbl_orgform.orgform_kurzbz WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz AND prestudent_id = ?'; diff --git a/public/js/infocenter/infocenterDetails.js b/public/js/infocenter/infocenterDetails.js index 471fc1c18..a43b36df8 100644 --- a/public/js/infocenter/infocenterDetails.js +++ b/public/js/infocenter/infocenterDetails.js @@ -531,7 +531,7 @@ var InfocenterDetails = { return; //check other prestudentstati wether already freigegeben - for(var j = 0; j < prestudentdata.length; j++) + for (var j = 0; j < prestudentdata.length; j++) { var prestudent = prestudentdata[j]; var prestudentstatus = prestudent.prestudentstatus; @@ -559,7 +559,28 @@ var InfocenterDetails = { var ausbildungssemester = receiverPrestudentstatus.ausbildungssemester; var studiengangbezeichnung = receiverPrestudentstatus.studiengangbezeichnung; var studiengangbezeichnung_englisch = receiverPrestudentstatus.studiengangbezeichnung_englisch; - var orgform = typeof receiverPrestudentstatus.orgform === 'string' ? receiverPrestudentstatus.orgform : ""; + + var orgform_deutsch, orgform_englisch; + orgform_deutsch = orgform_englisch = ""; + + if (typeof receiverPrestudentstatus.bezeichnung_orgform_german === 'string') + { + orgform_deutsch = receiverPrestudentstatus.bezeichnung_orgform_german.toLowerCase(); + } + + if (typeof receiverPrestudentstatus.bezeichnung_orgform_english === 'string') + { + orgform_englisch = receiverPrestudentstatus.bezeichnung_orgform_english.toLowerCase(); + } + + var quereinstiegsmsgvars = { + 'ausbildungssemester': ausbildungssemester, + 'studiengangbezeichnung': studiengangbezeichnung, + 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch, + 'orgform_deutsch': orgform_deutsch, + 'orgform_englisch': orgform_englisch + }; + var msgvars = {}; if (rtfreigabe) @@ -569,13 +590,7 @@ var InfocenterDetails = { //if already for RT freigegeben, still send short message if Quereinsteiger if (ausbildungssemester > 1) { - msgvars = { - 'ausbildungssemester': ausbildungssemester, - 'studiengangbezeichnung': studiengangbezeichnung, - 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch, - 'orgform': orgform - }; - + msgvars = quereinstiegsmsgvars; InfocenterDetails.sendFreigabeMessage(prestudent_id, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars); } } @@ -585,12 +600,7 @@ var InfocenterDetails = { //send Quereinstiegsmessage if later Ausbildungssemester if (ausbildungssemester > 1) { - msgvars = { - 'ausbildungssemester': ausbildungssemester, - 'studiengangbezeichnung': studiengangbezeichnung, - 'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch, - 'orgform': orgform - }; + msgvars = quereinstiegsmsgvars; vorlage = RTFREIGABE_MESSAGE_VORLAGE_QUER } else diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 362868d2d..ac5f5fdba 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2911,7 +2911,32 @@ if(!$result = @$db->db_query("SELECT nationengruppe_kurzbz FROM public.tbl_bewer echo '
public.tbl_bewerbungstermine: Spalte nationengruppe_kurzbz hinzugefuegt'; } +// Spalte bezeichnung_mehrsprachig in bis.tbl_orgform +if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM bis.tbl_orgform LIMIT 1")) +{ + $qry = "ALTER TABLE bis.tbl_orgform ADD COLUMN bezeichnung_mehrsprachig varchar(255)[];"; + if(!$db->db_query($qry)) + echo 'bis.tbl_orgform '.$db->db_last_error().'
'; + else + echo 'bis.tbl_orgform: Spalte bezeichnung_mehrsprachig hinzugefuegt!
'; + + // Bezeichnung_mehrsprachig aus existierender Bezeichnung vorausfuellen. Ein Eintrag fuer jede Sprache mit Content aktiv. + $qry_help = "SELECT index FROM public.tbl_sprache WHERE content=TRUE;"; + if(!$result = $db->db_query($qry_help)) + echo 'tbl_orgform bezeichnung_mehrsprachig: Fehler beim ermitteln der Sprachen: '.$db->db_last_error().''; + else + { + $qry=''; + while($row = $db->db_fetch_object($result)) + $qry.= "UPDATE bis.tbl_orgform set bezeichnung_mehrsprachig[".$row->index."] = bezeichnung;"; + + if(!$db->db_query($qry)) + echo 'Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'
'; + else + echo 'bis.tbl_orgform: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen
'; + } +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -2941,7 +2966,7 @@ $tabellen=array( "bis.tbl_mobilitaetsprogramm" => array("mobilitaetsprogramm_code","kurzbz","beschreibung","sichtbar","sichtbar_outgoing"), "bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre","nationengruppe_kurzbz"), "bis.tbl_nationengruppe" => array("nationengruppe_kurzbz","nationengruppe_bezeichnung","aktiv"), - "bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz"), + "bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz","bezeichnung_mehrsprachig"), "bis.tbl_verwendung" => array("verwendung_code","verwendungbez"), "bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung"), "bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung"),