import { showError } from "@nextcloud/dialogs"; import { baseUrl, cur, checkSelectPurJs, LoadDT, showDone } from "../modules/mainFunction.mjs"; import { updateDB, setDefuntCover } from "../modules/ajaxRequest.mjs"; export class Produit { /** * * @param myresp instantiate product object */ constructor(myresp) { this.id = myresp.id; this.reference = ((myresp.reference.length === 0) ? '-' : myresp.reference); this.description = ((myresp.description.length === 0) ? '-' : myresp.description); this.prix_unitaire = ((myresp.prix_unitaire.length === 0) ? '-' : myresp.prix_unitaire); this.product_type_name = (( myresp.product_type_name != null && myresp.product_type_name.length > 0) ? myresp.product_type_name : '-'); this.fk_product_type_id = myresp.fk_product_type_id; } /** * Get datatable row for a product */ getDTRow() { let myrow = [ '
' + this.id + '
', '
' + this.reference + '
', '
' + this.description + '
', '
' + cur.format(this.prix_unitaire) + '
', '
' + this.product_type_name + '
', '
' ]; return myrow; } /** * * @param {*} productDT */ static loadProduitDT(productDT) { var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getProduits', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { LoadDT(productDT, JSON.parse(this.response), Produit); }else{ showError(this.response); } }; oReq.send(); } /** * * @param {*} dt */ static newProduct(dt) { var oReq = new XMLHttpRequest(); oReq.open('POST', baseUrl + '/produit/insert', true); oReq.onload = function(e){ if (this.status == 200) { showDone() Produit.loadProduitDT(dt); }else{ showError(this.response); } }; oReq.send(); } static getProductsList(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getProduits', 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 getCoverProductsList(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getCoverProducts', 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(); } /** * * @param {*} lid */ static loadProductListToSelect(e){ Produit.getProductsList(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 ); // location.reload(); var parentElement = el.target.parentElement parentElement.innerHTML = 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.reference; 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); }); } /** * * @param {*} lid */ static loadCoverProductListIntoSelect(e){ Produit.getCoverProductsList(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){ let setDefuntCoverPayload = { defuntId : el.target.parentElement.dataset.id, productId : el.target.value } setDefuntCover(setDefuntCoverPayload); var parentElement = el.target.parentElement parentElement.innerHTML = 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.description; 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); }); } static getProductTypeList(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/product/getProductTypes', 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(); } /** * * @param {*} lid */ static loadProductTypeListIntoSelect(e){ Produit.getProductTypeList(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.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.product_type_name; 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); }); } }