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);
});
}
}