
//@ sourceURL=tabSolicitudAlta.js
/*!
 * 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($) {
	var tieneAsociados;

	initRupI18nPromise.then(function() {
		
		$("#tabPrestacionServicio_form_feedback").rup_feedback ({
		  type: "ok",
		  delay: 600,
		  fadeSpeed: 500,
		  block: false
		});

		initComponentes();
		initTable();
		
	});
		
	const initComponentes = () => {
		
		Ad74aUtils.hacerPlegable();
		
		/***************************/
		 /* VALIDADOR DE FORMULARIO */
		 /***************************/

		 const properties={
				feedback:$("#solicitud_form_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				delay: 500,
				fadeSpeed: 600,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
				ignore: [],
			  rules:{
			      "solicitantes.idiomaServicio01":{required:true}
			 }
		};
		$("#tabPrestacionServicio_form").rup_validate(properties);
		//$("#tabPrestacionServicio_form").data("validator").settings.ignore = "";
				
		const propertiesContactos={
				feedback:$("#contactos_detail_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
			  rules:{
			      "telefono103":{required:true}
			 }
		};
		$("#contactos_detail_form").rup_validate(propertiesContactos);
		
		// GUARDAR
	    $("#tabPrestacionServicio_guardar").on("click", function(){
	    	var radioSeleccionado = $("input[name='existeInstalacion00']:checked").val(); // Obtenemos el valor del radio button seleccionado (0 o 1)
	    	let mensaje;
	        // Convertimos los valores para comparar
	        var radioEsSI = (radioSeleccionado == 1); // true si es "SI", false si es "NO"
	        
	        if (radioEsSI && !tieneAsociados) {
	        	  mensaje = 	$.rup.i18n.app.dialog.label.instalacionNoAsociados;
	        }else if(!radioEsSI && tieneAsociados){
	        	  mensaje = 	$.rup.i18n.app.dialog.label.instalacionAsociados;
	        }
	        
	        if ((radioEsSI && !tieneAsociados) || (!radioEsSI && tieneAsociados)) {
	        	Ad74aUtils.openConfirmDialog(
						'dialogConfirm', 
						$.rup.i18n.app.dialog.title.instalacionNoCoincide, 
						mensaje,  
						[
				        	{
				                text: $.rup.i18n.app.botonera.cancelar,
				                click: function () { 
				                    $('#dialogConfirm').rup_dialog('close'); 
				                },
				                btnType: $.rup.dialog.LINK
				            },
					        {
					            text: $.rup.i18n.app.botonera.aceptar,
					            id: "btnEliminarContacto",
					            class: 'btn-material btn-material-primary-high-emphasis',
					            click: function () { 
					            	if($("#tabPrestacionServicio_form").valid()){
					    	    		Ad74aUtils.cerrarFeedbacks();
					    		    	let data = $("#tabPrestacionServicio_form").rup_form("formToJson");
					    		    	
					    		    	var msgErrorInicio = "<ul class='rup-maint_feedbackUL'><br/>";
					    		    	var msgErrorFin = '</ul>';
					    		    	var msgError = '';
					    		    	
					    		    	if(msgError == ''){
					    		    		$.rup_ajax({
					    			    		 type:  "PUT",
					    			   	         url: $.rup.CTX_PATH + 'expedientes/editTabPrestacionServicio',
					    			   	         data: JSON.stringify(data),
					    			   	         dataType: 'json',
					    			             contentType: 'application/json',
					    			             beforeSend: function(){
					    			            	Ad74aUtils.cerrarFeedbacks();
					    							Ad74aUtils.bloquearInterfaz();
					    						},
					    						
					    						success: function(res){
					    			   				$("#solicitud_form_feedback").rup_feedback('set',$.rup.i18n.app.feedback.modificadoOK,'ok');
					    			   				
					    						},
					    						error: function(error){
					    							$("#solicitud_form_feedback").rup_feedback('set',error.responseJSON.replaceAll("\"",""),"error");
					    						},
					    						complete: function(){
					    							Ad74aUtils.desBloquearInterfaz();
					    							$('#dialogConfirm').rup_dialog('close');
					    						}
					    				   	});
					    		    	}else{
					    		    		 $('#dialogConfirm').rup_dialog('close');
					    		    	}
			                        }else{
			                        	$('#dialogConfirm').rup_dialog('close');
			                        }
			                    }
			                }
			            ]
			        );
			    }else{
			    	Ad74aUtils.cerrarFeedbacks();
			    	if($("#tabPrestacionServicio_form").valid()){
	    		    	let data = $("#tabPrestacionServicio_form").rup_form("formToJson");
	    		    	
	    		    	if(data.solicitantes.idiomaServicio01 == undefined || data.solicitantes.idiomaServicio01 == null){
	    		    		data.solicitantes.idiomaServicio01 = 0;
                		}
	    		    	
	    		    	if(data.existeInstalacion00 == undefined || data.existeInstalacion00 == null){
	    		    		data.existeInstalacion00 = 0;
                		}	    		    
	    		    	console.log(data);
	    		    	console.log(JSON.stringify(data.solicitantes));
	    		    	
	    		    	var msgErrorInicio = "<ul class='rup-maint_feedbackUL'><br/>";
	    		    	var msgErrorFin = '</ul>';
	    		    	var msgError = '';
	    		    	
	    		    	if(msgError == ''){
	    		    		$.rup_ajax({
	    			    		 type:  "PUT",
	    			    		 url: $.rup.CTX_PATH + 'expedientes/editTabPrestacionServicio',
	    			   	         data: JSON.stringify(data),
	    			   	         dataType: 'json',
	    			             contentType: 'application/json',
	    			             beforeSend: function(){
	    			            	Ad74aUtils.cerrarFeedbacks();
	    							Ad74aUtils.bloquearInterfaz();
	    						},
	    						
	    						success: function(res){
	    			   				$("#solicitud_form_feedback").rup_feedback('set',$.rup.i18n.app.feedback.modificadoOK,'ok');
	    			   				
	    			   				Ad74aUtils.desBloquearInterfaz();
	    						},
	    						error: function(error){
	    							
	    							$("#solicitud_form_feedback").rup_feedback('set',error.responseJSON.replaceAll("\"",""),"error");
	    							 Ad74aUtils.desBloquearInterfaz();
	    						},
	    						complete: function(){
	    							 Ad74aUtils.desBloquearInterfaz();
	    							 $('#dialogConfirm').rup_dialog('close');
	    						}
	    				   	});
	    		    	}
                    }else{
                    	$('#dialogConfirm').rup_dialog('close');
                    }
			    }
			});
	        	
	        

	    	
	    
	    
	    $("#tipoIdentificador03_contactos_detail_table").rup_combo({
	    	rowStriping: true,
			ordered: true,
			blank: '',
			customClasses: ['select-material'],
			loadFromSelect:true,
			width: 'auto',
			height: 'auto'
		});
	    
	    // DIALOGO EDITAR CONTACTOS
	    let contacto_dialog = $("#contactos_detail_div");
	    let contacto_dialog_feedback = $("#contactos_detail_feedback");
	    
		try {
			contacto_dialog.rup_dialog("destroy");
		} catch (error) {}
		
		//Al volver a la misma pestaña, el dialog se queda inconsitente (Esta en memoria JS pero no en el HTML) Se comprueba y borra para que funcione correctamente el rup_dialog
		if($('div[aria-describedby=contactos_detail_div]').length == 1){
			$('div[aria-describedby=contactos_detail_div]').remove();
		}
		
		contacto_dialog = $("#contactos_detail_div");
		contacto_dialog_feedback = $("#contactos_detail_feedback");
		
		contacto_dialog_feedback.rup_feedback ({
			  type: "ok",
			  block: false,
		});	

		contacto_dialog.rup_dialog({
			type: $.rup.dialog.DIV,
			autoOpen: false,
			modal: true,
			closeOnEscape: true,
			resizable: true,
			//width:600,
			//height:600,
			dialogClass: 'custom_mid_dialog',
			title: $.rup.i18n.app.botonera.add,
			buttons : [ 
                {
                    text:$.rup.i18n.app.botonera.guardar,
                    id:"contacto_guardar_btn",
                    class: 'btn-material btn-material-primary-high-emphasis mdi mdi-content-save',
                    click:  () => {
                    	if($("#contactos_detail_form").valid()){
	                    	const contacto = $("#contactos").rup_table("getSelectedRows");
	                    	let data =  $('#contactos_detail_form').rup_form("formToJson");
	                    	
	                    	// Borrar los hidden generados con el <form:checkbox/>
	                    	delete data["_contactoInst03"];
	
	                		let url = $('#contactos_detail_form').attr("action") + "/";
	                		url += data["idContacto03"] != null && data["idContacto03"] != "" ? "editContactoExpediente" : "addContactoExpediente";
	                		let type = data["idContacto03"] != null && data["idContacto03"] != "" ? "PUT" : "POST";
	                		
	                		if(data.poseeLlaves03 == undefined || data.poseeLlaves03 == null){
	                			data.poseeLlaves03 = 0;
	                		}
	                		if(data.contactoInst03 == undefined || data.contactoInst03 == null){
	                			data.contactoInst03 = 0;
	                		}
	                		console.log(data);

	                		
	                    	$.rup_ajax({
	    			            url: url,
	                    	    type: type,
	    			            contentType: "application/json",
	    			            data: JSON.stringify(data),             	
	    			            success: function (data){    			            	
	    			            	$("#contactos").rup_table("reload");
	    			            	contacto_dialog.rup_dialog("close");
	    			            	Ad74aUtils.desBloquearInterfaz();
	    			            	$("#rup_feedback_contactos").rup_feedback('set', $.rup.i18n.app.feedback.operacionOK, "ok");
	    			            },
	    			            beforeSend: function(){
	    			            	Ad74aUtils.cerrarFeedbacks();
	    			            	Ad74aUtils.bloquearInterfaz();
	    						},
	    			            error:function(data){
	    			            	Ad74aUtils.desBloquearInterfaz();
	    					    	contacto_dialog_feedback.rup_feedback('set', data.responseText, "error");
	    			            }
	    			        });
                    	}
 					}
                },
				{
					text : $.rup.i18n.app.botonera.cancelar,
					click : () => {
						contacto_dialog.rup_dialog("close");
					},
					btnType : $.rup.dialog.LINK
				}
			],
			open: function(){
				const contacto = $("#contactos").rup_table("getSelectedRows"); 				
			},
			close: function(){
				$("#contactos_detail_form").rup_form("clearForm");
				contacto_dialog_feedback.rup_feedback("close");
				Ad74aUtils.hacerPlegable();
			}		    
		});
		
		$("input[name='_contactoInst03']").remove();
		
	}
	
	const initTable = () => {
		
		let contacto_dialog = $("#contactos_detail_div");
		let contacto_dialog_feedback = $("#contactos_detail_feedback");
		
		const getColumnsModel = function(){
			const getColumnModel = function (name, index, editable, hidden, orderable) {
				return {
					name: name,
					index: index,
					editable: editable,
					hidden: hidden,
					orderable: orderable
				}
			};
			let columnsModel = [];
			columnsModel.push(getColumnModel("idContacto03", "idContacto03", false, true, false));
			columnsModel.push(getColumnModel("orden03", "orden03", true, false));
			columnsModel.push(getColumnModel("tipoContacto03", "tipoContacto03", true, true));
			columnsModel.push(getColumnModel("parentesco03", "parentesco03", true, false));
			columnsModel.push(getColumnModel("nombre03", "nombre03", true, false));
			columnsModel.push(getColumnModel("apellido103", "apellido103", true, false));
			columnsModel.push(getColumnModel("apellido203", "apellido203", true, false));
			columnsModel.push(getColumnModel("sexo03", "sexo03", true, true));
			columnsModel.push(getColumnModel("poseeLlaves03", "poseeLlaves03", true, false));
			columnsModel.push(getColumnModel("tlfno03", "tlfno03", true, false));
			columnsModel.push(getColumnModel("contactoInst03", "contactoInst03", true, false));
			return columnsModel;
		};

		const getColumnsDefs = function () {
			return [ 
				{
					"targets": 2,
					"render": function ( data, type, row, meta ) {
						if(row.tipoContacto03 == tipoContacto03FisicaVal){
							return tipoContacto03FisicaDesc;
						}else if (row.tipoContacto03 == tipoContacto03JuridicaVal){
							return tipoContacto03JuridicaDesc;
						}else{
							return data;
						}
					}
				},
				{
					"targets": 7,
					"render": function ( data, type, row, meta ) {
						if(row.sexo03 == "1"){
							return sexo03HombreDesc;
						}else if (row.sexo03 == "2"){
							return sexo03MujerDesc;
						}else{
							return "";
						}
					}
				},
				{
					"targets": 8,
					"render": function ( data, type, row, meta ) {
						if(row.poseeLlaves03 == poseeLlaves03NOVal){
							return '<span class="mdi mdi-close"></span>'
						}else if (row.poseeLlaves03 == poseeLlaves03SIVal){
							return '<span class="mdi mdi-check"></span>'
						}else{
							return data;
						}
					}
				},
				{
					"targets": 10,
					"render": function ( data, type, row, meta ) {
						console.log(row);
						if(row.contactoInst03 == contactoInst03NOVal || row.contactoInst03 == null){
							return '<span class="mdi mdi-close"></span>'
						}else if (row.contactoInst03 == contactoInst03SIVal){
							return '<span class="mdi mdi-check"></span>'
						}else{
							return data;
						}
					}
				}
			];
		};
		
		const getCustomButtons = function () {
			let customButons = [];	
			
			const FN_editarBorrar = {};
			FN_editarBorrar.test  = function(){
				const selectedRows  = $("#contactos").rup_table("getSelectedRows");	
				// 1 seleccionado
				if ( selectedRows.length == undefined) {
					return true;
				}
				return false;
			};

		const FN_controlExisteInstalacion = function (){
				$.rup_ajax({
		              url: $.rup.CTX_PATH + "solicitantes/tieneAsociados/" + idSolicitante01,
		              type: "GET",            
		              dataType: 'json',
		              contentType: 'application/json',           
		              success: function (res){
						console.log("Esta es la respuesta " + res);
						tieneAsociados = res;
						var existeInstalacion = JSON.parse(expedientes).existeInstalacion00;
						console.log(existeInstalacion);
						if(res == true){
							$('#resultadoTieneAsociados').html("Existen asociados para este solicitante");
							$("#resultadoTieneAsociados").css("color", "green");
							$("#recuadroResultadoTieneAsociados" ).removeClass("nook");
							$("#recuadroResultadoTieneAsociados").addClass("aviso_interoperabilidad");
							$("#recuadroResultadoTieneAsociados").css("border-radius: 3px");
							if (existeInstalacion === null) {
		             	        $("#SI_existeInstalacion00_tabDatosBeneficiarios_detail_table").prop("checked", true);
							}
						}else{
							$('#resultadoTieneAsociados').html("No existen asociados para este solicitante");
							$("#resultadoTieneAsociados").css("color", "red");
							$( "#recuadroResultadoTieneAsociados" ).removeClass("ok");
							$("#recuadroResultadoTieneAsociados").addClass("aviso_interoperabilidad");
							$("#recuadroResultadoTieneAsociados").css("border-radius: 3px");
							if (existeInstalacion === null) {
								$("#NO_existeInstalacion00_tabDatosBeneficiarios_detail_table").prop("checked", true);
							}
						}
						
						
		             	if (existeInstalacion !== null) {
		             	    if (existeInstalacion === 0) {
		             	        $("#NO_existeInstalacion00_tabDatosBeneficiarios_detail_table").prop("checked", true);
		             	    } else if (existeInstalacion === 1) {
		             	        $("#SI_existeInstalacion00_tabDatosBeneficiarios_detail_table").prop("checked", true);
		             	    }
		              }
		              
		        }
				
			});
		};
			FN_controlExisteInstalacion();
			const anadirButton = {
					text: function () {
						return $.rup.i18n.app.botonera.add;
					},
					id: 'anadirContacto', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-plus",
					displayRegex: /^\d+$/,
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						contacto_dialog.rup_dialog("open");
						const divTitleDialog = $("div[aria-describedby='contactos_detail_div'] .ui-dialog-title");
						divTitleDialog.html('<i>'+$.rup.i18n.app.contactos.anadir+'</i>');
						$("#idContacto03_contactos_detail_table").val("");
						$("#idExpediente03_contactos_detail_table").val(idExpediente00);
						$("#idSolicitante03_contactos_detail_table").val(idSolicitante01);
						contacto_dialog_feedback.rup_feedback("close");
					}				
			};	
			customButons.push(anadirButton);
			
			const eliminarButton = {
					text: function () {
						return $.rup.i18n.app.botonera.eliminar;
					},
					id: 'eliminarContacto', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-delete",
					displayRegex: FN_editarBorrar,			
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						Ad74aUtils.openConfirmDialog(
							'dialogConfirm', 
							$.rup.i18n.app.dialog.title.borrarContacto, 
							$.rup.i18n.app.dialog.label.borrarContacto,  
							[
					        	{
					                text: $.rup.i18n.app.botonera.cancelar,
					                click: function () { 
					                    $('#dialogConfirm').rup_dialog('close'); 
					                },
					                btnType: $.rup.dialog.LINK
					            },
						        {
						            text: $.rup.i18n.app.botonera.aceptar,
						            id: "btnEliminarContacto",
						            class: 'btn-material btn-material-primary-high-emphasis',
						            click: function () { 
						            	
						            	$.rup_ajax({
								              url: $.rup.CTX_PATH +"contactos/"+ $('#contactos').rup_table('getSelectedRows')['idContacto03'],
								              type: "DELETE",            
								              dataType: 'json',
								              contentType: 'application/json',
								              beforeSend: function() {
								            	  Ad74aUtils.bloquearInterfaz();
								              },
								              complete: function() {
								            	  Ad74aUtils.desBloquearInterfaz();
								            	  $('#dialogConfirm').rup_dialog('close');
								              },
								              success: function (data){
								              	  $('#rup_feedback_contactos').rup_feedback("option", "delay", null);
								              	  $('#rup_feedback_contactos').rup_feedback("set", $.rup.i18n.app.feedback.eliminadoOk, "ok");
								              	  $('#contactos').rup_table("reload");
								              },
								              error: function(error){ 
												console.log(error)
								                $("#rup_feedback_contactos").rup_feedback('set',error,"error");
								              }
								        });
						            }
						        }
					        ]
						);			
					}		
			};
			customButons.push(eliminarButton);
			
			const verDetalleButton = {
					text: function () {
						return $.rup.i18n.app.botonera.verEdit;
					},
					id: 'editarContacto', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-playlist-edit",
					displayRegex: FN_editarBorrar,	
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						$.rup_ajax({
				              url: $.rup.CTX_PATH +"contactos/"+ $('#contactos').rup_table('getSelectedRows')['idContacto03'],
				              type: "GET",            
				              dataType: 'json',
				              contentType: 'application/json',
				              beforeSend: function() {
				            	  Ad74aUtils.bloquearInterfaz();
				              },
				              complete: function() {
				            	  Ad74aUtils.desBloquearInterfaz();
				              },
				              success: function (data){
				              	 contacto_dialog.rup_dialog("open");
				              	 const divTitleDialog = $("div[aria-describedby='contactos_detail_div'] .ui-dialog-title");
								 divTitleDialog.html('<i>'+$.rup.i18n.app.contactos.editar+'</i>');
				              	 $.rup_utils.populateForm($.rup_utils.jsontoarray(data), "#contactos_detail_form");	
				              },
				              error: function(error){ 
				                  console.log(error)
					                $("#tabPrestacionServicio_form_feedback").rup_feedback('set',error,"error");
				              }
				        });
					}		
			};
			customButons.push(verDetalleButton);

			return customButons;
		};

		$("#contactos").rup_table({
			colReorder: {
				fixedColumnsLeft: 1
			},
			colModel: getColumnsModel(),
			columnDefs: getColumnsDefs(),
			primaryKey: "idContacto03",
			filter: "noFilter",
	     	createTooltipBody: false,// No muestra el tooltip automático de las columnas de la tabla
	   		select: {
	       		activate: true,
	       		multiSelect:false,
	       		deleteDoubleClick:true
	   		},
			buttons: {
				activate: true,
				blackListButtons: ['reportsButton', 'addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton'],
				myButtons: getCustomButtons()
			},
			columnOrderArrows: {
			    showOnlyActive: false,
			    display: 'inline'
			},
			order: [[1, "asc"]]
		});
		
	}
});