import { showError } from "@nextcloud/dialogs"; import { updateDB } from "../modules/ajaxRequest.mjs"; import { baseUrl, checkSelectPurJs, hideLoader, LoadDT, removeOptions, showDone, showLoader, } from "../modules/mainFunction.mjs"; export class Provider { /** * * @param myresp instantiate client object */ constructor(myresp) { this.id = myresp.id; this.providerName = myresp.provider_name.length === 0 ? "-" : myresp.provider_name; this.providerLastName = myresp.provider_last_name.length === 0 ? "-" : myresp.provider_last_name; this.providerCompanyName = myresp.provider_company_name.length === 0 ? "-" : myresp.provider_company_name; this.providerSiretNumber = myresp.provider_siret_number.length === 0 ? "-" : myresp.provider_siret_number; this.providerPhone = myresp.provider_phone.length === 0 ? "-" : myresp.provider_phone; this.providerEmail = myresp.provider_email.length === 0 ? "-" : myresp.provider_email; this.providerAddress = myresp.provider_address.length === 0 ? "-" : myresp.provider_address; this.providerCity = myresp.provider_city.length === 0 ? "-" : myresp.provider_city; } /** * Get datatable row for a client */ getDTRow() { let myrow = [ '', "
" + this.id + "
", '
' + this.providerName + "
", '
' + this.providerLastName + "
", '
' + this.providerCompanyName + "
", '
' + this.providerSiretNumber + "
", '
' + this.providerPhone + "
", '
' + this.providerEmail + "
", '
' + this.providerAddress + "
", '
' + this.providerCity + "
", '
', ]; return myrow; } /** * * @param {*} providerDatatable */ static loadProviderDatatable(providerDatatable) { var oReq = new XMLHttpRequest(); oReq.open("PROPFIND", baseUrl + "/provider/list", true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function (e) { if (this.status == 200) { LoadDT(providerDatatable, JSON.parse(this.response), Provider); } else { showError(this.response); } }; oReq.send(); } /** * * @param {*} dt */ static createDefaultProvider(dt) { var oReq = new XMLHttpRequest(); showLoader(); oReq.open("POST", baseUrl + "/provider/createDefaultProvider", true); oReq.onload = function (e) { if (this.status == 200) { if (this.response != null) { showDone(); Provider.loadProviderDatatable(dt); } else { showError("Erreur dans la création d'un fournisseur"); } } else { showError("Erreur dans la création d'un fournisseur"); } hideLoader(); }; oReq.send(); } static getProviders(callback) { var oReq = new XMLHttpRequest(); oReq.open("PROPFIND", baseUrl + "/provider/list", 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 {*} e */ static loadProvidersIntoSelect(e) { Provider.getProviders((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.provider_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); }); } }