diff --git a/application/controllers/api/v1/content/Dms.php b/application/controllers/api/v1/content/Dms.php index 58fd53d14..059df2ffa 100644 --- a/application/controllers/api/v1/content/Dms.php +++ b/application/controllers/api/v1/content/Dms.php @@ -12,7 +12,7 @@ */ // ------------------------------------------------------------------------ -if (!defined("BASEPATH")) exit("No direct script access allowed"); +if (!defined('BASEPATH')) exit('No direct script access allowed'); class Dms extends APIv1_Controller { @@ -23,7 +23,7 @@ class Dms extends APIv1_Controller { parent::__construct(); // Load library DmsLib - $this->load->library("DmsLib"); + $this->load->library('DmsLib'); } /** @@ -31,8 +31,8 @@ class Dms extends APIv1_Controller */ public function getDms() { - $dms_id = $this->get("dms_id"); - $version = $this->get("version"); + $dms_id = $this->get('dms_id'); + $version = $this->get('version'); if (isset($dms_id)) { @@ -46,6 +46,26 @@ class Dms extends APIv1_Controller } } + /** + * + */ + public function getAktenAcceptedDms() + { + $person_id = $this->get('person_id'); + $dokument_kurzbz = $this->get('dokument_kurzbz'); + + if (isset($person_id)) + { + $result = $this->dmslib->getAktenAcceptedDms($person_id, $dokument_kurzbz); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + /** * */ @@ -74,7 +94,7 @@ class Dms extends APIv1_Controller if ($this->_validateDelete($this->post())) { - $result = $this->dmslib->delete($dms["person_id"], $dms["dms_id"]); + $result = $this->dmslib->delete($dms['person_id'], $dms['dms_id']); $this->response($result, REST_Controller::HTTP_OK); } @@ -90,11 +110,11 @@ class Dms extends APIv1_Controller { return false; } - if (!isset($dms["file_content"]) || (isset($dms["file_content"]) && $dms["file_content"] == "")) + if (!isset($dms['file_content']) || (isset($dms['file_content']) && $dms['file_content'] == '')) { return false; } - if (!isset($dms["name"]) || (isset($dms["name"]) && $dms["name"] == "")) + if (!isset($dms['name']) || (isset($dms['name']) && $dms['name'] == '')) { return false; } @@ -108,11 +128,11 @@ class Dms extends APIv1_Controller { return false; } - if (!isset($dms["person_id"]) || !is_numeric($dms["person_id"])) + if (!isset($dms['person_id']) || !is_numeric($dms['person_id'])) { return false; } - if (!isset($dms["dms_id"]) || !is_numeric($dms["dms_id"])) + if (!isset($dms['dms_id']) || !is_numeric($dms['dms_id'])) { return false; } diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index 918ee46b1..d0b64b9cb 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -60,9 +60,34 @@ class DmsLib { $result = $resultFS; } - } - + + return $result; + } + + /** + * + */ + public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null) + { + $result = $this->ci->AkteModel->getAktenAcceptedDms($person_id, $dokument_kurzbz); + + if (hasData($result)) + { + for ($i = 0; $i < count($result->retval); $i++) + { + $resultFS = $this->ci->DmsFSModel->read($result->retval[$i]->filename); + if (isSuccess($resultFS)) + { + $result->retval[$i]->{DmsLib::FILE_CONTENT_PROPERTY} = $resultFS->retval; + } + else + { + $result = $resultFS; + } + } + } + return $result; } @@ -191,7 +216,7 @@ class DmsLib return $result; } - + /** * */ diff --git a/application/models/crm/Akte_model.php b/application/models/crm/Akte_model.php index 084c3606c..8fb1a0ba3 100644 --- a/application/models/crm/Akte_model.php +++ b/application/models/crm/Akte_model.php @@ -128,4 +128,69 @@ class Akte_model extends DB_Model return $this->execQuery($query, $parametersArray); } + + /** + * + */ + public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null) + { + // Checks if the operation is permitted by the API caller + if (($isEntitled = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) + return $isEntitled; + if (($isEntitled = $this->isEntitled('public.tbl_prestudent', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) + return $isEntitled; + if (($isEntitled = $this->isEntitled('public.tbl_dokumentprestudent', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) + return $isEntitled; + if (($isEntitled = $this->isEntitled('campus.tbl_dms', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) + return $isEntitled; + if (($isEntitled = $this->isEntitled('campus.tbl_dms_version', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)) !== true) + return $isEntitled; + + $query = 'SELECT a.akte_id, + a.person_id, + a.dokument_kurzbz, + a.mimetype, + a.erstelltam, + a.gedruckt, + a.titel_intern, + a.anmerkung_intern, + a.titel, + a.bezeichnung, + a.updateamum, + a.insertamum, + a.updatevon, + a.insertvon, + a.uid, + a.dms_id, + a.anmerkung, + a.nachgereicht, + a.nachgereicht_am, + CASE WHEN MAX(dp.dokument_kurzbz) IS NOT NULL THEN TRUE ELSE FALSE END AS accepted, + d.oe_kurzbz, + d.kategorie_kurzbz, + dv.version, + dv.filename, + dv.mimetype, + dv.name, + dv.beschreibung + FROM public.tbl_akte a + INNER JOIN public.tbl_prestudent p USING(person_id) + LEFT JOIN public.tbl_dokumentprestudent dp ON(p.prestudent_id = dp.prestudent_id AND a.dokument_kurzbz = dp.dokument_kurzbz) + INNER JOIN campus.tbl_dms d ON (a.dms_id = d.dms_id AND a.dokument_kurzbz = d.dokument_kurzbz) + INNER JOIN (SELECT dms_id, MAX(version) AS version FROM campus.tbl_dms_version GROUP BY dms_id) dvv ON (d.dms_id = dvv.dms_id) + INNER JOIN campus.tbl_dms_version dv ON (dv.dms_id = dvv.dms_id AND dv.version = dvv.version) + WHERE a.person_id = ?'; + + $parametersArray = array($person_id); + + if (!empty($dokument_kurzbz)) + { + $query .= ' AND a.dokument_kurzbz = ?'; + array_push($parametersArray, $dokument_kurzbz); + } + + $query .= ' GROUP BY a.akte_id, d.dms_id, dv.dms_id, dv.version ORDER BY a.erstelltam'; + + return $this->execQuery($query, $parametersArray); + } } \ No newline at end of file