/*!
 * Copyright 2021 E.J.I.E., S.A.
 *
 * Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la "Licencia");
 * Solo podrá usarse esta obra si se respeta la Licencia.
 * Puede obtenerse una copia de la Licencia en
 *
 *      http://ec.europa.eu/idabc/eupl.html
 *
 * Salvo cuando lo exija la legislación aplicable o se acuerde por escrito,
 * el programa distribuido con arreglo a la Licencia se distribuye "TAL CUAL",
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
 * Véase la Licencia en el idioma concreto que rige los permisos y limitaciones
 * que establece la Licencia.
 */

jQuery(function($) {
	
	initRupI18nPromise.then(function () {
		initFilter();			
		obtenerBandejas(false);
	});	
	
	
	const initFilter = () => {
		
		$("#procedimiento_filter_table").rup_combo({		
			loadFromSelect:true,
			width: 'auto',
			ordered: false,
			customClasses: ['select-material'],
			rowStriping: true,
			change: function () {
				obtenerBandejas(true);
			}
		});
		
		$("#tecnico_filter_table").rup_combo({		
			loadFromSelect:true,
			width: 'auto',
			ordered: false,
			customClasses: ['select-material'],
			rowStriping: true,
			change: function () {
				obtenerBandejas(true);
			}
		});
		
		$("#carga_automatica").on("change", () => {
			$("#cuadromando_filter_filterButton").toggleClass("d-none");
		});
		
		$("#cuadromando_filter_filterButton").on("click", function(){
			obtenerBandejas(false);
		});
		
		$("#busquedaExpediente_button").on("click", function(){
			
			let amp = '';
			let qMark = '';
			let procedimientoParam  = '';
			if( $("#procedimiento_filter_table").rup_combo("getRupValue") != 0 ){
				procedimientoParam = amp+"idProcedimiento=" + $("#procedimiento_filter_table").rup_combo("getRupValue");
				amp='&';
				qMark='?';
			}
			let tecnicoParam = '';
			if( $("#tecnico_filter_table").rup_combo("getRupValue") != 0 ){
				tecnicoParam = amp+"tecnicoExpediente=" + $("#tecnico_filter_table").rup_combo("getRupValue") ;
				qMark='?';
			}
		
			window.location.href = $.rup.CTX_PATH + "expedientes/busquedaExpedientes" + qMark + procedimientoParam + tecnicoParam;

		});
	}
		
	
	const obtenerBandejas = (check) => {		
		
		
		if(check == undefined || check == false || check == '' || (check && $("#carga_automatica").is(":checked"))){
			
			let data = {};
			data.expediente = window.form2object($('#cuadromando_filter_form')[0]);
			data = JSON.stringify(data);
			
			$.rup_ajax({
	        type: "POST",
	           'url': urlCuadroMando,
	           'data': data,
	           'contentType': 'application/json',
	           'dataType': 'json',
	           beforeSend: function(){
	        	   reiniciarTabla();
	        	   Ad74aUtils.bloquearInterfaz();
	           },
	           success: function(res)
	           {
 	        	   if(res != undefined && res != null && res != ""){
 	        		   const cuadro = JSON.parse(res);
 	        		   console.log(cuadro);
 	        		   procesarDatos(cuadro);
 	        	   }
	           },
	       	   complete: function(){
	       		   Ad74aUtils.desBloquearInterfaz();
	       	   }
    	    });
			
		}				
	}
	
	const reiniciarTabla = () => {

		const theadHtml = "<tr><th style='border-right: 1px solid #cfcfcf;'>"+$.rup.i18n.app.cuadroMando.bandejas+"</th><th width='70%'>"+$.rup.i18n.app.cuadroMando.procedimientos+"</th></tr>";
		const tbodyHtml = "<tr class='odd'><td colspan='2' class='dataTables_empty' valign='top'>"+$.rup.i18n.app.cuadroMando.noResult+"</td></tr>";
		
		$(".bandejaMando > thead").html(theadHtml);
		$(".bandejaMando > tbody").html(tbodyHtml);
		$("#bandejas > tfoot").html("");	
		
	}
	
	const getUrlByData = (urlEstado, procedimiento) => {		
		
		const cadena = 'procedimiento='+procedimiento;
		
		if(urlEstado == 'pendientes'){
			return urlBandejaPendientes+'?'+cadena;
		}else if(urlEstado == 'estudio'){			
			return urlBandejaEstudio+'?'+
			cadena;
		}else{
			return '#';
		}
	}
		
	
	const procesarDatos = (data) => {
		
//		console.log(data);
		let theadHtml = "", tfootHtml = "";
		const procedimientos = Ad74aUtils.sortObject(data["procedimientos"]);
		const procLength = Object.keys(procedimientos).length - 3;
		
		
		// Cabecera y pie
		theadHtml = "<tr><th rowspan='2' style='border-right: 1px solid #cfcfcf;'>"
			+$.rup.i18n.app.cuadroMando.bandejas+"</th><th colspan='"+procLength
			+"' width='70%' style='border-bottom: 1px solid #cfcfcf;'>"+$.rup.i18n.app.cuadroMando.procedimientos+"</th>";
		theadHtml += "<tr class='secondary'>";
		
		tfootHtml = "<tr class='total'><th style='border-right: 1px solid #cfcfcf;'>"+$.rup.i18n.app.cuadroMando.total+"</th>";
		
		let cont = 1;
		$.each(Object.keys(procedimientos), (key, value) => {
			const procedimiento = procedimientos[value];
			if( value != X87_TEA_1 && value != X87_TEA_2 && value != X87_TEA_4) {		
				theadHtml += `<th width="${70/procLength}%"`;
				tfootHtml += "<th";
				if(cont < procLength){
					theadHtml += " style='border-right: 1px solid #cfcfcf;' ";
					tfootHtml += " style='border-right: 1px solid #cfcfcf;' ";
				}
				theadHtml += ">"+procedimiento.desc+"</th>";
				tfootHtml += ">"+procedimiento.total+"</th>";
				cont++;
			}					
		});
		
		theadHtml += "</tr>";
		tfootHtml += "</tr>";
		
		$(".bandejaMando .dataTables_empty").prop("colspan", procLength + 1);		
		$(".bandejaMando > thead").html(theadHtml);
		$("#bandejas > tfoot").html(tfootHtml);
		
		// Estados
		let tbodyHtml = "";
		const estados = data["estados"];
		
		$.each(estados, (idx, estado) => {	
			tbodyHtml += "<tr class='root_node'>";
			let textAux = idioma == locale_es ? estado["desces"] :estados["desceu"];
			tbodyHtml += "<td style='border-right: 1px solid #cfcfcf;' class='total'>"+  textAux  +"</td>";
			cont = 1;
			$.each(Ad74aUtils.sortObject(estado["totales"]), (procedimiento, total) => {
				let procedimientoX87 = '';
				if( estado.id == TRAMITACION) {
					if( procedimiento == ALTA){
						procedimientoX87 = X87_TEA_1;
					} else if( procedimiento == BAJA){
						procedimientoX87 = X87_TEA_2;
					} else if( procedimiento == REVISION_PRECIO){
						procedimientoX87 = X87_TEA_4;
					}
				}
				
				if( procedimiento != X87_TEA_1 && procedimiento != X87_TEA_2 && procedimiento != X87_TEA_4) {					
					if(cont < procLength){
						tbodyHtml += "<td style='border-right: 1px solid #cfcfcf;' class='center'>";
					}else{
						tbodyHtml += "<td class='center'>";
					}
					cont++;
					
					if(total == 0){
						tbodyHtml += "<span class='notSituation'>0</span>";
					}else{					
						let procAux = procedimiento;
						if(estado.id == TRAMITACION) {
							procAux = procedimientoX87;
						}
						const procedimientoParam  = '&idProcedimiento='+procAux;					
						let tecnicoParam = '';
						if( $("#tecnico_filter_table").rup_combo("getRupValue") != 0 ){
							tecnicoParam = "&tecnicoExpediente=" + $("#tecnico_filter_table").rup_combo("getRupValue") ;
						}
						
						let url = "";
						if(ESTADO_PEND_COMPLETAR == estado["id"]) {
							url = $.rup.CTX_PATH + "bandejaentradas/maint?estado="+ BANDEJA_EN_CURSO + "," + BANDEJA_PENDIENTE
								+ procedimientoParam + '&origen='+ IDTIPOENTRADA00_PAPEL0_VAL + '&tipo=' + TIPO_APORTACION_SOL + tecnicoParam;
						}else {
							url = $.rup.CTX_PATH + "expedientes/busquedaExpedientes?estado="+ estado["id"] + procedimientoParam + tecnicoParam;
						}
						tbodyHtml += "<a href='"+url+"' target='_blank'>"+total+"</a>";
						
					}					
					tbodyHtml += "</td>";						
				}
				
			});					
			
			tbodyHtml += "</tr>";
			
		});
		
		$(".bandejaMando > tbody").html(tbodyHtml);
		
	    $('.notSituation').rup_tooltip({
	        content: {
	            text: 'No hay expedientes para este estado'
	        }
	    });
	}
			
});