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.date_naissance = myresp.date_naissance;
this.age = 0;
this.sexe = ((myresp.sexe.length === 0) ? null : myresp.sexe);
this.ref_pacemaker = ((myresp.ref_pacemaker.lenth == 0) ? '-' : myresp.ref_pacemaker);
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.age = Defunt.caclulateAge(myresp.date_naissance);
}
/**
* Get datatable row for an item
*/
getDTRow() {
let myrow = [
'
' + this.id + '
', // identifiant
'' + this.nom + '
', // nom
'',
''+this.age+'
', // age
''+
''+
'
', // sexe
'' + this.ref_pacemaker + '
', // reference pacemaker
''+this.numero_devis+'
', // numeroDevis
''+this.pompe+'
', // pompe
''+this.lieu+'
', // lieu
''
];
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);
});
}
}