package com.ejie.m62fb.model.direccion;

import java.math.BigDecimal;

import org.codehaus.jackson.annotate.JsonIgnore;

import com.ejie.m62fb.i18n.I18nString;
import com.ejie.m62fb.model.base.AbstractM62FBModel;
import com.ejie.m62fb.utils.constants.AppConstantes;
import com.ejie.t17i.model.Calle;
import com.ejie.t17i.model.Localidad;
import com.ejie.t17i.model.Municipio;
import com.ejie.t17i.model.Pais;
import com.ejie.t17i.model.Planta;
import com.ejie.t17i.model.Portal;
import com.ejie.t17i.model.Provincia;

/**
 * Direcciones.
 * 
XXXX
 */
public class Direccion extends AbstractM62FBModel implements
		java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private BigDecimal idDireccionP;
	private Pais pais;
	private Provincia provincia;
	private Municipio municipio;
	private Localidad localidad;
	private Calle calle;
	private Portal portal;
	private Planta planta;
	private String mano;
	private String puerta;
//	private I18nString dirCompleta;

	/**
	 * Method 'Direcciones'.
	 */
	public Direccion() {
		super();
		//this.pais=new Pais(AppConstantes.PAIS_ESPANYA);
	}

	/**
	 * Method 'Direcciones'.
	 * 
	 * @param idDireccionP
	 *            BigDecimal
	 */
	public Direccion(BigDecimal idDireccionP) {
		super();
		this.idDireccionP = idDireccionP;
	}

	/**
	 * Method 'getIdDireccionP'
	 * 
	 * @return idDireccionP
	 */

	public BigDecimal getIdDireccionP() {
		return this.idDireccionP;
	}

	/**
	 * Method 'setIdDireccionP'
	 * 
	 * @param idDireccionP
	 *            BigDecimal
	 */

	public void setIdDireccionP(BigDecimal idDireccionP) {
		this.idDireccionP = idDireccionP;
	}

	/**
	 * @return the pais
	 */
	public Pais getPais() {
		return pais;
	}

	/**
	 * @param pais
	 *            the pais to set
	 */
	public void setPais(Pais pais) {
		this.pais = pais;
	}

	/**
	 * @return the provincia
	 */
	public Provincia getProvincia() {
		return provincia;
	}

	/**
	 * @param provincia
	 *            the provincia to set
	 */
	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

	/**
	 * @return the municipio
	 */
	public Municipio getMunicipio() {
		return municipio;
	}

	/**
	 * @param municipio
	 *            the municipio to set
	 */
	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}

	/**
	 * @return the localidad
	 */
	public Localidad getLocalidad() {
		return localidad;
	}

	/**
	 * @param localidad
	 *            the localidad to set
	 */
	public void setLocalidad(Localidad localidad) {
		this.localidad = localidad;
	}

	/**
	 * @return the calle
	 */
	public Calle getCalle() {
		return calle;
	}

	/**
	 * @param calle
	 *            the calle to set
	 */
	public void setCalle(Calle calle) {
		this.calle = calle;
	}

	/**
	 * @return the portal
	 */
	public Portal getPortal() {
		return portal;
	}

	/**
	 * @param portal
	 *            the portal to set
	 */
	public void setPortal(Portal portal) {
		this.portal = portal;
	}

	/**
	 * @return the planta
	 */
	public Planta getPlanta() {
		return planta;
	}

	/**
	 * @param planta
	 *            the planta to set
	 */
	public void setPlanta(Planta planta) {
		this.planta = planta;
	}

	/**
	 * Method 'getMano'
	 * 
	 * @return mano
	 */

	public String getMano() {
		return this.mano;
	}

	/**
	 * Method 'setMano'
	 * 
	 * @param mano
	 *            String
	 */

	public void setMano(String mano) {
		this.mano = mano;
	}
	/**
	 * Method 'getPuerta'
	 * 
	 * @return puerta
	 */

	public String getPuerta() {
		return this.puerta;
	}

	/**
	 * Method 'setPuerta'
	 * 
	 * @param puerta
	 *            String
	 */

	public void setPuerta(String puerta) {
		this.puerta = puerta;
	}
//	/**
//	 * Method 'getDirCompleta'
//	 * 
//	 * @return dirCompleta
//	 */
//
//	public I18nString getDirCompleta() {
//		return this.dirCompleta;
//	}
	/**
	 * Method 'getEmplazamiento'
	 * 
	 * @return emplazamiento
	 */

	public String getEmplazamiento() {
		return "Emplazamiento";
	}
//	/**
//	 * Method 'setDirCompleta'
//	 * 
//	 * @param dirCompleta
//	 *            I18nString
//	 */
//
//	public void setDirCompleta(I18nString dirCompleta) {
//		this.dirCompleta = dirCompleta;
//	}

	// Se necesita para serializar cuando es multimodel
	@JsonIgnore
	public void setTipoDireccion(String tipoDireccion) {
	}

	// Se necesita para serializar cuando es multimodel
	@JsonIgnore
	public void setTipoDireccionEdit(String tipoDireccionEdit) {
	}

	/**
	 *  Comprobar si esta vac&iacute;a. PAIS = 108 y PROVINCIA = NULL o MUNICIPIO 
	 * @param tipoDireccionEdit
	 */
	@JsonIgnore
	public boolean isDireccionVacia() {
		if(pais== null){
			return true;
		}
		if (pais!= null ){
			if (pais.getId().equals(AppConstantes.PAIS_ESPANYA)){
				if (provincia == null || (provincia!=null && provincia.getId().isEmpty())) {
					return true;
				}else{
					if(municipio == null || (municipio!=null && municipio.getId().isEmpty())){
						return true;
					}
				}
			}
		}
		return false;
	}
}
