diff --git a/application/controllers/api/frontend/v1/stv/Betriebsmittel.php b/application/controllers/api/frontend/v1/stv/Betriebsmittel.php index d2cc870ff..fb7464148 100644 --- a/application/controllers/api/frontend/v1/stv/Betriebsmittel.php +++ b/application/controllers/api/frontend/v1/stv/Betriebsmittel.php @@ -13,9 +13,14 @@ class Betriebsmittel extends FHCAPI_Controller 'addNewBetriebsmittel' => ['admin:r', 'assistenz:r'], 'updateBetriebsmittel' => ['admin:r', 'assistenz:r'], 'loadBetriebsmittel' => ['admin:r', 'assistenz:r'], + 'deleteBetriebsmittel' => ['admin:r', 'assistenz:r'], 'getTypenBetriebsmittel' => ['admin:r', 'assistenz:r'] ]); + //Load Models + $this->load->model('ressource/Betriebsmittel_model', 'BetriebsmittelModel'); + $this->load->model('ressource/Betriebsmittelperson_model', 'BetriebsmittelpersonModel'); + // Load Libraries $this->load->library('VariableLib', ['uid' => getAuthUID()]); $this->load->library('form_validation'); @@ -28,8 +33,6 @@ class Betriebsmittel extends FHCAPI_Controller public function getAllBetriebsmittel($uid, $person_id) { - $this->load->model('ressource/Betriebsmittelperson_model', 'BetriebsmittelpersonModel'); - //uid //$result = $this->BetriebsmittelpersonModel->getBetriebsmittelByUid($uid); @@ -41,6 +44,175 @@ class Betriebsmittel extends FHCAPI_Controller $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); } + //all + $this->terminateWithSuccess((getData($result) ?: [])); + } + + public function addNewBetriebsmittel() + { + //TODO(Manu) Berechtigungen +/* if(!$this->permissionlib->isBerechtigt('admin', 'suid', $stg) && !$this->permissionlib->isBerechtigt('assistenz', 'suid', $stg)) + { + $result = $this->p->t('lehre','error_keineSchreibrechte'); + + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + }*/ + + + $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); + + $uid_user = getAuthUID(); + $betriebsmitteltyp = $this->input->post('betriebsmitteltyp'); + $nummer = $this->input->post('nummer'); + $nummer2 = $this->input->post('nummer2'); + $beschreibung = $this->input->post('beschreibung'); + $kaution = $this->input->post('kaution'); + $anmerkung = $this->input->post('anmerkung'); + $ausgegebenam = $this->input->post('ausgegebenam'); + $retouram = $this->input->post('retouram'); + $person_id = $this->input->post('person_id'); + $uid = $this->input->post('uid'); + + // Start DB transaction + $this->db->trans_begin(); + + $result = $this->BetriebsmittelModel->insert( + [ + 'betriebsmitteltyp' => $betriebsmitteltyp, + 'nummer' => $nummer, + 'nummer2' => $nummer2, + 'beschreibung' => $beschreibung, + 'anmerkung' => $anmerkung, + 'insertvon' => $uid_user, + 'insertamum' => date('c') + ] + ); + if($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + $betriebsmittel_id = $result->retval; + + $result = $this->BetriebsmittelpersonModel->insert( + [ + 'betriebsmittel_id' => $betriebsmittel_id, + 'person_id' => $person_id, + 'kaution' => $kaution, + 'anmerkung' => $anmerkung, + 'ausgegebenam' => $ausgegebenam, + 'retouram ' => $retouram, + 'insertvon' => $uid_user, + 'insertamum' => date('c'), + 'uid' => $uid + ] + ); + + if($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + + $this->db->trans_commit(); + return $this->terminateWithSuccess(true); + + } + + public function updateBetriebsmittel() + { + //TODO(Manu) Berechtigungen + /* if(!$this->permissionlib->isBerechtigt('admin', 'suid', $stg) && !$this->permissionlib->isBerechtigt('assistenz', 'suid', $stg)) + { + $result = $this->p->t('lehre','error_keineSchreibrechte'); + + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + }*/ + + + $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); + + $uid_user = getAuthUID(); + + $betriebsmittel_id = $this->input->post('betriebsmittel_id'); + $betriebsmittelperson_id = $this->input->post('betriebsmittelperson_id'); + $betriebsmitteltyp = $this->input->post('betriebsmitteltyp'); + $nummer = $this->input->post('nummer'); + $nummer2 = $this->input->post('nummer2'); + $beschreibung = $this->input->post('beschreibung'); + $kaution = $this->input->post('kaution'); + $anmerkung = $this->input->post('anmerkung'); + $ausgegebenam = $this->input->post('ausgegebenam'); + $retouram = $this->input->post('retouram'); + $person_id = $this->input->post('person_id'); + $uid = $this->input->post('uid'); + + // Start DB transaction + $this->db->trans_begin(); + + $result = $this->BetriebsmittelpersonModel->update( + [ + 'betriebsmittelperson_id' => $betriebsmittelperson_id, + + ], + [ + 'person_id' => $person_id, + 'uid' => $uid, + 'kaution' => $kaution, + 'anmerkung' => $anmerkung, + 'ausgegebenam' => $ausgegebenam, + 'retouram ' => $retouram, + 'insertvon' => $uid_user, + 'insertamum' => date('c') + ] + ); + + if($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + + + $result = $this->BetriebsmittelModel->update( + [ + 'betriebsmittel_id' => $betriebsmittel_id + ], + [ + 'betriebsmitteltyp' => $betriebsmitteltyp, + 'nummer' => $nummer, + 'nummer2' => $nummer2, + 'beschreibung' => $beschreibung, + 'anmerkung' => $anmerkung, + 'updatevon' => $uid_user, + 'updateamum' => date('c') + ] + ); + if($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + + $this->db->trans_commit(); + return $this->terminateWithSuccess(true); + + } + + //TODO(Manu) defaultmässig ersten Eintrag in Edit Modus + public function getFirstBetriebsmittel($uid, $person_id) + { + //uid + //$result = $this->BetriebsmittelpersonModel->getFirstBetriebsmittelByUid($uid); + + //person_id + $result = $this->BetriebsmittelpersonModel->getFirstBetriebsmittelByUid($person_id); + + if (isError($result)) + { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess((getData($result) ?: [])); } @@ -48,29 +220,56 @@ class Betriebsmittel extends FHCAPI_Controller { $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); - $betriebsmittel_id = $this->input->post('betriebsmittel_id'); + $betriebsmittelperson_id = $this->input->post('betriebsmittelperson_id'); - $this->load->model('ressource/Betriebsmittel_model', 'BetriebsmittelModel'); + //$this->terminateWithError("id in function api: " . $betriebsmittelperson_id, self::ERROR_TYPE_GENERAL); + $this->BetriebsmittelpersonModel->addJoin('wawi.tbl_betriebsmittel', 'betriebsmittel_id'); + + $result = $this->BetriebsmittelpersonModel->loadWhere( + array('betriebsmittelperson_id' => $betriebsmittelperson_id)); - $result = $this->BetriebsmittelModel->loadWhere( - array( - 'betriebsmittel_id' => $betriebsmittel_id - ) - ); if (isError($result)) { $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); } - elseif (!hasData($result)) + if (!hasData($result)) { - $this->terminateWithError("no Betriebsmittel with ID found: " . $betriebsmittel_id, self::ERROR_TYPE_GENERAL); + $this->terminateWithError("no Betriebsmittelperson with ID found: " . $betriebsmittelperson_id, self::ERROR_TYPE_GENERAL); } // var_dump($result); - $this->terminateWithSuccess(getData($result) ? : []); + $this->terminateWithSuccess(current(getData($result))); + + } + + public function deleteBetriebsmittel() + { + //var_dump($betriebsmittelperson_id); + + $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); + + $betriebsmittelperson_id = $this->input->post('betriebsmittelperson_id'); + + //return $this->terminateWithError("Betriebsmittelperson " . $betriebsmittelperson_id . " wird gelöscht",self::ERROR_TYPE_GENERAL); + + + $result = $this->BetriebsmittelpersonModel->delete( + array('betriebsmittelperson_id' => $betriebsmittelperson_id, + ) + ); + + if (isError($result)) + { + return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + if (!hasData($result)) + { + return $this->terminateWithError($this->p->t('ui','error_missingId',['id'=> 'Betriebsmittelperson_id']), self::ERROR_TYPE_GENERAL); + } + return $this->outputJsonSuccess(current(getData($result))); } @@ -79,7 +278,8 @@ class Betriebsmittel extends FHCAPI_Controller $this->load->model('ressource/Betriebsmitteltyp_model', 'BetriebsmitteltypModel'); $result = $this->BetriebsmitteltypModel->load(); - if (isError($result)) { + if (isError($result)) + { $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); } return $this->terminateWithSuccess(getData($result) ?: []); diff --git a/application/models/ressource/Betriebsmittel_model.php b/application/models/ressource/Betriebsmittel_model.php index 849a9199f..a3a6e252f 100644 --- a/application/models/ressource/Betriebsmittel_model.php +++ b/application/models/ressource/Betriebsmittel_model.php @@ -11,4 +11,19 @@ class Betriebsmittel_model extends DB_Model $this->dbTable = 'wawi.tbl_betriebsmittel'; $this->pk = 'betriebsmittel_id'; } + + /** + * getBetriebsmittelById + */ +/* public function loadBetriebsmittel($betriebsmittelperson_id){ + $query = " + SELECT * + FROM wawi.tbl_betriebsmittelperson + JOIN wawi.tbl_betriebsmittel ON (wawi.tbl_betriebsmittelperson.betriebsmittel_id = wawi.tbl_betriebsmittel.betriebsmittel_id) + WHERE wawi.tbl_betriebsmittelperson.betriebsmittelperson_id = ? + "; + + return $this->execQuery($query, array($betriebsmittelperson_id)); + }*/ + } diff --git a/public/js/components/Betriebsmittel/Betriebsmittel.js b/public/js/components/Betriebsmittel/Betriebsmittel.js index 6ea8f2022..1345d4f60 100644 --- a/public/js/components/Betriebsmittel/Betriebsmittel.js +++ b/public/js/components/Betriebsmittel/Betriebsmittel.js @@ -27,6 +27,9 @@ export default { {title: "Nummer", field: "nummer"}, {title: "PersonId", field: "person_id"}, {title: "Typ", field: "betriebsmitteltyp"}, + {title: "insertVon", field: "insertvon"}, //Test + {title: "insertAmUm", field: "insertamum"}, //TESt + {title: "Betriebsmittelperson_id", field: "betriebsmittelperson_id"}, {title: "Retourdatum", field: "retouram"}, {title: "Beschreibung", field: "beschreibung"}, {title: "Uid", field: "uid"}, @@ -34,7 +37,7 @@ export default { {title: "Kaution", field: "kaution", visible: false}, {title: "Ausgabedatum", field: "ausgegebenam", visible: false}, {title: "Betriebsmittel_id", field: "betriebsmittel_id", visible: false}, - {title: "Betriebsmittelperson_id", field: "betriebsmittelperson_id", visible: false}, +/* {title: "Betriebsmittelperson_id", field: "betriebsmittelperson_id", visible: false},*/ { title: 'Aktionen', field: 'actions', minWidth: 150, // Ensures Action-buttons will be always fully displayed @@ -49,7 +52,7 @@ export default { button.addEventListener( 'click', (event) => - this.actionPrintConfirmation(cell.getData().betriebsmittel_id) + this.actionPrintConfirmation(cell.getData().betriebsmittelperson_id) ); container.append(button); @@ -60,7 +63,7 @@ export default { button.addEventListener( 'click', (event) => - this.actionEditBetriebsmittel(cell.getData().betriebsmittel_id) + this.actionEditBetriebsmittel(cell.getData().betriebsmittelperson_id) ); container.append(button); @@ -71,7 +74,7 @@ export default { button.addEventListener( 'click', () => - this.actionDeleteBetriebsmittel(cell.getData().betriebsmittel_id) + this.actionDeleteBetriebsmittel(cell.getData().betriebsmittelperson_id) ); container.append(button); @@ -84,43 +87,165 @@ export default { height: '150', selectableRangeMode: 'click', selectable: true, - //index: 'betriebsmittel_id' + //index: 'betriebsmittel_id', }, - tabulatorEvents: [], + //tableData: [], + tabulatorEvents: [ + { +/* event: 'rowSelectionChanged', + handler: this.rowSelectionChanged*/ +/* handler: (e, row.getData().betriebsmittelperson_id) => { + // Handler-Funktion, die aufgerufen wird, wenn das Ereignis ausgelöst wird + //this.rowSelectionChanged(row.getData().betriebsmittelperson_id); + // console.log("Selected Row Data:", row.getData()); + //console.log(cell.getData().betriebsmittelperson_id); + }*/ + }, + + ], betriebsmittelData: {}, - betriebsmittel_id: {}, - listBetriebsmitteltyp: [] + betriebsmittelperson_id : null, + listBetriebsmitteltyp: [], + formData: {}, + statusNew: true }; }, methods: { - actionEditBetriebsmittel(betriebsmittel_id){ - console.log("id: " + betriebsmittel_id); - this.loadBetriebsmittel(betriebsmittel_id).then(() => { - if(this.betriebsmittelData) - this.$refs.editBetriebsmittelModal.show(); + rowSelectionChanged(data) { + //console.log("Selected Row Data:", data[0].betriebsmittelperson_id); + this.param_id = { + 'betriebsmittelperson_id': data[0].betriebsmittelperson_id}; + + this.loadBetriebsmittel(this.param_id); + }, + actionEditBetriebsmittel(betriebsmittelperson_id){ + console.log("action EditBM: id: " + betriebsmittelperson_id); + this.statusNew = false; + this.loadBetriebsmittel(betriebsmittelperson_id); +/* this.loadBetriebsmittel(betriebsmittelperson_id).then(() => { + /!* if(this.formData) { + this.$refs.deleteBetriebsmittelModal.show(); + }*!/ + console.log("nach load" + betriebsmittelperson_id); + + });*/ + }, + actionNewBetriebsmittel(){ + console.log("action newBM: person " + this.person_id); + this.resetModal(); + this.statusNew = true; + this.formData.ausgegebenam = this.getDefaultDate(); + this.reload(); + }, + actionDeleteBetriebsmittel(betriebsmittelperson_id){ + console.log("Löschen von Datensatz mit id: " + betriebsmittelperson_id); + + this.loadBetriebsmittel(betriebsmittelperson_id).then(() => { +/* if(this.formData) { + this.$refs.deleteBetriebsmittelModal.show(); + }*/ + console.log("nach load" + betriebsmittelperson_id); + this.$refs.deleteBetriebsmittelModal.show(); }); }, - actionPrintConfirmation(betriebsmittel_id){ - console.log("actionPrintConfirmation of id: " + betriebsmittel_id); -/* this.loadBetriebsmittel(betriebsmittel_id).then(() => { + actionPrintConfirmation(betriebsmittelperson_id){ + console.log("actionPrintConfirmation of id: " + betriebsmittelperson_id); +/* this.loadBetriebsmittel(betriebsmittelperson_id).then(() => { if(this.betriebsmittelData) this.$refs.editBetriebsmittelModal.show(); });*/ }, - loadBetriebsmittel(betriebsmittel_id){ - //console.log("2 " + betriebsmittel_id); + addNewBetriebsmittel(){ + this.param_id = { + 'uid': this.uid, + 'person_id': this.person_id, + ...this.formData + }; + //this.combinedObj = { ...this.param_id, ...this.formData }; + this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/addNewBetriebsmittel/', + this.param_id + ).then(response => { + console.log(response); + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + // this.hideModal('newBetriebsmittelModal'); + this.resetModal(); + }).catch(this.$fhcAlert.handleSystemError) + .finally(() => { + window.scrollTo(0, 0); + this.reload(); + }); + }, + deleteBetriebsmittel(betriebsmittelperson_id){ + console.log("Delete mit id: " + betriebsmittelperson_id); + this.param = { + 'betriebsmittelperson_id': betriebsmittelperson_id + }; + console.log( "param_id" + this.param + "|" ); + return this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/deleteBetriebsmittel/', + this.param) + .then( + result => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete')); + this.hideModal('deleteBetriebsmittelModal'); + this.resetModal(); + }) + .catch(this.$fhcAlert.handleSystemError) + .finally(() => { + window.scrollTo(0, 0); + this.reload(); + }); + }, + updateBetriebsmittel(){ + this.param = { + 'uid': this.uid, + 'person_id': this.person_id, + ...this.formData + }; + this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/updateBetriebsmittel/', + this.param + ).then(response => { + //console.log(response); + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'editSave')); + // this.hideModal('newBetriebsmittelModal'); + this.resetModal(); + }).catch(this.$fhcAlert.handleSystemError) + .finally(() => { + window.scrollTo(0, 0); + this.reload(); + }); + }, + loadBetriebsmittel(betriebsmittelperson_id){ + console.log("loadBetriebsmittel id:" + betriebsmittelperson_id); + this.resetModal(); + this.statusNew = false; + this.param_id = { + 'betriebsmittelperson_id': betriebsmittelperson_id + }; return this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/loadBetriebsmittel/', - betriebsmittel_id) + this.param_id) + .then(result => result.data) .then(result => { - //console.log("in load" + result); - this.betriebsmittelData = result.data; - return result; + this.formData = result; }) .catch(this.$fhcAlert.handleSystemError); }, + reload(){ + this.$refs.table.reloadTable(); + }, + hideModal(modalRef){ + this.$refs[modalRef].hide(); + }, + resetModal(){ + this.formData = {}; + this.betriebsmittelperson_id = {}; + this.statusNew = true; + }, + getDefaultDate() { + const today = new Date(); + return today; + } }, - created(){ this.$fhcApi .get('api/frontend/v1/stv/betriebsmittel/getTypenBetriebsmittel') @@ -130,6 +255,17 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); }, + mounted(){ +/* this.$refs.table.on("rowSelected", (row) => { + // Hier können Sie auf das ausgewählte Zeilenobjekt zugreifen und entsprechende Aktionen durchführen + console.log("Selected Row:", row.getData()); + });*/ + + //this.$refs.newBetriebsmittelModal.show(); + //loadFirstEntry for the form + console.log("mounted"); + //console.log(this.$refs.table.tableData); + }, /* async mounted() { if(this.showTinyMCE){ this.initTinyMCE(); @@ -170,139 +306,17 @@ export default { template: `
Betriebsmittel anlegen
+Betriebsmittel bearbeiten
+