edit Status Contracts

This commit is contained in:
ma0068
2024-11-06 11:43:59 +01:00
parent 40baa7e08c
commit 9fd9c4e94d
4 changed files with 196 additions and 66 deletions
@@ -20,7 +20,9 @@ class Vertraege extends FHCAPI_Controller
'addNewContract' => ['admin:r', 'assistenz:r'],
'deleteContract' => ['admin:r', 'assistenz:r'],
'insertContractStatus' => ['admin:r', 'assistenz:r'],
'loadContractStatus' => ['admin:r', 'assistenz:r'],
'deleteContractStatus' => ['admin:r', 'assistenz:r'],
'updateContractStatus' => ['admin:r', 'assistenz:r'],
]);
//Load Models
@@ -30,6 +32,7 @@ class Vertraege extends FHCAPI_Controller
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
}
//TODO(Manu) validations, phrases
public function getAllVertraege($person_id)
{
$result = $this->VertragModel->loadContractsOfPerson($person_id);
@@ -37,7 +40,6 @@ class Vertraege extends FHCAPI_Controller
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
@@ -48,7 +50,6 @@ class Vertraege extends FHCAPI_Controller
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
@@ -59,7 +60,6 @@ class Vertraege extends FHCAPI_Controller
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
@@ -70,7 +70,6 @@ class Vertraege extends FHCAPI_Controller
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
@@ -86,7 +85,6 @@ class Vertraege extends FHCAPI_Controller
public function getAllContractStati()
{
//TODO(MANUU)
$result = $this->VertragsstatusModel->load();
if (isError($result))
{
@@ -124,7 +122,6 @@ class Vertraege extends FHCAPI_Controller
'insertvon' => getAuthUID()
]);
//add entry with status neu in lehre.tbl_vertrag_vertragsstatus
//TODO(Manu) validation, dass status nicht schon bereits vorhanden
$status_result = $this->VertragvertragsstatusModel->insert([
'vertrag_id' => $result->retval,
@@ -232,7 +229,7 @@ class Vertraege extends FHCAPI_Controller
if (!hasData($result)) {
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Vertrag_id']), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(current(getData($result)));
return $this->terminateWithSuccess(current(getData($result)));
}
public function insertContractStatus ($vertrag_id, $datum, $status){
@@ -261,11 +258,11 @@ class Vertraege extends FHCAPI_Controller
$this->terminateWithError('Fehler beim Hinzufügen des Vertragsstatus.');
}
return $this->outputJsonSuccess(current(getData($status_result)));
return $this->terminateWithSuccess(current(getData($status_result)));
}
public function deleteContractStatus($vertrag_id, $status){
//return $this->terminateWithError($vertrag_id . " - " . $status, self::ERROR_TYPE_GENERAL);
$result = $this->VertragvertragsstatusModel->delete(
array(
'vertrag_id' => $vertrag_id,
@@ -279,6 +276,50 @@ class Vertraege extends FHCAPI_Controller
if (!hasData($result)) {
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'vertragsstatus_kurzb']), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(current(getData($result)));
return $this->terminateWithSuccess(current(getData($result)));
}
public function loadContractStatus ($vertrag_id, $status){
$result = $this->VertragvertragsstatusModel->loadWhere(
array(
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status
)
);
if (!$result) {
$this->terminateWithError('Status not existing');
}
return $this->terminateWithSuccess(current(getData($result)));
}
public function updateContractStatus ($vertrag_id, $datum, $status){
/* $result = $this->VertragvertragsstatusModel->loadWhere(
array(
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status
)
);
if (hasData($result)) {
$this->terminateWithError("status bereits vorhanden", self::ERROR_TYPE_GENERAL);
// $this->terminateWithError($this->p->t('ui', 'error_status_existing', ['id' => 'Vertrag_id']), self::ERROR_TYPE_GENERAL);
}*/
$status_result = $this->VertragvertragsstatusModel->update([
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status],
[
'uid' => getAuthUID(),
'updateamum' => date('c'),
'updatevon' => getAuthUID(),
'datum' => $datum
]);
if (!$status_result) {
$this->terminateWithError('Fehler beim Updaten des Vertragsstatus.');
}
return $this->terminateWithSuccess(current(getData($status_result)));
}
}
+7 -1
View File
@@ -36,11 +36,17 @@ export default {
deleteContract(vertrag_id){
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteContract/' + vertrag_id);
},
loadContractStatus(params){
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/loadContractStatus/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.status).join('/'));
},
insertContractStatus(params) {
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/insertContractStatus/' + params.vertrag_id + '/' + params.datum + '/' + Object.values(params.status).join('/'));
},
updateContractStatus(params) {
console.log("API", params.vertrag_id, params.status, params.datum);
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/updateContractStatus/' + params.vertrag_id + '/' + params.datum + '/' + Object.values(params.status).join('/'));
},
deleteContractStatus(params) {
console.log("API", params.vertrag_id, params.status);
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteContractStatus/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.status).join('/'));
}
}
+58 -11
View File
@@ -20,6 +20,10 @@ export default {
type: Array,
required: true
},
formDataParent: {
type: Object,
required: true
}
},
data() {
return {
@@ -53,6 +57,17 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Status bearbeiten';
button.addEventListener(
'click',
(event) =>
this.actionEditStatus(cell.getData().vertrag_id, cell.getData().vertragsstatus_kurzbz)
);
container.append(button);
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Status löschen';
button.addEventListener(
@@ -75,7 +90,8 @@ export default {
selectable: true,
},
clickedRows: [],
formContractData: {
statusNew: true,
formData: {
vertragsstatus_kurzbz: null,
datum: new Date()
},
@@ -84,34 +100,64 @@ export default {
watch: {
vertrag_id() {
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getStatiOfContract/' + this.vertrag_id);
},
formDataParent: {
handler(newVal, oldVal) {
this.formData = this.formDataParent;
},
deep: true
}
},
methods: {
actionNewStatus() {
console.log("actionNewStatus");
this.resetModal();
this.$refs.contractStatus.show();
},
actionEditStatus(vertrag_id, status) {
this.statusNew = false;
this.$emit('loadContractStatus', {
status: status,
vertrag_id: vertrag_id
});
},
actionDeleteStatus(vertrag_id, status) {
console.log("action: deleteStatus " + status + " from Vertrag" + vertrag_id);
this.$emit('deleteContractStatus', {
status: status,
vertrag_id: vertrag_id
});
},
handleSubmit(){
this.$emit('setContractStatus', {
status: this.formContractData.vertragsstatus_kurzbz,
datum: this.formContractData.datum
});
handleSubmit(action){
if (action == 'new') {
this.$emit('setContractStatus', {
status: this.formData.vertragsstatus_kurzbz,
datum: this.formData.datum
});
}
if (action == 'edit') {
this.$emit('updateContractStatus', {
status: this.formData.vertragsstatus_kurzbz,
datum: this.formData.datum
});
}
},
closeModal(){
this.$refs.contractStatus.hide();
this.$emit('close-modal');
},
openModal(){
this.$refs.contractStatus.show();
this.$emit('open-modal');
},
reload() {
this.$refs.table.reloadTable();
this.$emit('reload');
},
resetModal(){
this.formData = {};
this.formData.vertragsstatus_kurzbz = null;
this.formData.datum = new Date();
this.statusNew = true;
}
},
template: `
<!--TODO(Manu) check filter (akzeptiert, neu, erteilt?), design -->
@@ -144,7 +190,7 @@ export default {
type="DatePicker"
:label="$p.t('global/datum')"
name="datum"
v-model="formContractData.datum"
v-model="formData.datum"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
@@ -157,8 +203,9 @@ export default {
<form-input
type="select"
:label="$p.t('global/typ')"
v-model="formContractData.vertragsstatus_kurzbz"
v-model="formData.vertragsstatus_kurzbz"
name="vertragsstatus_kurzbz"
:disabled="!statusNew"
>
<option :value="null">{{$p.t('ui', 'bitteWaehlen')}}</option>
<option
@@ -173,7 +220,7 @@ export default {
</core-form>
<template #footer>
<button type="button" class="btn btn-primary" @click="handleSubmit()">{{$p.t('ui', 'speichern')}}</button>
<button type="button" class="btn btn-primary" @click="statusNew ? handleSubmit('new') : handleSubmit('edit')">{{$p.t('ui', 'speichern')}}</button>
</template>
</bs-modal>
+80 -44
View File
@@ -132,6 +132,10 @@ export default {
listContractTypes: [],
contractSelected: [],
listContractStati: [],
contractFormData: {
vertragsstatus_kurzbz: 'test',
datum: new Date()
}
// isContractModalVisible: true,
}
},
@@ -147,7 +151,6 @@ export default {
.then(this.$refs.contractModal.show);
},
actionDeleteContract(vertrag_id) {
console.log("actionDeleteContract" + vertrag_id);
this.$fhcAlert
.confirmDelete()
.then(result => result
@@ -156,7 +159,7 @@ export default {
.then(this.endpoint.deleteContract)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
@@ -168,48 +171,11 @@ export default {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractModal.hide();
this.resetModal();
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
addNewContractStatus({status, datum}) {
const date = new Date();
//TODO(Manu) refactor this
const formattedDate = datum.toLocaleDateString('en-CA');
let params = {
vertrag_id : this.contractSelected.vertrag_id,
status: {status},
datum: formattedDate
}
return this.endpoint
.insertContractStatus(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractstati.closeModal();
window.scrollTo(0, 0);
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteContractStatus({status, vertrag_id}){
let params = {
vertrag_id : {vertrag_id},
status: {status}
}
return this.endpoint
.deleteContractStatus(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
window.scrollTo(0, 0);
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
updateContract(vertrag_id) {
return this.endpoint
.updateContract(vertrag_id, this.formData)
@@ -217,7 +183,6 @@ export default {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractModal.hide();
this.resetModal();
window.scrollTo(0, 0);
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
@@ -232,6 +197,74 @@ export default {
})
.catch(this.$fhcAlert.handleSystemError);
},
addNewContractStatus({status, datum}) {
const date = new Date();
//TODO(Manu) refactor this
const formattedDate = datum.toLocaleDateString('en-CA');
let params = {
vertrag_id : this.contractSelected.vertrag_id,
status: {status},
datum: formattedDate
};
return this.endpoint
.insertContractStatus(params)
.then(response => {
//this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractstati.closeModal();
//window.scrollTo(0, 0);
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteContractStatus({status, vertrag_id}){
let params = {
vertrag_id : {vertrag_id},
status: {status}
};
return this.endpoint
.deleteContractStatus(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
//window.scrollTo(0, 0);
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
updateContractStatus({datum, status}){
//TODO(Manu) refactor this
const formattedDate = datum.toLocaleDateString('en-CA');
let params = {
vertrag_id : this.contractSelected.vertrag_id,
datum : formattedDate,
status: {status}
};
return this.endpoint
.updateContractStatus(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
//window.scrollTo(0, 0);
this.$refs.contractstati.closeModal();
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
loadContractStatus({vertrag_id, status}){
let params = {
vertrag_id : {vertrag_id},
status: {status}
};
return this.endpoint
.loadContractStatus(params)
.then(response => {
this.contractFormData = response.data;
this.$refs.contractstati.openModal();
})
.catch(this.$fhcAlert.handleSystemError);
},
reload() {
this.$refs.table.reloadTable();
},
@@ -259,7 +292,6 @@ export default {
this.$nextTick(() => {
this.$refs.table.tabulator.on("rowClick", (e, row) => {
this.contractSelected = row.getData();
console.log("vertrag_id: ", this.contractSelected.vertrag_id);
});
});
},
@@ -279,7 +311,6 @@ export default {
@click:new="actionNewContract"
>
</core-filter-cmpt>
Vertrag: {{contractSelected.vertrag_id}}
<div class = "row">
@@ -293,9 +324,14 @@ export default {
<div class="col-sm-6">
<!-- ContractStati -->
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
<contract-stati :vertrag_id="contractSelected.vertrag_id" :listContractStati="listContractStati"
<contract-stati
:vertrag_id="contractSelected.vertrag_id"
:listContractStati="listContractStati"
:formDataParent="contractFormData"
@setContractStatus="addNewContractStatus"
@deleteContractStatus="deleteContractStatus"
@updateContractStatus="updateContractStatus"
@loadContractStatus="loadContractStatus"
ref="contractstati"
></contract-stati>
</div>