array('name' => 'Geburtsstaat Mutter', 'rules' => array('required')), 'mutter_geburtsjahr' => array('name' => 'Geburtsjahr Mutter', 'rules' => array('required')), 'mutter_bildungsstaat' => array('name' => 'Bildungsstaat Mutter', 'rules' => array('required')), 'mutter_bildungmax' => array('name' => 'Geburtsjahr Mutter', 'rules' => array('required')), 'vater_geburtsstaat' => array('name' => 'Geburtsstaat Vater', 'rules' => array('required')), 'vater_geburtsjahr', 'vater_bildungsstaat', 'vater_bildungmax' ); public function __construct() { parent::__construct( array( 'index' => 'admin:r', 'saveUHSTAT1Data' => 'admin:rw' ) ); // load ci libs $this->load->library('form_validation'); // load ci helpers $this->load->helper(array('form', 'url')); // load models $this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel'); $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->model('system/Sprache_model', 'SpracheModel'); $this->load->model('codex/Abschluss_model', 'AbschlussModel'); $this->load->model('codex/Uhstat1daten_model', 'Uhstat1datenModel'); $this->loadPhrases( array( 'ui', 'uhstat' ) ); } public function index() { $formMetaData = $this->_getFormMetaData(); if (isError($formMetaData)) show_error(getError($formMetaData)); if (!hasData($formMetaData)) show_error("No form meta data could be loaded"); $uhstatData = $this->_getUHSTAT1Data(); if (isError($uhstatData)) show_error(getError($uhstatData)); $this->load->view("codex/uhstat1.php", array('formMetaData' => getData($formMetaData), 'uhstatData' => getData($uhstatData))); } /** * Add or update UHSTAT1 data */ public function saveUHSTAT1Data() { $person_id = $this->input->get('person_id'); if (!isset($person_id) || !is_numeric($person_id)) show_error("Person Id missing"); $this->form_validation->set_error_delimiters('', ''); // check required fields $this->form_validation->set_rules( 'mutter_geburtsstaat', 'Geburtsstaat Mutter', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'mutter_bildungsstaat', 'Bildungsstaat Mutter', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'mutter_geburtsjahr', 'Geburtsjahr Mutter', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'mutter_bildungmax', 'Höchste Ausbildung Mutter', 'required|callback_bildungsstaat_bildungmax_check[m]', array( 'required' => $this->p->t('uhstat', 'angabeFehlt'), 'bildungsstaat_bildungmax_check' => $this->p->t('uhstat', 'ausbildungBildungsstaatUebereinstimmung') //'Land der höchsten Ausbildung muss mit Bildungsstaat übereinstimmen' // Bildungsstaat should correspond to state of bildung max ) ); $this->form_validation->set_rules( 'vater_geburtsstaat', 'Geburtsstaat Vater', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'vater_bildungsstaat', 'Bildungsstaat Vater', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'vater_geburtsjahr', 'Geburtsjahr Vater', 'required', array('required' => $this->p->t('uhstat', 'angabeFehlt')) ); $this->form_validation->set_rules( 'vater_bildungmax', 'Höchste Ausbildung Vater', 'required|callback_bildungsstaat_bildungmax_check[v]', array( 'required' => $this->p->t('uhstat', 'angabeFehlt'), 'bildungsstaat_bildungmax_check' => $this->p->t('uhstat', 'ausbildungBildungsstaatUebereinstimmung') ) ); $uhstat1datenRes = null; if ($this->form_validation->run()) // if valid { // get post fields $geburtsstaat = $this->input->post('geburtsstaat'); $mutter_geburtsstaat = $this->input->post('mutter_geburtsstaat'); $mutter_geburtsjahr = $this->input->post('mutter_geburtsjahr'); $mutter_bildungsstaat = $this->input->post('mutter_bildungsstaat'); $mutter_bildungmax = $this->input->post('mutter_bildungmax'); $vater_geburtsstaat = $this->input->post('vater_geburtsstaat'); $vater_geburtsjahr = $this->input->post('vater_geburtsjahr'); $vater_bildungsstaat = $this->input->post('vater_bildungsstaat'); $vater_bildungmax = $this->input->post('vater_bildungmax'); $uhstat1datenloadRes = $this->Uhstat1datenModel->loadWhere(array('person_id' => $person_id)); if (hasData($uhstat1datenloadRes)) { $uhstat1datenRes = $this->Uhstat1datenModel->update( array('person_id' => $person_id), array( 'geburtsstaat' => $geburtsstaat, 'mutter_geburtsstaat' => $mutter_geburtsstaat, 'mutter_geburtsjahr' => $mutter_geburtsjahr, 'mutter_bildungsstaat' => $mutter_bildungsstaat, 'mutter_bildungmax' => $mutter_bildungmax, 'vater_geburtsstaat' => $vater_geburtsstaat, 'vater_geburtsjahr' => $vater_geburtsjahr, 'vater_bildungsstaat' => $vater_bildungsstaat, 'vater_bildungmax' => $vater_bildungmax ) ); } else { $uhstat1datenRes = $this->Uhstat1datenModel->insert( array( 'geburtsstaat' => $geburtsstaat, 'mutter_geburtsstaat' => $mutter_geburtsstaat, 'mutter_geburtsjahr' => $mutter_geburtsjahr, 'mutter_bildungsstaat' => $mutter_bildungsstaat, 'mutter_bildungmax' => $mutter_bildungmax, 'vater_geburtsstaat' => $vater_geburtsstaat, 'vater_geburtsjahr' => $vater_geburtsjahr, 'vater_bildungsstaat' => $vater_bildungsstaat, 'vater_bildungmax' => $vater_bildungmax, 'person_id' =>$person_id ) ); } } $formMetaData = $this->_getFormMetaData(); if (isError($formMetaData)) show_error(getError($formMetaData)); if (!hasData($formMetaData)) show_error("No form data could be loaded"); // pass success/error messages to view $successMessage = isset($uhstat1datenRes) && isSuccess($uhstat1datenRes) ? $this->p->t('uhstat', 'erfolgreichGespeichert') : ''; $errorMessage = isset($uhstat1datenRes) && isError($uhstat1datenRes) ? $this->p->t('uhstat', 'fehlerBeimSpeichern') : ''; // load view with form data $this->load->view("codex/uhstat1.php", array( 'formMetaData' => getData($formMetaData), 'successMessage' => $successMessage, 'errorMessage' => $errorMessage )); } /** * Check callback for Bildungsstaat - if Bildungsstaat is Austria, a highest education should be in Austria. * @param $bildungmax * @param $bildungsstaat_typ - mother (m) or father (v) * @return bool true if valid, false otherwise */ public function bildungsstaat_bildungmax_check($bildungmax, $bildungsstaat_typ) { // valid if no type passed if (!isset($bildungsstaat_typ)) return true; // get correct input if ($bildungsstaat_typ == 'm') // mutter $bildungsstaat = $this->input->post('mutter_bildungsstaat'); elseif ($bildungsstaat_typ == 'v') // vater $bildungsstaat = $this->input->post('vater_bildungsstaat'); else return true; if (!isset($bildungsstaat)) return true; // find out if abschluss is in Austria $this->AbschlussModel->addSelect("in_oesterreich"); $abschlussRes = $this->AbschlussModel->load($bildungmax); if (hasData($abschlussRes)) { $in_oesterreich = getData($abschlussRes)[0]->in_oesterreich; // invalid if abschluss in Austria, but not Bildungsstaat, or abschluss not in Austria, but Bildungsstaat in Austria return ($in_oesterreich && $bildungsstaat == self::CODEX_OESTERREICH) || (!$in_oesterreich && $bildungsstaat != self::CODEX_OESTERREICH); } return false; } /** * Gets initial data needed to display UHSTAT1 form. */ private function _getFormMetaData() { $person_id = $this->input->get('person_id'); if (!isset($person_id) || !is_numeric($person_id)) return error("Person Id missing"); $languageIdx = $this->_getLanguageIndex(); $formMetaData = array( 'nation' => array(), 'abschluss_oesterreich' => array(), 'abschluss_nicht_oesterreich' => array(), 'jahre' => array(), 'person_id' => $person_id ); $nationTextFieldName = $languageIdx == 1 ? 'langtext' : 'engltext'; // get nation list $this->load->model('codex/Nation_model', 'NationModel'); $this->NationModel->addSelect("nation_code, $nationTextFieldName AS nation_text"); $this->NationModel->addOrder("nation_text"); $nationRes = $this->NationModel->load(); if (isError($nationRes)) return $nationRes; if (hasData($nationRes)) $formMetaData['nation'] = getData($nationRes); // get abschluss list $abschlussRes = $this->AbschlussModel->getActiveAbschluesse($languageIdx); if (isError($abschlussRes)) return $abschlussRes; $abschlussData = getData($abschlussRes); if (hasData($abschlussRes)) { foreach (getData($abschlussRes) as $abschluss) { if ($abschluss->in_oesterreich === true) $formMetaData['abschluss_oesterreich'][] = $abschluss; elseif ($abschluss->in_oesterreich === false) $formMetaData['abschluss_nicht_oesterreich'][] = $abschluss; else { $formMetaData['abschluss_oesterreich'][] = $abschluss; $formMetaData['abschluss_nicht_oesterreich'][] = $abschluss; } } } // get realistic birth years, dated back from current year $currYear = date("Y"); $formMetaData['jahre'] = range($currYear - self::UPPER_BOUNDARY_YEARS, $currYear - self::LOWER_BOUNDARY_YEARS); return success($formMetaData); } /** * Gets initial data needed to display UHSTAT1 form. */ private function _getUHSTAT1Data() { $person_id = $this->input->get('person_id'); if (!isset($person_id) || !is_numeric($person_id)) return error("Person Id missing"); $this->Uhstat1datenModel->addSelect(" mutter_geburtsstaat, mutter_geburtsjahr, mutter_bildungsstaat, mutter_bildungmax, vater_geburtsstaat, vater_geburtsjahr, vater_bildungsstaat, vater_bildungmax" ); return $this->Uhstat1datenModel->loadWhere(array('person_id' => $person_id)); } /** * Gets language index of currently logged in user. * @return int (the index, start at 1) */ private function _getLanguageIndex() { $idx = 1; $this->SpracheModel->addSelect('index'); $langRes = $this->SpracheModel->loadWhere(array('sprache' => getUserLanguage())); if (hasData($langRes)) { $idx = getData($langRes)[0]->index; } return $idx; } }