//@ sourceURL=tabPersonasContacto.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($) {
	

	initRupI18nPromise.then(function() {
		
	
		
		initTabla();
		initComponentes();
		initControDeEstado();
		

	});
		
		
	function initTabla(){
		
		var propertiesContactos={
				feedback:$("#contactoSolicitante_detail_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
			  rules:{
			      "telefono103":{required:true}
			 }
		};
		$("#contactoSolicitante_detail_form").rup_validate(propertiesContactos);
		
		$("#tipoIdentificador03_detail_contactossolicitante_table").rup_combo({
	    	rowStriping: true,
			ordered: true,
			blank: '',
			customClasses: ['select-material'],
			loadFromSelect:true,
			width: 'auto',
			height: 'auto'
		});
		
		let contacto_dialog = $("#contactoSolicitante_detail_div");
		let contacto_dialog_feedback = $("#contactoSolicitante_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=contactoSolicitante_detail_div]').length == 1){
			$('div[aria-describedby=contactoSolicitante_detail_div]').remove();
		}
		
		contacto_dialog = $("#contactoSolicitante_detail_div");
		contacto_dialog_feedback = $("#contactoSolicitante_detail_feedback");
		
		contacto_dialog_feedback.rup_feedback ({
			  type: "ok",
			  block: false,
		});	
		
		$("input[name='_contactoInst03']").remove();
		
		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:"contactoSolicitante_guardar_btn",
                    class: 'btn-material btn-material-primary-high-emphasis mdi mdi-content-save',
                    click:  () => {
                    	if($("#contactoSolicitante_detail_form").valid()){
	                    	const contacto = $("#contactoSolicitante").rup_table("getSelectedRows");
	                    	let data =  $('#contactoSolicitante_detail_form').rup_form("formToJson");
	                    	
	                    	// Borrar los hidden generados con el <form:checkbox/>
	                    	delete data["_contactoInst03"];
	
	                		let url = $('#contactoSolicitante_detail_form').attr("action") + "/";
	                		url += data["idContacto03"] != null && data["idContacto03"] != "" ? "edit" : "add";
	                		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){    			            	
	    			            	$("#contactoSolicitante").rup_table("reload");
	    			            	contacto_dialog.rup_dialog("close");
	    			            	Ad74aUtils.desBloquearInterfaz();
	    			            	$("#rup_feedback_contactoSolicitante").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 = $("#contactoSolicitante").rup_table("getSelectedRows");  
				
				// Deshabilitar  campos si no se es Admin
				if(!isAdmin){
					$("#contactoSolicitante_detail_form input").attr("disabled", "disabled");
					$("#tipoIdentificador03_detail_contactossolicitante_table").rup_combo("disable");
					$("#contactoSolicitante_guardar_btn").remove();
				}
			},
			close: function(){
				$("#contactoSolicitante_detail_form").rup_form("clearForm");
				$("#contactoSolicitante_detail_form").rup_validate("resetElements");
				contacto_dialog_feedback.rup_feedback("close");
				Ad74aUtils.hacerPlegable();
			}		    
		});
		
		let tableColModels = [			
				{ 	name: "idContacto03",
					index: "idContacto03",
					editable: false, 
					hidden: true
				},
				{ 	name: "orden03",
					index: "orden03",
					editable: false, 
					hidden: false
				},
				{ 	name: "parentesco03",
					index: "parentesco03",
					editable: true, 
					hidden: false
				},
				{ 	name: "nombre03",
					index: "nombre03",
					editable: true, 
					hidden: false
				},
				{ 	name: "apellido103",
					index: "apellido103",
					editable: true, 
					hidden: false
				},
				{ 	name: "apellido203",
					index: "apellido203",
					editable: true, 
					hidden: false
				},
				{ 	name: "sexo03",
					index: "sexo03",
					editable: true, 
					hidden: false
				},
				{ 	name: "poseeLlaves03",
					index: "poseeLlaves03",
					editable: true, 
					hidden: false
				},
				{ 	name: "tlfno03",
					index: "tlfno03",
					editable: true, 
					hidden: false
				},
				{ 	name: "contactoInst03",
					index: "contactoInst03",
					editable: true, 
					hidden: false
				}
				];

		let columnDefs = [ 
			{
				"targets": 0,
				"render": function ( data, type, row, meta ) {
					
					return meta.row + 1 ;
					
				}
			},{
				"targets": 6,
				"render": function ( data, type, row, meta ) {
					if(sexo03HombreVal == data){
						return sexo03HombreDesc;
					}else if(sexo03MujerVal == data){
						return sexo03MujerDesc;
					} else{
						return '';
					} 
					
				}
			},{
				"targets": 7,
				"render": function ( data, type, row, meta ) {
					if(poseeLlaves03SIVal == data){
						return poseeLlaves03SIDesc;
					}else if(poseeLlaves03NOVal == data){
						return poseeLlaves03NODesc;
					} else{
						return '';
					} 
					
				}
			},{
				"targets": 9,
				"render": function ( data, type, row, meta ) {
					if(contactoInst03SIVal == data){
						return contactoInst03SIDesc;
					}else if(contactoInst03NOVal == data){
						return contactoInst03NODesc;
					} else{
						return '';
					} 
					
				}
			}
			
		];

		const getCustomButtons = function () {
			let customButons = [];	
			
			const FN_editarBorrar = {};
			FN_editarBorrar.test  = function(){
				const selectedRows  = $("#contactoSolicitante").rup_table("getSelectedRows");	
				// 1 seleccionado
				if ( selectedRows.length == undefined && !esBajaSolicitante) {
					return true;
				}
				return false;
			};
			const FN_anadir = {};
			FN_anadir.test = function(){
				if(esBajaSolicitante){
					return false;
				}
				return true;
				
			}
			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: FN_anadir,
					insideContextMenu: true, 
					//type: 'view',
					action: function (e, dt) {
						contacto_dialog.rup_dialog("open");
						const divTitleDialog = $("div[aria-describedby='contactoSolicitante_detail_div'] .ui-dialog-title");
						divTitleDialog.html('<i>'+$.rup.i18n.app.contactos.anadir+'</i>');
						$("#idContacto03_contactos_detail_table").val("");
						contacto_dialog_feedback.rup_feedback("close");
					}				
			};	
			
			if(isAdmin){
				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/"+ $('#contactoSolicitante').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_contactoSolicitante').rup_feedback("option", "delay", null);
								              	  $('#rup_feedback_contactoSolicitante').rup_feedback("set", $.rup.i18n.app.feedback.eliminadoOk, "ok");
								              	  $('#contactoSolicitante').rup_table("reload");
								              },
								              error: function(error){ 
								                  alert("error")
								              }
								        });
						            }
						        }
					        ]
						);			
					}		
			};
			
			if(isAdmin){
				customButons.push(eliminarButton);
			}			
			
			const editarButton = {
					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/"+ $('#contactoSolicitante').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='contactoSolicitante_detail_div'] .ui-dialog-title");
								 divTitleDialog.html('<i>'+$.rup.i18n.app.contactos.editar+'</i>');
				              	 $.rup_utils.populateForm($.rup_utils.jsontoarray(data), "#contactoSolicitante_detail_form");	
				              },
				              error: function(error){ 
				                  alert("error")
				              }
				        });
					}		
			};
			customButons.push(editarButton);

			return customButons;
		};
		
		
		let config = {
				colReorder: {
					 fixedColumnsLeft: 1
					}
					,colModel: tableColModels
					,columnDefs : columnDefs
					,primaryKey: "idContacto03"
					,filter:{
			  	  		id:"contactoSolicitante_filter_form",
			  	  		filterToolbar:"contactoSolicitante_filter_toolbar",
			  	  		collapsableLayerId:"contactoSolicitante_filter_fieldset",
			  	  		showHidden: true
			     	}
		       		,select: {
		           		activate: true
		       		}
		    		,seeker: {
		    			activate: true
					},
					columnOrderArrows: {
					    showOnlyActive: false,
					    display: 'inline'
					}
					,order: [[1, "asc"]]
				}
		if(!isAdmin){
			config.buttons =  {
					activate: true,
					blackListButtons: ['reportsButton', 'addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton'],
					myButtons: getCustomButtons()
				}
		}else{
			config.buttons =  {
					activate: true,
					blackListButtons: ['reportsButton', 'addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton'],
					myButtons: getCustomButtons()
				}
		}
		
		
		$("#contactoSolicitante").rup_table(config);
		// EVENTO AL MOSTRAR EL DIALOGO DE EDITAR DESPUES DE CARGAR LOS DATOS DESDE EL CONTROLLER
		$("#contactoSolicitante").on(
				"tableEditFormAddEditBeforeShowForm",
				function(ctx) {
					controlCamposDireccionDetalle();
					
					
				});
	}

	function initControDeEstado(){
		
		//Administrador y Técnico de la DSS PUEDEN EDITAR
		
	}
	
	function initComponentes(){
		 /******************/
		 /* LLAMADAS UTILS */
		 /******************/
		
		Ad74aUtils.hacerPlegable();
		

		 /***********************/
		 /* CAMPOS DE DIRECCION */ 
		 /***********************/
		//Combos de dirección
		//PROVINCIA
		if($("#idprovincia06_detail_contactossolicitante_table").length == 1){			
			$("#idprovincia06_detail_contactossolicitante_table").rup_combo({
				source:  $.rup.CTX_PATH + 'nora/provincias',
				sourceParam: {label: "descProvincia", value:"codProvincia"},
				rowStriping: true,
				width: 'auto',
				blank: '',
				customClasses: ['select-material'],
				change: function(){
					var sourcePath = $.rup.CTX_PATH + 'combo/pisosTutelados?idProvincia06=' + $("#idprovincia06_detail_contactossolicitante_table").val() + '&idMunicipio06=' + $("#idmunicipio06_detail_contactossolicitante_table").val();
	    			$("#pisosTutelados_tabDatosBeneficiarios_detail_contactossolicitante_table").rup_combo("setSource",sourcePath);
				},
				selected: (function(){ try { return $("#idprovincia06_detail_contactossolicitante_table").val()} catch { return null}})()
			});
		}
		if($("#idmunicipio06_detail_contactossolicitante_table").length == 1){
			//MUNICIPIO
			$("#idmunicipio06_detail_contactossolicitante_table").rup_combo({
				parent: ["idprovincia06_detail_contactossolicitante_table"],			
				source: $.rup.CTX_PATH + 'nora/municipioEnlazado?cp06='+$("#cp06_detail_contactossolicitante_table").val(),
				sourceParam: {label: "descripcion", value:"codMunicipio"},
				rowStriping: true,
				width: 'auto',
				blank: '',
				customClasses: ['select-material'],
				change: function(){
					var sourcePath = $.rup.CTX_PATH + 'combo/pisosTutelados?idProvincia06=' + $("#idprovincia06_detail_contactossolicitante_table").val() + '&idMunicipio06=' + $("#idmunicipio06_detail_contactossolicitante_table").val();
	    			$("#pisosTutelados_tabDatosBeneficiarios_detail_contactossolicitante_table").rup_combo("setSource",sourcePath);
				},
				selected: (function(){ try { return $("#idmunicipio06_detail_contactossolicitante_table").val()} catch { return null}})()
			});
		}
		if($("#idlocalidad06_detail_contactossolicitante_table").length == 1){
			//LOCALIDAD
			$("#idlocalidad06_detail_contactossolicitante_table").rup_combo({
				parent: ["idprovincia06_detail_contactossolicitante_table", "idmunicipio06_detail_contactossolicitante_table"],			
				source: $.rup.CTX_PATH + 'nora/localidadEnlazado?cp06='+$("#cp06_detail_contactossolicitante_table").val(),
				sourceParam: {label: "descripcion", value:"codLocalidad"},
				rowStriping: true,
				width: 'auto',
				blank: '',
				customClasses: ['select-material'],
				change: function(){
					//refrescar pisostutelados
				},
				selected: (function(){ try { return s$("#idlocalidad06_detail_contactossolicitante_table").val() } catch { return null}})() 
			});
		}
		if($("#idcalle06_detail_contactossolicitante_table").length == 1){
			//CALLE	
			$("#idcalle06_detail_contactossolicitante_table").rup_combo({
				parent: ["idlocalidad06_detail_contactossolicitante_table"],
				source:  $.rup.CTX_PATH + 'nora/calleEnlazado?cp06='+$("#cp06_detail_contactossolicitante_table").val(),
				sourceParam: {label: "descripcion", value:"idCalle"},
				rowStriping: true,
				width: 'auto',
				blank: '',
				customClasses: ['select-material'],
				change: function(){
					//refrescar pisostutelados
					if($("#idcalle06_detail_contactossolicitante_table").val() == ''){
						$("#calleDesc").show();
						$("#portalDesc").show();						
					}else{
						$("#calleDesc").hide();
					}
					if($("#cp06_detail_contactossolicitante_table").val()=='' && $("#idcalle06_detail_contactossolicitante_table").val() != ''){
						const ajaxData = {
								'url': $.rup.CTX_PATH + 'nora/conseguirCP?portal='+ $("#idportal06_tabSolicitud_detail_table").val() ,
								'type': 'GET',
								'contentType': 'application/json',
								'dataType': 'json',
								success: function (res) {
									$("#cp06_detail_contactossolicitante_table").val(res);
								},
								error: function (error) {
									$("#iniciosOficio_feedback").rup_feedback('set', error.responseText, "error");	
								}
							};
							
						$.rup_ajax(ajaxData);
					}
				},
				selected: (function(){ try { return $("#idcalle06_detail_contactossolicitante_table").val() } catch { return null}})()
			});
		}
		if($("#idportal06_detail_contactossolicitante_table").length == 1){
			$("#idportal06_detail_contactossolicitante_table").rup_combo({
				parent: ["idlocalidad06_detail_contactossolicitante_table", "idcalle06_detail_contactossolicitante_table"],
				source:  $.rup.CTX_PATH + 'nora/portalEnlazado',
				sourceParam: {label: (($.rup_utils.capitalizedLang() == ("Es")) ? "portalCompletoEs" : "portalCompletoEu" ), value:"codPortal"},
				rowStriping: true,
				width: 'auto',
				blank: '',
				customClasses: ['select-material'],
				change: function() {			
					if($("#idportal06_detail_contactossolicitante_table").val() == ''){
						$("#portalDesc").show();
					}else{
						$("#portalDesc").hide();
					}
					if($("#cp06_detail_contactossolicitante_table").val()=='' && $("#idportal06_detail_contactossolicitante_table") != ''){
						const ajaxData = {
								'url': $.rup.CTX_PATH + 'nora/conseguirCP?portal='+ $("#idportal06_detail_contactossolicitante_table").val() ,
								'type': 'GET',
								'contentType': 'application/json',
								'dataType': 'json',
								success: function (res) {
									$("#cp06_detail_contactossolicitante_table").val(res);
								},
								error: function (error) {
									$("#iniciosOficio_feedback").rup_feedback('set', error.responseText, "error");	
								}
							};
							
						$.rup_ajax(ajaxData);
					}
				},
				selected: (function(){ try { return $("#idportal06_detail_contactossolicitante_table").val() } catch { return null}})()
			});
		}


	}
	
	
});

/***************************************/
/* CONTROL CAMPOS DE DIRECCION DETALLE */ 
/***************************************/

function controlCamposDireccionDetalle(){
	
	if( ''  != $("#provincia06_detail_contactossolicitante_table").val() && '' == $("#idprovincia06_detail_contactossolicitante_table").val() ){
		$("#colProvincia06").show();
		$("#colIdProvincia06").hide();
	}else{
		$("#colProvincia06").hide();
		$("#colIdProvincia06").show();
	}
	
	if( ''  != $("#municipio06_detail_contactossolicitante_table").val() && '' == $("#idmunicipio06_detail_contactossolicitante_table").val() ){
		$("#colMunicipio06").show();
		$("#colIdMunicipio06").hide();
	}else{
		$("#colMunicipio06").hide();
		$("#colIdMunicipio06").show();
	}
	
	if( ''  != $("#localidad06_detail_contactossolicitante_table").val() && '' == $("#idlocalidad06_detail_contactossolicitante_table").val() ){
		$("#colLocalidad06").show();
		$("#colIdLocalidad06").hide();
	}else{
		$("#colLocalidad06").hide();
		$("#colIdLocalidad06").show();
	}
	
	if( ''  != $("#calle06_detail_contactossolicitante_table").val() && '' == $("#idcalle06_detail_contactossolicitante_table").val() ){
		$("#colCalle06").show();
		$("#colIdCalle06").hide();
	}else{
		$("#colCalle06").hide();
		$("#colIdCalle06").show();
	}
	
	if( ''  != $("#portal06_detail_contactossolicitante_table").val() && '' == $("#idportal06_detail_contactossolicitante_table").val() ){
		$("#colPortal06").show();
		$("#colIdPortal06").hide();
	}else{
		$("#colPortal06").hide();
		$("#colIdPortal06").show();
	}
	
}