/*!
 * 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($) {
	
	let loadingDiv = '';
	
	initRupI18nPromise.then(function () {
		
		//Mensaje de carga mientras la pestaña esta vacía de html
		loadingDiv = `<div class="row">
				<div class="col col-sm text-center">
				<div class="col col-sm text-center processing-container">
				<span class="loading">${$.rup.i18n.base.rup_blockUI.cargando}</span>
			</div>
		</div>`;
		initTabs();
		initDialogs();
		initComponents();
						
	});
	
	let tabs = [
		{
			i18nCaption: "solicitud",
			url: $.rup.CTX_PATH + "bandejapapel0/tabSolicitud/" + idExpediente00
		},
//		{
//			i18nCaption: "prestacionServicio",
//			url: $.rup.CTX_PATH + "bandejapapel0/tabPrestacionServicio/" + idExpediente00
//		},
//		{
//			i18nCaption: "informeSocial",
//			url: $.rup.CTX_PATH + "bandejapapel0/tabInformeSocial/" + idExpediente00
//		},
//		{
//			i18nCaption: "documentos",
//			url: $.rup.CTX_PATH + "bandejapapel0/tabDocumentos/" + idExpediente00
//		}
	];
	
	if(PROCEDIMIENTOS_ALTA_VAL.includes(idProcedimiento00)) {
		tabs.push(
			{
				i18nCaption: "prestacionServicio",
				url: $.rup.CTX_PATH + "bandejapapel0/tabPrestacionServicio/" + idExpediente00
			}
		);
	}
	
	// Tab de documentos
	tabs.push(
		{
			i18nCaption: "documentos",
			url: $.rup.CTX_PATH + "bandejapapel0/tabDocumentos/" + idExpediente00
		}	
	);
	
	
	const initTabs = () => {
		
		console.log("INIT TABS");
		$('#tabsSolicitudPapel0').rup_tabs({
			create: function (e, ui) {
				ui.panel.append(loadingDiv);
			},
			load: function (e, ui) {					
					Ad74aUtils.desBloquearInterfaz();
					$(ui.panel).find(".tab-loading").remove();					
					$(ui.panel).data("loaded", true);					
					ui.tab.data( "loaded", true );												
			},
			select: function (e, ui) {
				if (ui.newPanel.is(":empty")) {					
					Ad74aUtils.bloquearInterfaz();
					ui.newPanel.append(loadingDiv);
					
					//Creamos una llamada para que recupere los datos del expediente 
					
					
					$.rup_ajax({
						type:  "GET",
						url: $.rup.CTX_PATH + 'expedientes/' +  $('#idExpediente00TabSolicitud').val(),
						contentType: 'application/json',
						beforeSend: function(){
							//Ad74aUtils.cerrarFeedbacks();
							Ad74aUtils.bloquearInterfaz();
						},
						success: function(res){
							expedientes = res;
						},
						error: function(error){
							console.log("entro en error" + JSON.stringify(error));
							$("#tabSolicitud_form_feedback").rup_feedback('set',error.responseText.replaceAll("\"",""),"error");
						},
						complete: function(){
							//Ad74aUtils.desBloquearInterfaz();
							//Comentada se espera que se llame al terminar que se cargue la pantalla
						}
					});		 
				} else {					
					Ad74aUtils.desBloquearInterfaz();
				}
				
				//actualizarCabecera();

			},
			tabs: tabs
		});
		
		$( "#tabsSolicitudPapel0" ).on( "tabsbeforeload", function( e, ui ) {
			if($(ui.panel).data("loaded")) {
				e.preventDefault();
			}
		} );

		
	}
	
	const initComponents = () => {
		
		
		$("#solicitud_form_feedback").rup_feedback ({
			  type: "ok",
			  delay: 3000,
			  fadeSpeed: 500,
			  block: false
		});
		

		const buttons = [
			{
				text: function () {
					return $.rup.i18n.app.botonera.finalizar;
				},
				id: 'finalizarSolicitud', // Campo obligatorio si se quiere usar desde el contextMenu
				css: "mdi mdi-check-bold",
				click : function(e, dt, node, config) {	
					
					let finalizar = $("#tabSolicitud_form").valid();
										
					// Si es de alta tener en cuenta que el número de cuenta no tiene pq ser válido para guardarlo
					if(PROCEDIMIENTOS_ALTA_VAL.includes(idProcedimiento00)) {
						let filtered = false;	
						const validator = $("#tabSolicitud_form").validate();
						const errorList = validator.errorList;
						try{
							
							filtered =  errorList.find((el) => {
								return el.method == 'numCuentaCorrecto';
							});
						}catch(err){}
									
						if(errorList.length == 0 || (errorList.length == 1 && filtered)){
							finalizar = true;
						}
					}
					
					if(finalizar){
						Ad74aUtils.openConfirmDialog(
							'dialogConfirm', 
							$.rup.i18n.app.dialog.title.finalizarSolicitud, 
							$.rup.i18n.app.dialog.label.finalizarSolicitud,   
							[
					        	{
					                text: $.rup.i18n.app.botonera.cancelar,
					                click: function () { 
					                    $('#dialogConfirm').rup_dialog('close'); 
					                },
					                btnType: $.rup.dialog.LINK
					                
					            },
						        {
						            text: $.rup.i18n.app.botonera.aceptar,
						            id: "btnFinizar",
						            click: function () { 
						            	finalizarSolicitud();
						            },
						            class: 'btn-material btn-material-primary-high-emphasis'
						            
						        },
					        ],
					        'custom_small_dialog'
						);
					}
				}
			}
		];
		
		$("#solicitud_toolbar").rup_toolbar({buttons});
	}
	
	const initDialogs = () => {
		
//		$('#dialogFinalizar').rup_dialog({
//	        type: $.rup.dialog.DIV,
//	        autoOpen: false,
//	        modal: true,
//	        resizable: false,
//	        title: $.rup.i18n.app.dialog.title.finalizarSolicitud,	    
//	        height: 150,
//			dialogClass: 'custom_small_dialog',
//	        buttons: [
//	        	{
//	                text: $.rup.i18n.app.botonera.cancelar,
//	                click: function () { 
//	                    $('#dialogFinalizar').rup_dialog('close'); 
//	                },
//	                btnType: $.rup.dialog.LINK
//	                
//	            },
//		        {
//		            text: $.rup.i18n.app.botonera.aceptar,
//		            id: "btnFinizar",
//		            click: function () { 
//		            	finalizarSolicitud();
//		            },
//		            class: 'btn-material btn-material-primary-high-emphasis'
//		            
//		        },
//	        ],
//	    });	

		
	}
	const guardarTabSolicitud = () => {
		
		Ad74aUtils.cerrarFeedbacks();
    	$("#tabSolicitud_form").rup_validate("resetElements");
    	let data = {};
    	data = $("#tabSolicitud_form").rup_form("formToJson");

		$.rup_ajax({
    		 type:  "PUT",
   	         url: $.rup.CTX_PATH + 'bandejapapel0/tabSolicitud/edit',
   	         data: JSON.stringify(data),
             contentType: 'application/json',
             beforeSend: function(){
            	Ad74aUtils.cerrarFeedbacks();
				Ad74aUtils.bloquearInterfaz();
			},
			success: function(res){
				console.log("entro en success");
				$("#tabSolicitud_form_feedback").rup_feedback('set',$.rup.i18n.app.feedback.modificadoOK,'ok');
				},
				error: function(error){
					console.log("entro en error" + JSON.stringify(error));
					$("#tabSolicitud_form_feedback").rup_feedback('set',error.responseText.replaceAll("\"",""),"error");
				},
				complete: function(){
					Ad74aUtils.desBloquearInterfaz();
				}
   	    });		 
	}
	const finalizarSolicitud = () => {
		Ad74aUtils.cerrarFeedbacks();
    	//$("#tabSolicitud_form").rup_validate("resetElements");		
			let data = {};
			let searchParams = new URLSearchParams(window.location.search);
			$('#idEntrada12').val(searchParams.get('idEntrada'));
			data.expediente = $("#tabSolicitud_form").rup_form("formToJson");
			
//			// Si es de alta metemos los datos de la pestaña de prestador del servicio
//			if(PROCEDIMIENTOS_ALTA_VAL.includes(idProcedimiento00)) {
//				if($("[name='solicitantes.idiomaServicio01']:checked").val() != 0 && $("[name='solicitantes.idiomaServicio01']:checked").val() != 1){				
//					data.expediente.solicitantes.idiomaServicio01 = 0; 
//				}else {
//					data.expediente.solicitantes.idiomaServicio01 = $("[name='solicitantes.idiomaServicio01']:checked").val();
//				}
//				if($("[name='existeInstalacion00']:checked").val() != 0 && $("[name='existeInstalacion00']:checked").val() != 1){				
//					data.expediente.existeInstalacion00 = 0; 
//				}else {
//					data.expediente.existeInstalacion00 = $("[name='existeInstalacion00']:checked").val();
//				}
//			}
			
			data.finalizar = true;
			//data = $("#tabSolicitud_form").rup_form("formToJson");
			
			console.log("FINALIZAR");
			console.log(data);
			$.rup_ajax({
				type:  "PUT",
				url: $.rup.CTX_PATH + 'bandejapapel0/tabSolicitud/edit',
				data: JSON.stringify(data),
				contentType: 'application/json',
				beforeSend: function(){
					Ad74aUtils.cerrarFeedbacks();
					Ad74aUtils.bloquearInterfaz();
				},
				success: function(res){
					console.log("solicitud se completo ok, esta es la res --> " + res);
					Ad74aUtils.desBloquearInterfaz();
					$('#dialogConfirm').rup_dialog('close');
					//Como Depende de una llamada a platea se va a pasar a llamar al cuadro de mando,
					//Asi no tenemos problemas de sincronizacion
					//window.location.href = $.rup.CTX_PATH + 'expedientes/detail/' + respuesta.idExpediente00;
					window.location.href = $.rup.CTX_PATH + 'bandejas/cuadromando';
					
					
				},
				error: function(error){
					console.log("entro en error" + JSON.stringify(error));
					$('#solicitud_form_feedback').rup_feedback("option", "delay", null);
					$("#solicitud_form_feedback").rup_feedback('set',error.responseText.replaceAll("\"",""),"error");
					$('#dialogConfirm').rup_dialog('close');
					
				},
				complete: function(){
					Ad74aUtils.desBloquearInterfaz();
				}
			});
		}
	

});
