/**
* quest' oggetto definisce i metodi XML
* se is_editable è true la stringa XML verrà modificato dall' update massivo
* @type {{sso_getWebcustomerInformation: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getSelectedMSISDNDetails: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getMSISDNDetails: {defaultXML: string, is_editable: boolean, actualXML: string}, picasso_getWebcustomerInformation: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getMSISDNList: {defaultXML: string, is_editable: boolean, actualXML: string}, sso_getInfoActivationWSC: {defaultXML: string, is_editable: boolean, actualXML: string}}}
*/
let xmlMethods = {
'sso_getWebcustomerInformation': {
'defaultXML': sso_getWebcustomerInformation,
'actualXML': sso_getWebcustomerInformation, // dopo le modifiche
'is_editable': true // verrà modificato dalle modifiche massive?
},
'sso_getMSISDNDetails': {
'defaultXML': sso_getMSISDNDetails,
'actualXML': sso_getMSISDNDetails,
'is_editable': true
},
'sso_getMSISDNList': {
'defaultXML': sso_getMSISDNList,
'actualXML': sso_getMSISDNList,
'is_editable': true
},
'sso_getSelectedMSISDNDetails': {
'defaultXML': sso_getSelectedMSISDNDetails,
'actualXML': sso_getSelectedMSISDNDetails,
'is_editable': true
},
'sso_getInfoActivationWSC': {
'defaultXML': sso_getInfoActivationWSC,
'actualXML': sso_getInfoActivationWSC,
'is_editable': true
},
'picasso_getWebcustomerInformation': {
'defaultXML': picasso_getWebcustomerInformation,
'actualXML': picasso_getWebcustomerInformation,
'is_editable': true
},
}
/**
* questa è la lista di campi mostrati nella sezione di update massivo
* per aggiungere un campo è necessario aggiungere un oggetto di questo tipo alla lista
* @type {({defaultValue: number, inputType: string, requireCheckbox: boolean, inputName: string}|{defaultValue: string, onChangeEditFields: {custcode: {editType: string}}, inputName: string}|{defaultValue: string, inputName: string}|{defaultValue: string, inputName: string}|{defaultValue: string, inputName: string})[]}
*/
let editableFields = [
{
'inputName': 'n_sim',
'inputType': 'number',
"defaultValue": 1,
'requireCheckbox': false,
},
{
'inputName': 'profile_user_name',
"defaultValue": "NAME FAKESSO | DUAL TM9 RIC 5.49275",
'requireCheckbox': false,
},
{
'inputName': 'Custcode',
'defaultValue': '5.49275',
'onChangeEditFields': {
'custcode': {
'editType': 'copyMain'
}
}
},
{
'inputName': 'EmailAddress',
'defaultValue': 'pippo@vola.it'
},
{
'inputName': 'Name',
'defaultValue': 'Paola'
},
{
'inputName': 'ProfileIdentifier',
'defaultValue': 'BUSINESS_EMPLOYEE'
},
{
'inputName': 'Surname',
'defaultValue': 'Sandrelli'
},
{
'inputName': 'Username',
'defaultValue': 'FAKE_SSO_',
'onChangeEditFields': {
'username': {
'editType': 'copyMain'
},
}
},
{
'inputName': 'IdPiano',
'defaultValue': '2491'
},
{
'inputName': 'OMProductId',
'defaultValue': '2156' // se uno di quelli dual risulto come dual già attivo
},
{
'inputName': 'tmCode',
'defaultValue': '2491'
},
{
'inputName': 'sim_1',
'defaultValue': '3464232371',
'onChangeEditFields': {
'MSISDN': {
'editType': 'copyMain'
},
'selectedBoID': {
'editType': 'copyMain'
}
}
}
// {
// 'inputName': 'Type_ID',
// 'defaultValue':'...',
// 'labelText': 'Type_ID ex. (2)'
// },
// {
// 'inputName': 'providerID',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'selectedBoId',
// 'defaultValue':'...'
// // },
// {
// 'inputName': 'selectedBoType',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'username',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'productId',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'productType',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'offerType',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'rewardID',
// 'defaultValue':'...'
// },
// {
// 'inputName': 'groupTypeID',
// 'defaultValue':'...'
// }
];
function prova() {}
$(document).ready(function () {
addEditableFieldsInputs();
$.each(xmlMethods, function (method_name) {
setDefaultXML(method_name);
if (xmlMethods[method_name]["is_editable"]) {
$(`input[name="is_editable_${method_name}"]`).prop("checked", true);
}
})
serializeInputAndEditXML(true, true);
$('input[name="n_sim"]').on('change', displayNInputsForNSims);
$('input[name^="shouldReplace_"]').on('change', shouldReplaceOption);
$(document).on('change', '#edit-all input:not([type="checkbox"])', serializeInputAndEditXML);
$(document).on('click', '#edit-all button[name=modifica_massiva]', serializeInputAndEditXML);
$(document).on('click', '#edit-all button[name=database]', prova);
$('input[name^="is_editable_"]').on('change', changeEditOption);
$(document).on('input', 'textarea', validateTextarea);
$(document).on('click', 'button[id^="set_default_xml_"]', setDefaultXML);
$(document).on('click', 'button[name="show_result"]', showResult);
$(document).on('click', 'button[name="copy-result"]', copyToClipboard);
});
/**
* partendo dalla lista di sim aggiungo tutti i tag sim all' xml del metodo getMSISDNList
* @param sim_list
*/
function editGetMSISDNListXML(sim_list) {
let jsonMsisdn = $.xml2json(sso_getMSISDNList)
let MSISDNList = jsonMsisdn["getMDISDNList"]["msisdn_list"]
sim_list.forEach(function (sim_obj) {
MSISDNList[sim_obj.inputName] = ""
});
const newXML = $.json2xml(jsonMsisdn)
let encodingValue = $.parseXML(sso_getMSISDNList)["xmlEncoding"] ?? null;
const xmlHead = ``;
xmlMethods.sso_getMSISDNList.actualXML = xmlHead + newXML
const formattedXML = vkbeautify.xml(xmlMethods.sso_getMSISDNList.actualXML)
$(`textarea#sso_getMSISDNList`).val(formattedXML)
}
/**
* aggiungo una textarea per ogni sim per il metodo selezionato
* @param sim_list
* @param genericMethodName valori tipo -> "sso_getSelectedMSISDNDetails", "sso_getInfoActivationWSC"
*/
function add_N_areatext_sections(sim_list, genericMethodName) {
let additional_methods_wrapper = $('#' + "additional_methods_" + genericMethodName)
additional_methods_wrapper.empty()
sim_list.forEach(function (sim_obj) {
let sim_code = sim_obj.inputName
let uniqueMethodName = sim_code + "_" + genericMethodName
xmlMethods[uniqueMethodName] = {
'defaultXML': xmlMethods.sso_getSelectedMSISDNDetails.defaultXML,
'actualXML': xmlMethods.sso_getSelectedMSISDNDetails.defaultXML,
'is_editable': true
}
let formattedXML = vkbeautify.xml(xmlMethods[uniqueMethodName]["defaultXML"])
let additionalMethodArea = `
`;
additional_methods_wrapper.append(additionalMethodArea)
}
)
}
/**
* questo metodo viene chiamato ogni volta che cambia in numero di sim e:
*
* genero gli oggetti input per ogni sim
* passo la lista di oggetti input a addEditableFieldsInput (aggiunti nella sezione modifica massiva)
* aggiorno l' xml del metodo getMSISDNList con le nuove sim
* aggiungo una nuova textarea di editing metodo per ogni sim per i metodi getSelectedMSISDNDetails getInfoActivationWSC
* @return void
*/
function displayNInputsForNSims() {
$("[id^=sim_][id$=_wrapper]:not(#sim_1_wrapper)").remove();//rimuovo i vecchi input
editableFields = editableFields.filter(field => !(field.inputName.startsWith('sim_') && (field.inputName !== "sim_1")));
let numberOfSim = $(this).val();
if (!(0 < numberOfSim) || !(numberOfSim <= 6)) {
$(this).val(1)
numberOfSim = 1
}
const phone_number_sim_1 = $('input[name="sim_1"]').val()
let sim_list = [];
for (let sim_n = 2; sim_n <= numberOfSim; sim_n++) {
let inputObj = {
"inputName": "sim_" + sim_n,
"defaultValue": phone_number_sim_1 + sim_n//qui
};
sim_list.push(inputObj)
editableFields.push(inputObj)
}
addEditableFieldsInputs(sim_list)
//cambio actualXML di conseguenza inserendo dove necessario le chiavi aggiuntive di sim_1, sim_2, sim_3...
// lista di xml che devono essere cambiati:
// getMSISDNList (deve avere N tag sim_1, sim_2... )
editGetMSISDNListXML(sim_list)
// getSelectedMSISDNDetails deve avere N textarea una per ogni sim
add_N_areatext_sections(sim_list, "sso_getSelectedMSISDNDetails")
// getInfoActivationWSC deve avere N textarea una per ogni sim
add_N_areatext_sections(sim_list, "sso_getInfoActivationWSC")
}
/**
* inserisco la lista di input in pagina per l' editing massivo dei campi
* @param inputList
*/
function addEditableFieldsInputs(inputList = editableFields) {
let inputWrapper = $('#wrapper-input-list')
inputList.forEach(function (inputObj, index) {
let div = $("
", {id: inputObj["inputName"] + "_wrapper", class: "col mb-2"});
let labelText = inputObj["labelText"] ?? inputObj["inputName"];
let label = $("