n2a.fimporter = {};
n2a.fimporter.init = function(){
swal.close();
n2a.fimporter.ChecklistId = _GET.id;
n2a.fimporter.domContainer = document.querySelector(".container form.mws-form");
Ext.get(n2a.fimporter.domContainer).mask("Obteniendo secciones actuales");
n2a.fimporter.obtenCurrentSections(function(){
Ext.get(n2a.fimporter.domContainer).unmask();
n2a.fimporter.uploadFile();
});
}
n2a.fimporter.uploadFile = function(){
var folder = "cuenta_csv";
var ckid = n2a.fimporter.ChecklistId;
MainActions.showHTML5Upload({
folder: folder,
maxFiles: 1,
BeforeUpload: function (file, _win) {
file.rcname = "ckscript_" + ckid + "." + file.rcextension;
},
onDone: function (archivos, _win) {
console.log(archivos);
if (archivos.length > 0) {
var archivo = archivos[0];
archivo.spath = "../panel/uploads/" + folder + "/" + archivo.rcname;
n2a.fimporter.startProcess(archivo);
}
_win.close();
},
filters: [
{
title: "Js files",
extensions: "js,txt,dat"
}
]
});
};
n2a.fimporter.startProcess = function(archivo){
Ext.get(n2a.fimporter.domContainer).mask("Obtniendo contenido....");
console.log(archivo);
n2a.fimporter.getContent(archivo.spath, function(){
var item = n2a.fimporter.mainItem;
//alert(item.metaData.title);
Ext.get(n2a.fimporter.domContainer).unmask();
Swal.fire({
title: "Importando " + item.metaData.title,
allowOutsideClick : false,
allowEscapeKey : false,
html: '<div id="fimporter-win_msg">Procesando...</div>',
onBeforeOpen: () => {
Swal.showLoading()
},
onOpen : () => {
n2a.fimporter.processChunks();
}
});
});
};
n2a.fimporter.getSeccion2Import = function(){
var secciones = n2a.fimporter.mainItem.secciones;
var secciones2Import = [];
secciones.forEach(function(seccionOriginal){
var seccionItem = $.extend({}, seccionOriginal);
seccionItem.SeccionOriginalId = seccionItem.SeccionId;
seccionItem.SeccionId = null;
delete seccionItem.SeccionId;
seccionItem.CheckListId = n2a.fimporter.ChecklistId;
secciones2Import.push(seccionItem);
});
return secciones2Import;
};
n2a.fimporter.processChunks = function(){
var secciones2Import = n2a.fimporter.getSeccion2Import();
var $wcontainer = $("#fimporter-win_msg");
var rsData = [];
stepExecute(secciones2Import, {
onStep: function (index, item, props, cbNext) {
console.log(item);
var rsItem = {
Nombre : item.Nombre,
creado : false,
importado : false,
};
console.log(item.Nombre);
var htm = "Creando sección: <b>" + item.Nombre + "</b>";
var existingSection = n2a.fimporter.currentSecciones[item.SeccionClave];
if(existingSection){
item.SeccionId = existingSection.SeccionId;
htm = "Actualizando sección: <b>" + item.Nombre + "</b>";
}
htm += "<br/><small>" + (index + 1) + " de " + secciones2Import.length + "</small>";
$wcontainer.html(htm);
n2a.fimporter.creaSeccion(item, function(seccionCreadaId, rs){
if(seccionCreadaId){
rsItem.seccionCreadaId = seccionCreadaId;
rsItem.creado = true;
}
htm += "<br/><span style='color:green;' id='fimporter-msg_preguntas'>Sección creada, importando preguntas...</span>";
$wcontainer.html(htm);
n2a.fimporter.creaPreguntas({SeccionCreadaId: seccionCreadaId, SeccionOriginalId: item.SeccionOriginalId}, function(rsPregunta){
rsData.push(rsItem);
setTimeout(() => cbNext(), 600);
});
});
},
onFinish: function () {
var htm = $.map(rsData, function(oitem){
return oitem.Nombre + " ... " + (oitem.creado ? "<span style='color:green'>OK</span>" : "<span style='color:red'>Error</span>");
}).join("<br/>");
Swal.fire({
type: 'success',
title: 'Se procesaron las secciones' ,
html : '<div style="margin-top:10px; text-align:left">' + htm + "</div>"
});
cleanThaCombo("ExtfieldCmbSecciones");
MostrarBotonera();
MostrarPreguntasXSeccion();
//_this.close();
}
});
};
n2a.fimporter.creaPreguntas = function(params, cbFinish){
var preguntas = $.extend([], n2a.fimporter.mainItem.preguntas, true);
var preguntas = n2a.fimporter.mainItem.preguntas.filter(item => item.SeccionId == params.SeccionOriginalId);
preguntas.forEach(item => {
item.PreguntaId = null;
item.SeccionId = params.SeccionCreadaId;
item.CheckListId = n2a.fimporter.ChecklistId;
item.TieneFormula = item.Formula ? true : false;
});
var rsData = [];
var $wpregunta = $("#fimporter-msg_preguntas");
stepExecute(preguntas, {
onStep: function (index, item, props, cbNext) {
var rsItem = {
Nombre : item.TituloPregunta,
creado : false,
importado : false,
};
console.log(item);
console.log(item.TituloPregunta);
var htm = "Validando pregunta: <b>" + item.TituloPregunta + "</b>";
$wpregunta.html(htm);
n2a.fimporter.getPreguntaXClave(item.PreguntaClave, function(rowRepetido){
var htm = "Creando pregunta: <b>" + item.TituloPregunta + "</b>";
if(rowRepetido._v){
htm = "Actualizando pregunta: <b>" + item.TituloPregunta + "</b>";
console.warn("Ya existe " + rowRepetido.PreguntaId, rowRepetido);
item.PreguntaId = rowRepetido.PreguntaId;
}
$wpregunta.html(htm);
n2a.fimporter.creaPreguntaBd(item, function(){
rsItem.creado = true;
rsData.push(rsItem);
cbNext();
});
});
},
onFinish: function () {
var htm = $.map(rsData, function(oitem){
return oitem.Nombre + " ... " + (oitem.creado ? "<span style='color:green'>OK</span>" : "<span style='color:red'>Error</span>");
}).join("<br/>");
$wpregunta.html(htm);
cbFinish();
}
});
};
n2a.fimporter.creaSeccion = function(params, cb){
params.pg = "AddSeccion";
Ext.Ajax.request({
url: EvaluacionHandler,
params : params,
method :'POST',
success:function(response, options){
var json = Ext.util.JSON.decode(response.responseText);
cb && cb(json.id || 0, json);
}
})
};
n2a.fimporter.creaPreguntaBd = function(params, cb){
params.pg = "AddPregunta";
Ext.Ajax.request({
url: EvaluacionHandler,
params : params,
method :'POST',
success:function(response, options){
var json = Ext.util.JSON.decode(response.responseText);
cb && cb(json.id || 0, json);
}
})
};
n2a.fimporter.getContent = function(spath, cb){
n2a.fimporter.mainItem = {};
Ext.Ajax.request({
url: spath,
params: {
},
method: 'GET',
success: function (response, options) {
console.log(response.responseText);
var json = Ext.util.JSON.decode(response.responseText);
n2a.fimporter.mainItem = json;
cb(true, n2a.fimporter.mainItem);
}
});
};
n2a.fimporter.getPreguntaXClave = function(clave, cb){
Ext.Ajax.request({
url: EvaluacionHandler,
params: {
pg: "ListPreguntas",
start: 0,
limit: 5,
ckid: n2a.fimporter.ChecklistId,
sort: "TituloPregunta",
clave: clave
},
method: 'GET',
success: function (response, options) {
var row = { _v: false };
var json = Ext.util.JSON.decode(response.responseText);
if (json.data.length > 0) {
row = json.data[0];
row._v = true;
}
cb(row);
}
});
};
n2a.fimporter.obtenCurrentSections = function(cb){
n2a.fimporter.currentSecciones = {};
Ext.Ajax.request({
url: EvaluacionHandler,
params: {
pg: "ListSecciones",
start: 0,
limit: 100,
CheckListId : n2a.fimporter.ChecklistId,
sort : "SeccionId"
},
method: 'GET',
success: function (response, options) {
var json = Ext.util.JSON.decode(response.responseText);
if(json.data){
json.data.forEach(function(item){
n2a.fimporter.currentSecciones[item.SeccionClave] = item;
});
}
cb(true);
}
});
};
n2a.fimporter.init();