From 27c312d7d3c800e6c0fd1f604608369bd0a2ee50 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 12 Sep 2024 15:42:21 +0200 Subject: [PATCH] filterPerson unrulyPerson api & person model --- .../frontend/v1/unrulyperson/UnrulyPerson.php | 65 ++++++++++++++++++- .../controllers/api/v1/person/Person.php | 2 +- application/models/person/Person_model.php | 9 +++ public/js/api/unrulyperson.js | 11 ++++ 4 files changed, 84 insertions(+), 3 deletions(-) diff --git a/application/controllers/api/frontend/v1/unrulyperson/UnrulyPerson.php b/application/controllers/api/frontend/v1/unrulyperson/UnrulyPerson.php index 17289cabe..d1dbea7d8 100644 --- a/application/controllers/api/frontend/v1/unrulyperson/UnrulyPerson.php +++ b/application/controllers/api/frontend/v1/unrulyperson/UnrulyPerson.php @@ -23,7 +23,8 @@ class UnrulyPerson extends FHCAPI_Controller public function __construct() { parent::__construct([ - 'updatePersonUnrulyStatus' => array('basis/mitarbeiter:rw', 'student/antragfreigabe:rw', 'student/studierendenantrag:rw') + 'updatePersonUnrulyStatus' => array('basis/mitarbeiter:rw', 'student/antragfreigabe:rw', 'student/studierendenantrag:rw'), + 'filterPerson' => array('basis/mitarbeiter:rw', 'student/antragfreigabe:rw', 'student/studierendenantrag:rw') ]); $this->_ci =& get_instance(); @@ -46,4 +47,64 @@ class UnrulyPerson extends FHCAPI_Controller } } -} + + public function filterPerson() { + $payload = json_decode($this->input->raw_input_stream, TRUE); + + $nachnameString = ''; + $vornameString = ''; + $filterUnruly = true; + $birthdateString = null; + + if(array_key_exists( 'nachname', $payload) ) { + $nachnameString = $payload['nachname']; + } + + if(array_key_exists('vorname', $payload)) { + $vornameString = $payload['vorname']; + } + + if(array_key_exists('unruly', $payload)){ + $filterUnruly = $payload['unruly']; + } + + if(array_key_exists('gebdatum', $payload)) { + // TODO: enable if gebdatum filter for unrulys is desired +// $birthdateString = $payload['gebdatum']; + } + + $parametersArray = array($nachnameString); + $where ="p.nachname~* ? "; + if (mb_strlen($nachnameString) == 2) + { + $where = "p.nachname=? "; + } + + if(isset($vorname) && $vorname != '') + { + $where.= " AND p.vorname~*?"; + $parametersArray[] = $vorname; + } + + if(isset($birthdate) && $birthdate != '') + { + $where.=" AND p.gebdatum=?"; + $parametersArray[] = $birthdate; + } + + if(isset($filterUnruly)) + { + $where.=" AND p.unruly=?"; + $parametersArray[] = $filterUnruly; + } + + $result = $this->_ci->PersonModel->checkUnrulyWhere($where, $parametersArray); + + if (isSuccess($result)) + $this->terminateWithSuccess($result); + else + $this->terminateWithError('Error when searching for person'); + + + } +} \ No newline at end of file diff --git a/application/controllers/api/v1/person/Person.php b/application/controllers/api/v1/person/Person.php index a686f6060..6a373137f 100644 --- a/application/controllers/api/v1/person/Person.php +++ b/application/controllers/api/v1/person/Person.php @@ -264,4 +264,4 @@ class Person extends API_Controller return success('Input data are valid'); } -} +} \ No newline at end of file diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index c3a6c34f1..9f10599fb 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -387,6 +387,15 @@ class Person_model extends DB_Model return $this->execQuery($qry, [$vorname, $nachname, $gebdatum]); } + public function checkUnrulyWhere($where, $paramsArray) + { + $qry = 'SELECT * + FROM tbl_person p + WHERE '.$where.';'; + + return $this->execQuery($qry, $paramsArray); + } + public function updateUnruly($person_id, $unruly) { $result = $this->update($person_id, array( diff --git a/public/js/api/unrulyperson.js b/public/js/api/unrulyperson.js index 361aecd43..9e7d16e9f 100644 --- a/public/js/api/unrulyperson.js +++ b/public/js/api/unrulyperson.js @@ -9,5 +9,16 @@ export default { throw error; } + }, + filterPerson(payload, base = ''){ + + try { + const url = base + '/api/frontend/v1/unrulyperson/UnrulyPerson/filterPerson'; + return axios.post(url, payload) + // return this.$fhcApi.post(url, payload, null); + } catch (error) { + throw error; + } + } } \ No newline at end of file