refactor resources: endpoint betriebsmittel

This commit is contained in:
ma0068
2024-06-05 16:53:54 +02:00
parent 48d36cc859
commit 2d61dea287
9 changed files with 364 additions and 61 deletions
@@ -0,0 +1,284 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use \DateTime as DateTime;
class BetriebsmittelP extends FHCAPI_Controller
{
public function __construct()
{
parent::__construct([
'getAllBetriebsmittel' => ['admin:r', 'assistenz:r'],
'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'],
'loadInventarliste' => ['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');
// Load language phrases
$this->loadPhrases([
'ui',
'wawi'
]);
}
public function getAllBetriebsmittel($type_id, $id)
{
$result = $this->BetriebsmittelpersonModel->getBetriebsmittelData($id, $type_id);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function addNewBetriebsmittel($person_id)
{
$this->form_validation->set_rules('kaution', 'Kaution', 'numeric', [
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Kaution'])
]);
$this->form_validation->set_rules('betriebsmitteltyp', 'TYP', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Typ'])
]);
$this->form_validation->set_rules('ausgegebenam', 'Ausgegeben am', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Ausgegeben am'])
]);
if ($this->form_validation->run() == false) {
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$uid_user = getAuthUID();
$betriebsmitteltyp = $this->input->post('betriebsmitteltyp');
$nummer = $this->input->post('nummer');
$nummer2 = $this->input->post('nummer2');
$inventarData = $this->input->post('inventarData');
$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');
$uid = $this->input->post('uid');
if ($inventarData) {
$betriebsmitteltyp = $inventarData['betriebsmitteltyp'];
$betriebsmittel_id = $inventarData['betriebsmittel_id'];
}
if ($betriebsmitteltyp == 'Zutrittskarte' && !$nummer) {
return $this->terminateWithError($this->p->t('wawi', 'error_zutrittskarteOhneNummer'), self::ERROR_TYPE_GENERAL);
}
if ($retouram && $retouram < $ausgegebenam) {
return $this->terminateWithError($this->p->t('wawi', 'error_retourdatumVorAusgabe'), self::ERROR_TYPE_GENERAL);
}
if ($betriebsmitteltyp == "Inventar" && !($inventarData['inventarnummer'])) {
return $this->terminateWithError($this->p->t('wawi', 'error_inventarWaehlen'), self::ERROR_TYPE_GENERAL);
}
// Start DB transaction
$this->db->trans_begin();
$betriebsmitteltyp = utf8_decode($betriebsmitteltyp);
if (!$inventarData) {
$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($betriebsmittelperson_id)
{
$uid_user = getAuthUID();
$betriebsmittel_id = $this->input->post('betriebsmittel_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');
$this->form_validation->set_rules('kaution', 'Kaution', 'numeric', [
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'Kaution'])
]);
$this->form_validation->set_rules('betriebsmitteltyp', 'TYP', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Typ'])
]);
$this->form_validation->set_rules('ausgegebenam', 'Ausgegeben am', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Ausgegeben am'])
]);
if ($this->form_validation->run() == false) {
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
if ($betriebsmitteltyp == 'Zutrittskarte' && !$nummer) {
return $this->terminateWithError($this->p->t('wawi', 'error_zutrittskarteOhneNummer'), self::ERROR_TYPE_GENERAL);
}
if ($retouram && $retouram < $ausgegebenam) {
return $this->terminateWithError($this->p->t('wawi', 'error_retourdatumVorAusgabe'), self::ERROR_TYPE_GENERAL);
}
// 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,
'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);
}
$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);
}
public function loadBetriebsmittel($betriebsmittelperson_id)
{
$result = $this->BetriebsmittelpersonModel->getBetriebsmittelData($betriebsmittelperson_id, 'betriebsmittelperson_id');
if (isError($result)) {
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if (!hasData($result)) {
$this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Betriebsmittelperson_id']), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess(current(getData($result)));
}
public function deleteBetriebsmittel($betriebsmittelperson_id)
{
$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)));
}
public function getTypenBetriebsmittel()
{
$this->load->model('ressource/Betriebsmitteltyp_model', 'BetriebsmitteltypModel');
$this->BetriebsmitteltypModel->addOrder('beschreibung', 'ASC');
$result = $this->BetriebsmitteltypModel->load(); // load All
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function loadInventarliste($searchString)
{
$result = $this->BetriebsmittelModel->loadInventarliste($searchString);
if (isError($result)) {
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess($result ?: []);
}
}
@@ -33,13 +33,10 @@ class Betriebsmittel extends FHCAPI_Controller
]);
}
public function getAllBetriebsmittel($uid, $person_id)
public function getAllBetriebsmittel($type_id, $id)
{
//uid
//$result = $this->BetriebsmittelpersonModel->getBetriebsmittelData($uid, 'uid');
//person_id
$result = $this->BetriebsmittelpersonModel->getBetriebsmittelData($person_id, 'person');
$result = $this->BetriebsmittelpersonModel->getBetriebsmittelData($id, $type_id);
if (isError($result))
{
@@ -100,7 +100,7 @@ class Betriebsmittelperson_model extends DB_Model
public function getBetriebsmittelData($id, $type_id)
{
switch ($type_id) {
case 'person':
case 'person_id':
$cond = 'bmp.person_id';
break;
case 'uid':
+5
View File
@@ -0,0 +1,5 @@
import person from "./betriebsmittel/person.js";
export default {
person
}
+27
View File
@@ -0,0 +1,27 @@
export default {
getAllBetriebsmittel(url, config, params){
return this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);
},
addNewBetriebsmittel(person_id, formData) {
return this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +
person_id, formData
);
},
loadBetriebsmittel(betriebsmittelperson_id){
return this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);
},
updateBetriebsmittel(betriebsmittelperson_id, formData) {
return this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,
formData);
},
deleteBetriebsmittel(betriebsmittelperson_id){
return this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' + betriebsmittelperson_id);
},
getTypenBetriebsmittel(){
return this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');
},
loadInventarliste(query){
console.log(query);
return this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' + query);
}
}
+3 -1
View File
@@ -22,6 +22,7 @@ import filter from "./filter.js";
import studstatus from "./studstatus.js";
import stv from "./stv.js";
import notiz from "./notiz.js";
import betriebsmittel from "./betriebsmittel.js";
export default {
search,
@@ -30,5 +31,6 @@ export default {
filter,
studstatus,
stv,
notiz
notiz,
betriebsmittel
};
+1 -9
View File
@@ -1,13 +1,5 @@
//TODO(Manu) refactor with require or async!
//sonst Error wenn extension file nicht vorhanden
import person from "./notiz/person.js";
//import softwarenotiz from "../../extensions/FHC-Core-Softwarebereitstellung/js/api/softwarenotiz.js";
//import pppnotiz from "../../extensions/FHC-Core-PEP/js/api/pppnotiz.js";
export default {
person,
// softwarenotiz,
// pppnotiz
person
}
@@ -20,15 +20,30 @@ export default {
from: 'cisRoot'
},
},
props: [
'person_id',
'uid'
],
props: {
endpoint: {
type: Object,
required: true
},
typeId: String,
id: {
type: [Number, String],
required: true
},
uid: {
type: [Number, String],
required: true
}
},
data() {
return {
tabulatorOptions: {
ajaxURL: 'api/frontend/v1/stv/Betriebsmittel/getAllBetriebsmittel/' + this.uid + '/' + this.person_id,
ajaxRequestFunc: this.$fhcApi.get,
ajaxURL: 'dummy',
ajaxRequestFunc: this.endpoint.getAllBetriebsmittel,
ajaxParams: {
type: this.typeId,
id: this.id
},
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Nummer", field: "nummer"},
@@ -139,7 +154,7 @@ export default {
},
watch: {
uid() {
this.$refs.table.tabulator.setData('api/frontend/v1/stv/Betriebsmittel/getAllBetriebsmittel/' + this.uid + '/' + this.person_id);
this.$refs.table.tabulator.setData(this.endpoint.getAllBetriebsmittel + '/' + this.typeId + '/' + this.id);
}
},
methods: {
@@ -159,28 +174,20 @@ export default {
});
},
addNewBetriebsmittel() {
this.param = {
'uid': this.uid,
'person_id': this.person_id,
...this.formData
};
this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/addNewBetriebsmittel/',
this.param
).then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
//just append uid to formdata
this.formData.uid = this.uid;
return this.endpoint.addNewBetriebsmittel(this.id, this.formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
.finally(() => {
window.scrollTo(0, 0);
this.reload();
});
},
deleteBetriebsmittel(betriebsmittelperson_id) {
this.param = {
'betriebsmittelperson_id': betriebsmittelperson_id
};
return this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/deleteBetriebsmittel/',
this.param)
return this.endpoint.deleteBetriebsmittel(betriebsmittelperson_id)
.then(
result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
@@ -193,15 +200,10 @@ export default {
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 => {
updateBetriebsmittel(betriebsmittelperson_id) {
this.formData.uid = this.uid;
return this.endpoint.updateBetriebsmittel(betriebsmittelperson_id, this.formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
@@ -213,11 +215,7 @@ export default {
loadBetriebsmittel(betriebsmittelperson_id) {
this.resetModal();
this.statusNew = false;
this.param = {
'betriebsmittelperson_id': betriebsmittelperson_id
};
return this.$fhcApi.post('api/frontend/v1/stv/betriebsmittel/loadBetriebsmittel/',
this.param)
return this.endpoint.loadBetriebsmittel(betriebsmittelperson_id)
.then(result => result.data)
.then(result => {
this.formData = result;
@@ -226,8 +224,7 @@ export default {
},
searchInventar(event) {
const encodedQuery = encodeURIComponent(event.query);
return this.$fhcApi
.get('api/frontend/v1/stv/betriebsmittel/loadInventarliste/' + encodedQuery)
return this.endpoint.loadInventarliste(encodedQuery)
.then(result => {
this.filteredInventar = result.data.retval;
});
@@ -257,8 +254,7 @@ export default {
}
},
created(){
this.$fhcApi
.get('api/frontend/v1/stv/betriebsmittel/getTypenBetriebsmittel')
return this.endpoint.getTypenBetriebsmittel()
.then(result => result.data)
.then(result => {
this.listBetriebsmitteltyp = result;
@@ -300,8 +296,6 @@ export default {
</div>
<form-form class="row g-3 col-6" ref="betriebsmittelData">
<legend>Details</legend>
@@ -445,7 +439,7 @@ export default {
<button ref="Close" type="button" class="btn btn-primary" @click="addNewBetriebsmittel()">{{$p.t('ui', 'speichern')}}</button>
</div>
<div v-else class="col-sm-4">
<button ref="Close" type="button" class="btn btn-primary" @click="updateBetriebsmittel()">{{$p.t('ui', 'speichern')}}</button>
<button ref="Close" type="button" class="btn btn-primary" @click="updateBetriebsmittel(formData.betriebsmittelperson_id)">{{$p.t('ui', 'speichern')}}</button>
</div>
</div>
@@ -10,8 +10,10 @@ export default {
template: `
<div class="stv-details-betriebsmittel h-100 pb-3">
<core-betriebsmittel
:endpoint="$fhcApi.factory.betriebsmittel.person"
ref="formc"
:person_id="modelValue.person_id"
type-id="person_id"
:id="modelValue.person_id"
:uid="modelValue.uid"
>
</core-betriebsmittel>