From 89849d30fb347ac7ae01069ce3c6db150d6b457f Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 11 Jan 2019 18:39:48 +0100 Subject: [PATCH] - added hasSequence in models to avoid sequenceerrors - added getByDate, generateMatrikelnummer methods --- application/models/crm/Student_model.php | 36 ++++++++++++++++++- .../education/Studentlehrverband_model.php | 1 + .../organisation/Studiensemester_model.php | 22 ++++++++++++ application/models/person/Benutzer_model.php | 3 +- 4 files changed, 60 insertions(+), 2 deletions(-) diff --git a/application/models/crm/Student_model.php b/application/models/crm/Student_model.php index 75390b466..0d03fd50f 100644 --- a/application/models/crm/Student_model.php +++ b/application/models/crm/Student_model.php @@ -9,6 +9,40 @@ class Student_model extends DB_Model { parent::__construct(); $this->dbTable = 'public.tbl_student'; - $this->pk = 'student_uid'; + $this->pk = array('student_uid'); + $this->hasSequence = false; + } + + // **** +// * Generiert die Matrikelnummer +// * FORMAT: 0710254001 +// * 07 = Jahr +// * 1/2/0 = WS/SS/incoming +// * 0254 = Studiengangskennzahl vierstellig +// * 001 = Laufende Nummer +// **** + public function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz) + { + $jahr = mb_substr($studiensemester_kurzbz, 4); + $sem = mb_substr($studiensemester_kurzbz, 0, 2); + if ($sem == 'SS') + $jahr = $jahr - 1; + $art = 0; + + $matrikelnummer = sprintf("%02d", $jahr).$art.sprintf("%04d", $studiengang_kz); + + $qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE ? ORDER BY matrikelnr DESC LIMIT 1"; + + $matrikelnrres = $this->execQuery($qry, array($matrikelnummer.'%')); + + if (hasData($matrikelnrres)) + { + $max = mb_substr($matrikelnrres->retval[0]->matrikelnr, 7); + } + else + $max = 0; + + $max += 1; + return $matrikelnummer.sprintf("%03d", $max); } } diff --git a/application/models/education/Studentlehrverband_model.php b/application/models/education/Studentlehrverband_model.php index 3f8a0e14a..765429396 100644 --- a/application/models/education/Studentlehrverband_model.php +++ b/application/models/education/Studentlehrverband_model.php @@ -10,5 +10,6 @@ class Studentlehrverband_model extends DB_Model parent::__construct(); $this->dbTable = 'public.tbl_studentlehrverband'; $this->pk = array('studiensemester_kurzbz', 'student_uid'); + $this->hasSequence = false; } } diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 300e13805..ff48708dd 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -119,4 +119,26 @@ class Studiensemester_model extends DB_Model return $this->execQuery($query, array($studiensemester_kurzbz, $studiengang_kz)); } + + /** + * Gets all Studiensemester between two dates + * @param $from + * @param $to + * @return array|null + */ + public function getByDate($from, $to) + { + if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d'))) + return success(array()); + + $query = "SELECT * + FROM public.tbl_studiensemester + WHERE + (ende > ?::date AND start < ?::date) + OR start = ?::date + OR ende = ?::date + ORDER BY start DESC"; + + return $this->execQuery($query, array($from, $to, $from, $to)); + } } diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index 221688c21..46e5bdb98 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -9,7 +9,8 @@ class Benutzer_model extends DB_Model { parent::__construct(); $this->dbTable = 'public.tbl_benutzer'; - $this->pk = 'uid'; + $this->pk = array('uid'); + $this->hasSequence = false; } public function getFromPersonId($person_id)