diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index eaa207ff1..f10d94a8a 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -34,6 +34,9 @@ class InfoCenter extends Auth_Controller const PREV_FILTER_ID = 'prev_filter_id'; const KEEP_TABLESORTER_FILTER = 'keepTsFilter'; + const ONBOARDING_INSERTVON = 'onboarding'; + const ONBOARDING_KENNZEICHENTYP = 'eobRegistrierungsId'; + private $_uid; // contains the UID of the logged user // Used to log with PersonLogLib @@ -175,6 +178,7 @@ class InfoCenter extends Auth_Controller $this->load->model('person/Kontakt_model', 'KontaktModel'); $this->load->model('person/Geschlecht_model', 'GeschlechtModel'); $this->load->model('person/adresse_model', 'AdresseModel'); + $this->load->model('person/Kennzeichen_model', 'KennzeichenModel'); // Loads libraries $this->load->library('PersonLogLib'); @@ -1452,6 +1456,100 @@ class InfoCenter extends Auth_Controller $this->outputJsonSuccess("Done!"); } + + public function getAbsageData() + { + $stg_typ = $this->getStudienArtBerechtigung(['b', 'm']); + + if (!is_null($stg_typ)) + { + $statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval; + $studienSemester = $this->variablelib->getVar('infocenter_studiensemester'); + $studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester); + + $data = array ( + 'statusgruende' => $statusgruende, + 'studiengaenge' => $studiengaenge->retval + ); + + $this->outputJsonSuccess($data); + } + else + $this->outputJsonSuccess(null); + } + + public function getStudienArtBerechtigung($typ = null) + { + $studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter'); + $stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, $typ); + return getData($stg_typ); + } + + public function getStudienartData() + { + $this->outputJsonSuccess($this->getStudienArtBerechtigung(['b', 'm', 'l'])); + } + + public function saveAbsageForAll() + { + $statusgrund = $this->input->post('statusgrund'); + $studiengang = $this->input->post('studiengang'); + $abgeschickt = $this->input->post('abgeschickt'); + $personen = $this->input->post('personen'); + $studienSemester = $this->variablelib->getVar('infocenter_studiensemester'); + + if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen)) + $this->terminateWithJsonError("Bitte füllen Sie alle Felder aus"); + + if ($studiengang === 'all' && $abgeschickt === 'all') + { + foreach($personen as $person) + { + $prestudenten = $this->PrestudentModel->getByPersonWithoutLehrgang($person, $studienSemester); + + if (!hasData($prestudenten)) + continue; + + $prestudentenData = getData($prestudenten); + + foreach ($prestudentenData as $prestudent) + { + $this->saveAbsage($prestudent->prestudent_id, $statusgrund); + } + } + } + else + { + $this->load->model('organisation/Studienplan_model', 'StudienplanModel'); + + $this->StudienplanModel->addSelect('1'); + $this->StudienplanModel->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id'); + $escaped = $this->StudienplanModel->db->escape(strtoupper($studiengang)); + $this->StudienplanModel->db->where("UPPER(so.studiengangkurzbzlang || ':' || tbl_studienplan.orgform_kurzbz) = $escaped"); + $this->StudienplanModel->addLimit(1); + $studiengangResult = $this->StudienplanModel->load(); + + if (hasData($studiengangResult)) + { + foreach($personen as $person) + { + $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $abgeschickt === 'all'); + + if (!hasData($prestudent)) + continue; + + $prestudentData = getData($prestudent); + $this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund); + } + } + else + $this->terminateWithJsonError("Falschen Studiengang übergeben!"); + + } + + $this->outputJsonSuccess("Success"); + } + // ----------------------------------------------------------------------------------------------------------------- // Private methods @@ -1946,6 +2044,17 @@ class InfoCenter extends Auth_Controller show_error(getError($user_person)); } + // add info about first electronig onboarding login + $this->KennzeichenModel->addSelect('insertamum'); + $onboarding_first_login = $this->KennzeichenModel->loadWhere( + array('person_id' => $person_id, 'kennzeichentyp_kurzbz' => self::ONBOARDING_KENNZEICHENTYP) + ); + + if (isError($onboarding_first_login)) + { + show_error(getError($onboarding_first_login)); + } + $data = array ( 'lockedby' => $lockedby, 'lockedbyother' => $lockedbyother, @@ -1955,7 +2064,9 @@ class InfoCenter extends Auth_Controller 'messages' => $messages->retval, 'logs' => $logs, 'notizen' => $notizen->retval, - 'notizenbewerbung' => $notizen_bewerbung->retval + 'notizenbewerbung' => $notizen_bewerbung->retval, + 'created_by_onboarding' => $stammdaten->retval->insertvon == self::ONBOARDING_INSERTVON, + 'onboarding_first_login' => hasData($onboarding_first_login) ? getData($onboarding_first_login)[0]->insertamum : null ); return $data; @@ -2375,97 +2486,4 @@ class InfoCenter extends Auth_Controller $this->loglib->logError('Studiengang has no mail for sending Freigabe mail'); } } - - public function getAbsageData() - { - $stg_typ = $this->getStudienArtBerechtigung(['b', 'm']); - - if (!is_null($stg_typ)) - { - $statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval; - $studienSemester = $this->variablelib->getVar('infocenter_studiensemester'); - $studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester); - - $data = array ( - 'statusgruende' => $statusgruende, - 'studiengaenge' => $studiengaenge->retval - ); - - $this->outputJsonSuccess($data); - } - else - $this->outputJsonSuccess(null); - } - - public function getStudienArtBerechtigung($typ = null) - { - $studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter'); - $stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, $typ); - return getData($stg_typ); - } - - public function getStudienartData() - { - $this->outputJsonSuccess($this->getStudienArtBerechtigung(['b', 'm', 'l'])); - } - - public function saveAbsageForAll() - { - $statusgrund = $this->input->post('statusgrund'); - $studiengang = $this->input->post('studiengang'); - $abgeschickt = $this->input->post('abgeschickt'); - $personen = $this->input->post('personen'); - $studienSemester = $this->variablelib->getVar('infocenter_studiensemester'); - - if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen)) - $this->terminateWithJsonError("Bitte füllen Sie alle Felder aus"); - - if ($studiengang === 'all' && $abgeschickt === 'all') - { - foreach($personen as $person) - { - $prestudenten = $this->PrestudentModel->getByPersonWithoutLehrgang($person, $studienSemester); - - if (!hasData($prestudenten)) - continue; - - $prestudentenData = getData($prestudenten); - - foreach ($prestudentenData as $prestudent) - { - $this->saveAbsage($prestudent->prestudent_id, $statusgrund); - } - } - } - else - { - $this->load->model('organisation/Studienplan_model', 'StudienplanModel'); - - $this->StudienplanModel->addSelect('1'); - $this->StudienplanModel->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id'); - $escaped = $this->StudienplanModel->db->escape(strtoupper($studiengang)); - $this->StudienplanModel->db->where("UPPER(so.studiengangkurzbzlang || ':' || tbl_studienplan.orgform_kurzbz) = $escaped"); - $this->StudienplanModel->addLimit(1); - $studiengangResult = $this->StudienplanModel->load(); - - if (hasData($studiengangResult)) - { - foreach($personen as $person) - { - $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $abgeschickt === 'all'); - - if (!hasData($prestudent)) - continue; - - $prestudentData = getData($prestudent); - $this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund); - } - } - else - $this->terminateWithJsonError("Falschen Studiengang übergeben!"); - - } - - $this->outputJsonSuccess("Success"); - } } \ No newline at end of file diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php index 1dc09caaf..de3900d2b 100644 --- a/application/models/person/Notiz_model.php +++ b/application/models/person/Notiz_model.php @@ -98,7 +98,7 @@ class Notiz_model extends DB_Model /** * Add a Notiz for a given person */ - public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid) + public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid, $insertvon = null) { // Loads model Notizzuordnung_model $this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel'); @@ -106,8 +106,15 @@ class Notiz_model extends DB_Model // Start DB transaction $this->db->trans_start(false); - $result = $this->insert(array('titel' => $titel, 'text' => $text, 'erledigt' => $erledigt, 'verfasser_uid' => $verfasser_uid, - "insertvon" => $verfasser_uid)); + $result = $this->insert( + array( + 'titel' => $titel, + 'text' => $text, + 'erledigt' => $erledigt, + 'verfasser_uid' => $verfasser_uid, + 'insertvon' => $insertvon ?? $verfasser_uid + ) + ); if (isSuccess($result)) { diff --git a/application/views/system/infocenter/stammdaten.php b/application/views/system/infocenter/stammdaten.php index c632b079f..73ea300ab 100644 --- a/application/views/system/infocenter/stammdaten.php +++ b/application/views/system/infocenter/stammdaten.php @@ -92,6 +92,14 @@
+ +
+ +
p->t('infocenter','onboardingRegistriert') ?>
+ +
p->t('infocenter','ersterOnboardingLogin').': '.date_format(date_create($onboarding_first_login), 'd.m.Y') ?>
+
+ @@ -191,12 +199,12 @@
- +  p->t('ui','bearbeiten'); ?>
diff --git a/include/adresse.class.php b/include/adresse.class.php index 3426d358d..94d364f6a 100644 --- a/include/adresse.class.php +++ b/include/adresse.class.php @@ -521,5 +521,63 @@ class adresse extends basis_db } return true; } + + /** + * Laedt die österreichische Zustell Adresse einer Person + * @param $person_id ID der Person + * @return true wenn ok, false im Fehlerfall + */ + public function loadOesterreichischeZustellAdresse($person_id, $typ = null) + { + //Pruefen ob person_id eine gueltige Zahl ist + if(!is_numeric($person_id) || $person_id == '') + { + $this->errormsg = 'PersonID muss eine Zahl sein'; + return false; + } + $typ_clause = ''; + if (isset($typ)) $typ_clause = "AND typ=".$this->db_add_param($typ); + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM public.tbl_adresse WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER, false)." + AND nation = 'A' + {$typ_clause} + ORDER BY zustelladresse DESC, adresse_id DESC LIMIT 1"; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->adresse_id = $row->adresse_id; + $this->heimatadresse = $this->db_parse_bool($row->heimatadresse); + $this->zustelladresse = $this->db_parse_bool($row->zustelladresse); + $this->gemeinde = $row->gemeinde; + $this->name = $row->name; + $this->nation = $row->nation; + $this->ort = $row->ort; + $this->person_id = $row->person_id; + $this->plz = $row->plz; + $this->strasse = $row->strasse; + $this->typ = $row->typ; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->firma_id = $row->firma_id; + $this->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse); + $this->anmerkung = $row->anmerkung; + $this->co_name = $row->co_name; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + return true; + } } ?> diff --git a/public/css/infocenter/infocenterDetails.css b/public/css/infocenter/infocenterDetails.css index cf81d073b..10e8840c0 100644 --- a/public/css/infocenter/infocenterDetails.css +++ b/public/css/infocenter/infocenterDetails.css @@ -107,4 +107,9 @@ .gesperrtoption { color: gray; +} + +#onboardingRow +{ + margin-bottom: 15px; } \ No newline at end of file diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 09a8533cb..0d0535324 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -62451,6 +62451,48 @@ I have been informed that I am under no obligation to consent to the transmissio ) ) ), + // ### Infocenter Onboarding START + array( + 'app' => 'core', + 'category' => 'infocenter', + 'phrase' => 'onboardingRegistriert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Über ElectronicOnboarding registriert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Registered with Electronic Onboarding', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'infocenter', + 'phrase' => 'ersterOnboardingLogin', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Erster Electronic Onboarding Login', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'First Electronic Onboarding Login', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ) + // ### Infocenter Onboarding END );