/*
* 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.
*/
package com.ejie.ad74a.model;

import com.ejie.ad74a.model.comun.Municipio;
import com.ejie.ad74a.model.comun.Provincia;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.codehaus.jackson.map.ObjectMapper;

/**
 * Usuarios generated by UDA, 22-ago-2023 11:39:55.
 * 
 * @author UDA
 */

public class Usuarios implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private Long idUsuario80;
	private String identificador80;
	private String nombre80;
	private String apellidos80;
	private String usuXlnets80;
	private String email80;
	private String tlfno80;
	private String puesto80;
	private Date fBaja80;
	private Date fAlta80;
	private String usuAlta80;
	private Date fModif80;
	private String usuModif80;
	private List<UsuariosAyuntamiento> usuariosAyuntamientos = new ArrayList<UsuariosAyuntamiento>();
	private Ayuntamientos ayuntamiento;

	// Campos para el filtrado
	private Provincia provincia;
	private Municipio municipio;
	private Boolean baja;

	/**
	 * Method 'Usuarios'.
	 */
	public Usuarios() {
	}

	/**
	 * Method 'Usuarios'.
	 * 
	 * @param idUsuario80 Long
	 */
	public Usuarios(Long idUsuario80) {
		this.idUsuario80 = idUsuario80;
	}

	/**
	 * Method 'Usuarios'.
	 * 
	 * @param idUsuario80     Long
	 * @param identificador80 String
	 * @param nombre80        String
	 * @param apellidos80     String
	 * @param usuXlnets80     String
	 * @param email80         String
	 * @param tlfno80         String
	 * @param puesto80        String
	 * @param fBaja80         Date
	 * @param fAlta80         Date
	 * @param usuAlta80       String
	 * @param fModif80        Date
	 * @param usuModif80      String
	 */
	public Usuarios(Long idUsuario80, String identificador80, String nombre80, String apellidos80, String usuXlnets80,
			String email80, String tlfno80, String puesto80, Date fBaja80, Date fAlta80, String usuAlta80,
			Date fModif80, String usuModif80) {
		this.idUsuario80 = idUsuario80;
		this.identificador80 = identificador80;
		this.nombre80 = nombre80;
		this.apellidos80 = apellidos80;
		this.usuXlnets80 = usuXlnets80;
		this.email80 = email80;
		this.tlfno80 = tlfno80;
		this.puesto80 = puesto80;
		this.fBaja80 = fBaja80;
		this.fAlta80 = fAlta80;
		this.usuAlta80 = usuAlta80;
		this.fModif80 = fModif80;
		this.usuModif80 = usuModif80;
	}

	/**
	 * Method 'Usuarios'.
	 * 
	 * @param idUsuario80           Long
	 * @param identificador80       String
	 * @param nombre80              String
	 * @param apellidos80           String
	 * @param usuXlnets80           String
	 * @param email80               String
	 * @param tlfno80               String
	 * @param puesto80              String
	 * @param fBaja80               Date
	 * @param fAlta80               Date
	 * @param usuAlta80             String
	 * @param fModif80              Date
	 * @param usuModif80            String
	 * @param usuariosAyuntamientos List<UsuariosAyuntamiento>
	 */
	public Usuarios(Long idUsuario80, String identificador80, String nombre80, String apellidos80, String usuXlnets80,
			String email80, String tlfno80, String puesto80, Date fBaja80, Date fAlta80, String usuAlta80,
			Date fModif80, String usuModif80, List<UsuariosAyuntamiento> usuariosAyuntamientos) {
		this.idUsuario80 = idUsuario80;
		this.identificador80 = identificador80;
		this.nombre80 = nombre80;
		this.apellidos80 = apellidos80;
		this.usuXlnets80 = usuXlnets80;
		this.email80 = email80;
		this.tlfno80 = tlfno80;
		this.puesto80 = puesto80;
		this.fBaja80 = fBaja80;
		this.fAlta80 = fAlta80;
		this.usuAlta80 = usuAlta80;
		this.fModif80 = fModif80;
		this.usuModif80 = usuModif80;
		this.usuariosAyuntamientos = usuariosAyuntamientos;

	}

	/**
	 * Method 'getIdUsuario80'.
	 *
	 * @return Long
	 */

	public Long getIdUsuario80() {
		return this.idUsuario80;
	}

	/**
	 * Method 'setIdUsuario80'.
	 *
	 * @param idUsuario80 Long
	 * @return
	 */

	public void setIdUsuario80(Long idUsuario80) {
		this.idUsuario80 = idUsuario80;
	}

	/**
	 * Method 'getIdentificador80'.
	 *
	 * @return String
	 */

	public String getIdentificador80() {
		return this.identificador80;
	}

	/**
	 * Method 'setIdentificador80'.
	 *
	 * @param identificador80 String
	 * @return
	 */

	public void setIdentificador80(String identificador80) {
		this.identificador80 = identificador80;
	}

	/**
	 * Method 'getNombre80'.
	 *
	 * @return String
	 */

	public String getNombre80() {
		return this.nombre80;
	}

	/**
	 * Method 'setNombre80'.
	 *
	 * @param nombre80 String
	 * @return
	 */

	public void setNombre80(String nombre80) {
		this.nombre80 = nombre80;
	}

	/**
	 * Method 'getUsuXlnets80'.
	 *
	 * @return String
	 */

	public String getUsuXlnets80() {
		return this.usuXlnets80;
	}

	/**
	 * Method 'setUsuXlnets80'.
	 *
	 * @param usuXlnets80 String
	 * @return
	 */

	public void setUsuXlnets80(String usuXlnets80) {
		this.usuXlnets80 = usuXlnets80;
	}

	/**
	 * Method 'getfBaja80'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfBaja80() {
		return this.fBaja80;
	}

	/**
	 * Method 'setfBaja80'.
	 *
	 * @param fBaja80 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfBaja80(Date fBaja80) {
		this.fBaja80 = fBaja80;
	}

	/**
	 * Method 'getfAlta80'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfAlta80() {
		return this.fAlta80;
	}

	/**
	 * Method 'setfAlta80'.
	 *
	 * @param fAlta80 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfAlta80(Date fAlta80) {
		this.fAlta80 = fAlta80;
	}

	/**
	 * Method 'getUsuAlta80'.
	 *
	 * @return String
	 */

	public String getUsuAlta80() {
		return this.usuAlta80;
	}

	/**
	 * Method 'setUsuAlta80'.
	 *
	 * @param usuAlta80 String
	 * @return
	 */

	public void setUsuAlta80(String usuAlta80) {
		this.usuAlta80 = usuAlta80;
	}

	/**
	 * Method 'getfModif80'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfModif80() {
		return this.fModif80;
	}

	/**
	 * Method 'setfModif80'.
	 *
	 * @param fModif80 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfModif80(Date fModif80) {
		this.fModif80 = fModif80;
	}

	/**
	 * Method 'getUsuModif80'.
	 *
	 * @return String
	 */

	public String getUsuModif80() {
		return this.usuModif80;
	}

	/**
	 * Method 'setUsuModif80'.
	 *
	 * @param usuModif80 String
	 * @return
	 */

	public void setUsuModif80(String usuModif80) {
		this.usuModif80 = usuModif80;
	}

	/**
	 * Method 'getUsuariosAyuntamientos'.
	 *
	 * @return List
	 */
	@JsonIgnore
	public List<UsuariosAyuntamiento> getUsuariosAyuntamientos() {
		return this.usuariosAyuntamientos;
	}

	/**
	 * Method 'setUsuariosAyuntamientos'.
	 *
	 * @param usuariosAyuntamientos List
	 * @return
	 */
	public void setUsuariosAyuntamientos(List<UsuariosAyuntamiento> usuariosAyuntamientos) {
		this.usuariosAyuntamientos = usuariosAyuntamientos;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ idUsuario80: ").append(this.idUsuario80).append(" ]");
		result.append(", [ identificador80: ").append(this.identificador80).append(" ]");
		result.append(", [ nombre80: ").append(this.nombre80).append(" ]");
		result.append(", [ apellidos80: ").append(this.apellidos80).append(" ]");
		result.append(", [ usuXlnets80: ").append(this.usuXlnets80).append(" ]");
		result.append(", [ email80: ").append(this.email80).append(" ]");
		result.append(", [ tlfno80: ").append(this.tlfno80).append(" ]");
		result.append(", [ puesto80: ").append(this.puesto80).append(" ]");
		result.append(", [ fBaja80: ").append(this.fBaja80).append(" ]");
		result.append(", [ fAlta80: ").append(this.fAlta80).append(" ]");
		result.append(", [ usuAlta80: ").append(this.usuAlta80).append(" ]");
		result.append(", [ fModif80: ").append(this.fModif80).append(" ]");
		result.append(", [ usuModif80: ").append(this.usuModif80).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getEmail80'.
	 *
	 * @return String
	 */
	public String getEmail80() {
		return email80;
	}

	/**
	 * Method 'setEmail80'.
	 *
	 * @param email80 String
	 * @return
	 */
	public void setEmail80(String email80) {
		this.email80 = email80;
	}

	/**
	 * Method 'getTlfno80'.
	 *
	 * @return String
	 */
	public String getTlfno80() {
		return tlfno80;
	}

	/**
	 * Method 'setTlfno80'.
	 *
	 * @param tlfno80 String
	 * @return
	 */
	public void setTlfno80(String tlfno80) {
		this.tlfno80 = tlfno80;
	}

	/**
	 * Method 'getApellidos80'.
	 *
	 * @return String
	 */
	public String getApellidos80() {
		return apellidos80;
	}

	/**
	 * Method 'setApellidos80'.
	 *
	 * @param apellidos80 String
	 * @return
	 */
	public void setApellidos80(String apellidos80) {
		this.apellidos80 = apellidos80;
	}

	/**
	 * Method 'getNombreCompleto'.
	 *
	 * @return String
	 */
	public String getNombreCompleto() {
		String nombreCompleto = "";
		nombreCompleto += this.nombre80 != null ? nombreCompleto += this.nombre80 : "";
		nombreCompleto += " " + (this.apellidos80 != null ? this.apellidos80 : "");

		if ("".equals(nombreCompleto.trim())) {
			return null;
		}
		return nombreCompleto.trim();
	}

	/**
	 * Method 'getPuesto80'.
	 *
	 * @return String
	 */
	public String getPuesto80() {
		return puesto80;
	}

	/**
	 * Method 'setPuesto80'.
	 *
	 * @param puesto80 String
	 * @return
	 */
	public void setPuesto80(String puesto80) {
		this.puesto80 = puesto80;
	}

	/**
	 * Method 'getProvincia'.
	 *
	 * @return Provincia
	 */
	public Provincia getProvincia() {
		return provincia;
	}

	/**
	 * Method 'setProvincia'.
	 *
	 * @param provincia Provincia
	 * @return
	 */
	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	/**
	 * Method 'getMunicipio'.
	 *
	 * @return Municipio
	 */
	public Municipio getMunicipio() {
		return municipio;
	}

	/**
	 * Method 'setMunicipio'.
	 *
	 * @param municipio Municipio
	 * @return
	 */
	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}

	/**
	 * Method 'getBaja'.
	 *
	 * @return Boolean
	 */
	public Boolean getBaja() {
		return baja;
	}

	/**
	 * Method 'setBaja'.
	 *
	 * @param baja Boolean
	 * @return
	 */
	public void setBaja(Boolean baja) {
		this.baja = baja;
	}

	/**
	 * Method 'getAyuntamiento'.
	 *
	 * @return Ayuntamientos
	 */
	public Ayuntamientos getAyuntamiento() {
		return ayuntamiento;
	}

	/**
	 * Method 'setAyuntamiento'.
	 *
	 * @param ayuntamiento Ayuntamientos
	 * @return
	 */
	public void setAyuntamiento(Ayuntamientos ayuntamiento) {
		this.ayuntamiento = ayuntamiento;
	}

	/**
	 * Method 'obtenerJSON'.
	 *
	 * @return String
	 */
	@JsonIgnore
	public String obtenerJSON() {

		ObjectMapper mapper = new ObjectMapper();

		// Object to JSON in String
		try {
			return mapper.writeValueAsString(this);
		} catch (IOException e) {
			return "";
		}
	}

}
