From a81ceb51b8a6c6febc976d7c79f4cf4bcc489650 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 22 Jun 2023 10:23:00 +0200 Subject: [PATCH] - rt sperre vor dem login moeglich --- cis/testtool/login.php | 3 ++ include/pruefling.class.php | 30 +++++++++--- vilesci/stammdaten/auswertung_fhtw.php | 67 +++++++++++++++----------- 3 files changed, 63 insertions(+), 37 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 0b114b8c5..0ff84f4a0 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) && $pruefling->idnachweis = ''; $pruefling->registriert = date('Y-m-d H:i:s'); $pruefling->prestudent_id = $_SESSION['prestudent_id']; + $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']); + if ($pruefling->save()) { $_SESSION['pruefling_id']=$pruefling->pruefling_id; @@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id'])) $pruefling->registriert = date('Y-m-d H:i:s'); $pruefling->prestudent_id = $_SESSION['prestudent_id']; $pruefling->semester = $_POST['semester']; + $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']); if ($pruefling->save()) { $_SESSION['pruefling_id']=$pruefling->pruefling_id; diff --git a/include/pruefling.class.php b/include/pruefling.class.php index 2a482d793..efe660ca9 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -108,12 +108,13 @@ class pruefling extends basis_db if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE { - $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('. + $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('. $this->db_add_param($this->studiengang_kz).",". $this->db_add_param($this->idnachweis).",". $this->db_add_param($this->registriert).",". $this->db_add_param($this->prestudent_id).",". - $this->db_add_param($this->semester).");"; + $this->db_add_param($this->semester).",". + $this->db_add_param($this->gesperrt, FHC_BOOLEAN).");"; } else { @@ -122,7 +123,8 @@ class pruefling extends basis_db ' idnachweis='.$this->db_add_param($this->idnachweis).','. ' registriert='.$this->db_add_param($this->registriert).','. ' semester='.$this->db_add_param($this->semester).','. - ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER). + ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + ' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN). " WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";"; } @@ -558,18 +560,30 @@ class pruefling extends basis_db } } - public function isGesperrt($pruefling_id) + public function isGesperrt($pruefling_id = null, $prestudent_id = null) { + if (is_null($pruefling_id) && is_null($prestudent_id)) + { + $this->errormsg = 'Falsche Parameterübergabe'; + return false; + } + $qry = "SELECT spruefling.gesperrt FROM testtool.tbl_pruefling - JOIN public.tbl_prestudent USING(prestudent_id) + RIGHT JOIN public.tbl_prestudent USING(prestudent_id) JOIN public.tbl_person USING (person_id) JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id - WHERE tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER)." - AND spruefling.gesperrt - LIMIT 1"; + WHERE spruefling.gesperrt"; + + if (!is_null($pruefling_id)) + $qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER); + if (!is_null($prestudent_id)) + $qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER); + + $qry .= " LIMIT 1"; + if($result = $this->db_query($qry)) { if ($this->db_num_rows($result) == 0) diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index e72c03bc5..92470ce84 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -501,46 +501,55 @@ if ($rtprueflingEntSperren) WHERE person_id = ". $db->db_add_param($_POST['person_id']) . " )"; - if ($result = $db->db_query($qry)) { - if ($db->db_num_rows($result) === 0) { - echo json_encode(array( - 'status' => 'warning', - 'msg' => 'Kein Pruefling gefunden!' - )); - exit(); + $ps = new prestudent(); + $ps->getPrestudenten($_POST['person_id']); + + $prestudent = new prestudent($ps->result[0]->prestudent_id); + $prestudent->getLastStatus($prestudent->prestudent_id); + + $pruefling = new pruefling(); + $pruefling->new = true; + $pruefling->studiengang_kz = $prestudent->studiengang_kz; + $pruefling->registriert = date('Y-m-d H:i:s'); + $pruefling->semester = $prestudent->ausbildungssemester; + $pruefling->prestudent_id = $prestudent->prestudent_id; + $pruefling->gesperrt = true; + + $resultSperre = $pruefling->save(); } else { $pruefling_ids = array(); + while ($row = $db->db_fetch_object($result)) - { $pruefling_ids[] = $row->pruefling_id; - } - - - $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " + + $qry = "UPDATE testtool.tbl_pruefling + SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . " WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")"; - - if ($result_update = $db->db_query($qry)) - { - $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; - echo json_encode(array( - 'status' => 'ok', - 'msg' => $msg)); - exit(); - } - else - { - echo json_encode(array( - 'status' => 'fehler', - 'msg' => 'Fehler beim speichern der Daten' - )); - exit(); - } + + $resultSperre = $db->db_query($qry); + } + + if ($resultSperre) + { + $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet'; + echo json_encode(array( + 'status' => 'ok', + 'msg' => $msg)); + exit(); + } + else + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => 'Fehler beim speichern der Daten' + )); + exit(); } } else