//@ sourceURL=tabPrestacionServicio.js 
jQuery(function($){

	
	initRupI18nPromise.then(function() {

		$("#tabPrestacionServicio_form_feedback").rup_feedback ({
		  type: "ok",
		  delay: 600,
		  fadeSpeed: 500,
		  block: false
		});
		
		initComponentes();
		initTable();
		initControDeEstado();
	});
		
	const initControDeEstado = () => {
			
			if(isSoloLecturaSolicitud){
	
				$("input").prop('disabled', true);
				$("#tabPrestacionServicio_guardar").hide();
			}
		}
	
	const initComponentes = () => {
	
		Ad74aUtils.hacerPlegable();
		
		/***************************/
		 /* VALIDADOR DE FORMULARIO */
		 /***************************/

		 var properties={
				feedback:$("#tabPrestacionServicio_form_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
			  rules:{
			      "solicitantes.idiomaServicio01":{required:true}
			 }
		};
		$("#tabPrestacionServicio_form").rup_validate(properties);
		
		var propertiesContactos={
				feedback:$("#contactos_detail_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
			  rules:{
			      "telefono103":{required:true},
			      "fAltaTeleasistencia01":{date:true},
			      "fInicio01":{date:true},
			      "fBaja01":{date:true}
			 }
		};
		$("#contactos_detail_form").rup_validate(propertiesContactos);
		
		$("#tabPrestacionServicio_form [ruptype='date']").blur(function(elem) { 

			if(!$(elem.target).valid()){
                $(elem.target).val('')
            }

		})
		
		// GUARDAR
	    $("#tabPrestacionServicio_guardar").on("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){
							actualizarCabecera();
			   				$("#tabPrestacionServicio_form_feedback").rup_feedback('set',$.rup.i18n.app.feedback.modificadoOK,'ok');
			   			},
						error: function(error){
							$("#tabPrestacionServicio_form_feedback").rup_feedback('set',error.responseJSON.replaceAll("\"",""),"error");
						},
						complete: function(){
							Ad74aUtils.desBloquearInterfaz();
						}
				   	});
		    	}else{
					$("#tabPrestacionServicio_form_feedback").rup_feedback('set',msgErrorInicio+msgError+msgErrorFin,"error");
		    	}
	    	}
	    });
	    
	    $("#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";
	                		
	                    	$.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_contacto").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();
			}		    
		});
		
	}

	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 ) {
						if(row.contactoInst03 == contactoInst03NOVal){
							return '<span class="mdi mdi-close"></span>'
						}else if (row.contactoInst03 == contactoInst03SIVal){
							return '<span class="mdi mdi-check"></span>'
						}else{
							return data;
						}
					}
				}
			];
		};
		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 = expedienteJSON.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 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 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){ 
								                  alert("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){ 
				                  alert("error")
				              }
				        });
					}		
			};
			customButons.push(verDetalleButton);

			return customButons;
		};
		let configTable = {
				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
		   		},
				
				columnOrderArrows: {
				    showOnlyActive: false,
				    display: 'inline'
				},
				order: [[1, "asc"]]
			}
		
		
		if(isSoloLecturaSolicitud){
			configTable.noEdit =  true;
		}else{
			configTable.buttons = {
					activate: true,
					blackListButtons: ['reportsButton', 'addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton'],
					myButtons: getCustomButtons()
				};
		}
		
		
		
		$("#contactos").rup_table(configTable);
	}
});