diff --git a/application/controllers/organisation/Studienjahr.php b/application/controllers/organisation/Studienjahr.php new file mode 100644 index 000000000..46f6145ba --- /dev/null +++ b/application/controllers/organisation/Studienjahr.php @@ -0,0 +1,140 @@ +load->model("organisation/Studienjahr_model", "StudienjahrModel"); + } + + public function index() + { + $this->listStudienjahr(); + } + + public function listStudienjahr() + { + $studienjahr = $this->StudienjahrModel->load(); + if ($studienjahr->error) + { + show_error($studienjahr->retval); + } + + $data = array( + "studienjahr" => $studienjahr->retval + ); + $this->load->view("organisation/studienjahr.php", $data); + } + + public function editStudienjahr($studienjahr_kurzbez) + { + $studienjahr_kurzbez = str_replace("_", "/", $studienjahr_kurzbez); + $studienjahr = $this->StudienjahrModel->load($studienjahr_kurzbez); + if ($studienjahr->error) + { + show_error($studienjahr->retval); + } + $data = array( + "studienjahr" => $studienjahr->retval + ); + $this->load->view("organisation/studienjahrEdit.php", $data); + } + + public function newStudienjahr() + { + $this->StudienjahrModel->addOrder('studienjahr_kurzbz', "DESC"); + $allstudienjahrkurzbz = $this->StudienjahrModel->load(); + if ($allstudienjahrkurzbz->error) + { + show_error($allstudienjahrkurzbz->retval); + } + $studienjahrkurzbz = $allstudienjahrkurzbz->retval[0]->studienjahr_kurzbz; + $years = $this->__getYearsFromStudienjahr($studienjahrkurzbz); + $data = array( + "studienjahrkurzbz" => ($years[0] + 1)."/".($years[1] + 1) + ); + $this->load->view("organisation/studienjahrNew.php", $data); + } + + private function __getYearsFromStudienjahr($studienjahr_kurzbez) + { + $firstyear = intval(substr($studienjahr_kurzbez, 0, 4)); + $secondyear = intval(substr($studienjahr_kurzbez, 5, 2)); + return array($firstyear, $secondyear); + } + + public function insStudienjahr() + { + $data = $this->__retrieveStudienjahrData(); + $studienjahr = $this->StudienjahrModel->insert($data); + + if ($studienjahr->error) + { + show_error($studienjahr->retval); + } + + redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true")); + } + + private function __retrieveStudienjahrData(){ + $studienjahr_kurzbz = $this->input->post("studienjahrkurzbz"); + $bezeichnung = $this->input->post("studienjahrbz"); + + $data = array( + "studienjahr_kurzbz" => $studienjahr_kurzbz, + "bezeichnung" => $bezeichnung, + ); + + $validation = $this->_validate($data); + if (isSuccess($validation)) + { + return $data; + } else + { + show_error($validation->retval); + } + } + + private function _validate($data) + { + $studienjahr_kurzbz = $data['studienjahr_kurzbz']; + $years = $this->__getYearsFromStudienjahr($studienjahr_kurzbz); + //if not desired form or second year comes not right after the first + $correctyears = $years[0] % 100 == $years[1] - 1; + if (!preg_match("/^\d{4}\/\d{2}$/", $studienjahr_kurzbz) || !$correctyears) + return error("Studienjahrbezeichnung muss folgende Form haben: Jahreszahl/letzeZweiZahlenDesNächstenJahres, z.B. 2017/18"); + return success("Semesterdaten sind valide"); + } + + public function saveStudienjahr() + { + $data = $this->__retrieveStudienjahrData(); + $studienjahr = $this->StudienjahrModel->update($data['studienjahr_kurzbz'], $data); + + if ($studienjahr->error) + { + show_error($studienjahr->retval); + } + + redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true")); + } + + public function deleteStudienjahr($studienjahr_kurzbez) + { + $studienjahr_kurzbez = str_replace("_", "/", $studienjahr_kurzbez); + $studienjahr = $this->StudienjahrModel->delete($studienjahr_kurzbez); + + if ($studienjahr->error) + { + show_error($studienjahr->retval); + } + + redirect("/organisation/studienjahr/listStudienjahr"); + } + + +} \ No newline at end of file diff --git a/application/controllers/organisation/Studiensemester.php b/application/controllers/organisation/Studiensemester.php new file mode 100644 index 000000000..242335bc7 --- /dev/null +++ b/application/controllers/organisation/Studiensemester.php @@ -0,0 +1,166 @@ +load->model("organisation/Studiensemester_model", "StudiensemesterModel"); + $this->load->model("organisation/Studienjahr_model", "StudienjahrModel"); + } + + public function index() + { + $this->listStudiensemester(); + } + + public function listStudiensemester() + { + $semester = $this->StudiensemesterModel->load(); + if ($semester->error) + { + show_error($semester->retval); + } + + $data = array( + "semester" => $semester->retval + ); + $this->load->view("organisation/studiensemester.php", $data); + } + + public function editStudiensemester($semester_kurzbez) + { + $semester = $this->StudiensemesterModel->load($semester_kurzbez); + if ($semester->error) + { + show_error($semester->retval); + } + $this->StudienjahrModel->addOrder('studienjahr_kurzbz', "DESC"); + $allstudienjahre = $this->StudienjahrModel->load(); + if ($allstudienjahre->error) + { + show_error($allstudienjahre->retval); + } + $data = array( + "semester" => $semester->retval, + "allstudienjahre" => $allstudienjahre->retval + ); + + $this->load->view("organisation/studiensemesterEdit.php", $data); + } + + public function newStudiensemester() + { + $this->StudienjahrModel->addOrder('studienjahr_kurzbz', "DESC"); + $allstudienjahre = $this->StudienjahrModel->load(); + if ($allstudienjahre->error) + { + show_error($allstudienjahre->retval); + } + + $data = array( + "allstudienjahre" => $allstudienjahre->retval + ); + + $this->load->view("organisation/studiensemesterNew.php", $data); + } + + /** + * inserts a Studiensemester + * formats dates in english as required by database + */ + public function insStudiensemester() + { + $data = $this->__retrieveStudiensemesterData(); + $semester = $this->StudiensemesterModel->insert($data); + + if ($semester->error) + { + show_error($semester->retval); + } + + redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true"); + } + + + private function __retrieveStudiensemesterData() + { + $studiensemester_kurzbz = $this->input->post("semkurzbz"); + $bezeichnung = $this->input->post("sembz"); + $start = $this->input->post("semstart"); + $ende = $this->input->post("semende"); + $studienjahr_kurzbz = $this->input->post("studienjahrkurzbz"); + $beschreibung = $this->input->post("beschreibung"); + $onlinebewerbung = $this->input->post("onlinebewerbung"); + $onlinebewerbung = isset($onlinebewerbung); + + $data = array( + "studiensemester_kurzbz" => $studiensemester_kurzbz, + "bezeichnung" => $bezeichnung, + "start" => $start, + "ende" => $ende, + "studienjahr_kurzbz" => $studienjahr_kurzbz, + "beschreibung" => $beschreibung, + "onlinebewerbung" => $onlinebewerbung + ); + + $validation = $this->_validate($data); + if (isSuccess($validation)) + { + //dateconversion + $data["start"] = date_format(date_create($start), "Y-m-d"); + $data["ende"] = date_format(date_create($ende), "Y-m-d"); + return $data; + } else + { + show_error($validation->retval); + } + } + + private function _validate($data) + { + $datepattern = "/^\d{2}.\d{2}.\d{4}$/"; + + if (!preg_match("/^(WS|SS)\d{4}$/", $data['studiensemester_kurzbz'])) + return error("Semesterkurzbezeichnung muss mit WS oder SS beginnen und mit einer Jahreszahl enden, z.B. SS2017"); + if (!preg_match($datepattern, $data['start'])) + return error("Falsches Startdatumsformat. Richtiges Format: dd.mm.yyyy"); + if (!preg_match($datepattern, $data['ende'])) + return error("Falsches Enddatumsformat. Richtiges Format: dd.mm.yyyy"); + return success("Semesterdaten sind valide"); + } + + public function saveStudiensemester() + { + $data = $this->__retrieveStudiensemesterData(); + $semester = $this->StudiensemesterModel->update($data['studiensemester_kurzbz'], $data); + + if ($semester->error) + { + show_error($semester->retval); + } + + redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true"); + } + + public function deleteStudiensemester($semester_kurzbez) + { + $semester = $this->StudiensemesterModel->delete($semester_kurzbez); + + if ($semester->error) + { + show_error($semester->retval); + } + + redirect("/organisation/studiensemester/listStudiensemester"); + } + +} diff --git a/application/models/organisation/Studienjahr_model.php b/application/models/organisation/Studienjahr_model.php index 902d61ba2..ace9c1525 100644 --- a/application/models/organisation/Studienjahr_model.php +++ b/application/models/organisation/Studienjahr_model.php @@ -10,5 +10,6 @@ class Studienjahr_model extends DB_Model parent::__construct(); $this->dbTable = 'public.tbl_studienjahr'; $this->pk = 'studienjahr_kurzbz'; + $this->hasSequence = false; } } diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 484956e05..1c5119b2a 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -10,6 +10,7 @@ class Studiensemester_model extends DB_Model parent::__construct(); $this->dbTable = 'public.tbl_studiensemester'; $this->pk = 'studiensemester_kurzbz'; + $this->hasSequence = false; } public function getLastOrAktSemester($days = 60) diff --git a/application/views/organisation/studienjahr.php b/application/views/organisation/studienjahr.php new file mode 100644 index 000000000..c57761e6f --- /dev/null +++ b/application/views/organisation/studienjahr.php @@ -0,0 +1,47 @@ +load->view('templates/header', array('title' => 'StudienjahrList', 'tablesort' => true, 'tableid' => 't1', 'headers' => '2:{sorter:false}, 3:{sorter:false}', 'sortList' =>'0,1')); +?> +
+| Kurzbez | +Bezeichnung | ++ | + |
|---|---|---|---|
| studienjahr_kurzbz; ?> | +bezeichnung; ?> | ++ + Bearbeiten + + | ++ + Löschen + + | +