177 lines
5.9 KiB
JavaScript

import { showError } from "@nextcloud/dialogs";
import { LoadDT, baseUrl, checkSelectPurJs, showDone } from "../modules/mainFunction.mjs";
import { generateUrl } from "@nextcloud/router";
import { updateDB } from "../modules/ajaxRequest.mjs";
export class Defunt {
/**
*
* @param myresp instantiate Defunt object
*/
constructor(myresp) {
this.id = myresp.id;
this.nom = ((myresp.nom.length === 0) ? '-' : myresp.nom);
this.ref_pacemaker = ((myresp.ref_pacemaker.length == 0) ? '-' : myresp.ref_pacemaker);
this.devisDate = "-";
if(myresp.id_devis != null && myresp.devis_date != null){
const date = new Date(myresp.devis_date);
this.devisDate = date.toLocaleDateString('fr-FR');
}
this.pompe = ((myresp.nom_client == null) ? '-' : myresp.nom_client);
this.lieu = ((myresp.lieu == null) ? '-' : myresp.lieu);
this.numero_devis = ((myresp.user_id == null) ? '-' : myresp.user_id);
this.baseUrl = generateUrl(`/apps/gestion/defunt/${this.id}/show`);
this.productCoverDescription = Defunt.getDefuntProductCoverDescriptionFromApiResponse(myresp);
}
static getDefuntProductCoverDescriptionFromApiResponse(myresp){
let defuntProductCoverDescription = "-";
if(myresp.product_cover_description != null && myresp.product_cover_description.length > 0 ){
defuntProductCoverDescription = myresp.product_cover_description;
}
return defuntProductCoverDescription;
}
/**
* Get datatable row for an item
*/
getDTRow() {
let myrow = [
'<div>' + this.id + '</div>', // identifiant
'<div class="editable" data-table="defunt" data-column="nom" data-id="' + this.id + '">' + this.nom + '</div>', // nom
'<div class="editable" data-table="defunt" data-column="ref_pacemaker" data-id="' + this.id + '">' + this.ref_pacemaker + '</div>', // reference pacemaker
'<div>'+this.numero_devis+'</div>', // numeroDevis
'<div>'+this.pompe+'</div>', // pompe
'<div>'+this.lieu+'</div>', // lieu
'<div>'+this.devisDate+'</div>',
'<div class="selectCoverProductsList" data-id="' + this.id + '" data-current="' + this.productId + '">' +this.productCoverDescription+'</div>', // lieu
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl + '"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="defunt" data-id=' + this.id + ' data-table="defunt" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>'
];
return myrow;
}
/**
*
* @param {*} dateNaissance
*/
static caclulateAge(dateNaissance) {
var diff = Date.now() - (new Date(dateNaissance)).getTime();
var ageDate = new Date(diff);
var age = Math.abs(ageDate.getUTCFullYear() - 1970);
return age;
}
/**
*
* @param {*} defuntDt
*/
static loadDefuntDT(defuntDt) {
var oReq = new XMLHttpRequest();
oReq.open('PROPFIND', baseUrl + '/getDefunts', true);
oReq.setRequestHeader("Content-Type", "application/json");
oReq.onload = function(e){
if (this.status == 200) {
LoadDT(defuntDt, JSON.parse(this.response), Defunt);
}else{
showError(this.response);
}
};
oReq.send();
}
/**
*
* @param {*} dt
*/
static newDefunt(dt) {
var oReq = new XMLHttpRequest();
oReq.open('POST', baseUrl + '/defunt/insert', true);
oReq.onload = function(e){
if (this.status == 200) {
showDone()
Defunt.loadDefuntDT(dt);
}else{
showError(this.response);
}
};
oReq.send();
}
static getDefunts(callback){
var oReq = new XMLHttpRequest();
oReq.open('PROPFIND', baseUrl + '/getDefunts', true);
oReq.setRequestHeader("Content-Type", "application/json");
oReq.onload = function(e){
if (this.status == 200) {
callback(JSON.parse(this.response));
}else{
showError(this.response);
}
};
oReq.send();
}
static getUnusedDefunts(callback){
var oReq = new XMLHttpRequest();
oReq.open('PROPFIND', baseUrl + '/getUnusedDefunts', true);
oReq.setRequestHeader("Content-Type", "application/json");
oReq.onload = function(e){
if (this.status == 200) {
callback(JSON.parse(this.response));
}else{
showError(this.response);
}
};
oReq.send();
}
/**
* @desc populate defunt select list in devis
*/
static loadDefuntList_tid(e){
Defunt.getUnusedDefunts(response => {
var selectElement = document.createElement("select");
selectElement.dataset.current = e.target.dataset.current;
selectElement.dataset.id = e.target.dataset.id;
selectElement.dataset.old = e.target.innerHTML;
selectElement.addEventListener("change", el=>{
if(el.target.value != 0){
updateDB(el.target.parentElement.dataset.table,
el.target.parentElement.dataset.column,
el.target.value,
el.target.parentElement.dataset.id
);
var parentElement = el.target.parentElement
parentElement.innerHTML = el.target.value + " " + el.target.options[el.target.selectedIndex].text;
parentElement.dataset.current = el.target.value;
}else{
var parentElement = el.target.parentElement
parentElement.innerHTML = el.target.dataset.old
}
});
var option = document.createElement("option");
option.value = 0;
option.text = t('gestion', 'Cancel');
selectElement.appendChild(option);
JSON.parse(response).forEach(myresp => {
var txt = document.createElement("textarea");
txt.innerHTML = myresp.nom;
var option = document.createElement("option");
option.value = myresp.id;
option.text = txt.value;
selectElement.appendChild(option);
});
checkSelectPurJs(selectElement);
e.target.innerHTML = ''
e.target.appendChild(selectElement);
});
}
}