package com.ejie.ad74a.ws.client.prestadorWS.service;

import java.math.BigDecimal;

import com.ejie.ad74a.constantes.Constantes;
import com.ejie.ad74a.model.Direcciones;
import com.ejie.ad74a.ws.client.prestadorWS.data.BinarioEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.DireccionType;
import com.ejie.ad74a.ws.client.prestadorWS.data.FrecuenciaEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.GradoDependenciaEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.MotivosBajaEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.RelacionEntornoEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.TiempoSinVisitasEnum;
import com.ejie.ad74a.ws.client.prestadorWS.data.TipoDocumentoEnum;

public class ParseUtils {

	public static TipoDocumentoEnum parseTipoDocumentoEnum(String tipoIdentificador) {
		switch (Integer.valueOf(tipoIdentificador)) {
		case Constantes.UNO:
			return TipoDocumentoEnum.DNI;
		case Constantes.DOS:
			return TipoDocumentoEnum.CIF;
		case Constantes.TRES:
			return TipoDocumentoEnum.NIE;
		case Constantes.CUATRO:
			return TipoDocumentoEnum.PASAPORTE;
		case Constantes.CINCO:
			return TipoDocumentoEnum.OTROS;
		default:
			return null;
		}
	}

	public static BinarioEnum parseInt2BinarioEnum(int value) {
		switch (value) {
		case Constantes.CERO:
			return BinarioEnum.NO;
		case Constantes.UNO:
			return BinarioEnum.SI;
		default:
			return null;
		}
	}

	public static FrecuenciaEnum parseInt2FrecuenciaEnum(int value) {
		switch (value) {
		case Constantes.CERO:
			return FrecuenciaEnum.DIARIO;
		case Constantes.UNO:
			return FrecuenciaEnum.SEMANAL;
		case Constantes.DOS:
			return FrecuenciaEnum.MENSUAL;
		case Constantes.TRES:
			return FrecuenciaEnum.ESPORADICO;
		case Constantes.CUATRO:
			return FrecuenciaEnum.NUNCA;
		default:
			return null;
		}
	}

	public static RelacionEntornoEnum parseInt2RelacionEntornoEnum(int value) {
		switch (value) {
		case Constantes.CERO:
			return RelacionEntornoEnum.BUENA;
		case Constantes.UNO:
			return RelacionEntornoEnum.ACEPTABLE;
		case Constantes.DOS:
			return RelacionEntornoEnum.MALA;
		case Constantes.TRES:
			return RelacionEntornoEnum.SINRELACION;
		default:
			return null;
		}
	}

	public static TiempoSinVisitasEnum parseInt2TiempoSinVisitasEnum(int value) {
		switch (value) {
		case Constantes.CERO:
			return TiempoSinVisitasEnum.DIA;
		case Constantes.UNO:
			return TiempoSinVisitasEnum.SEMANA;
		case Constantes.DOS:
			return TiempoSinVisitasEnum.MES;
		default:
			return null;
		}
	}

	public static GradoDependenciaEnum parseInt2GradoDependenciaEnum(int value) {
		switch (value) {
		case Constantes.UNO:
			return GradoDependenciaEnum.GI;
		case Constantes.DOS:
			return GradoDependenciaEnum.GII;
		case Constantes.TRES:
			return GradoDependenciaEnum.GIII;
		case Constantes.CUATRO:
			return GradoDependenciaEnum.GIN_1;
		case Constantes.CINCO:
			return GradoDependenciaEnum.GIN_2;
		case Constantes.SEIS:
			return GradoDependenciaEnum.GIIN_1;
		case Constantes.SIETE:
			return GradoDependenciaEnum.GIIN_2;
		case Constantes.OCHO:
			return GradoDependenciaEnum.GIIIN_1;
		case Constantes.NUEVE:
			return GradoDependenciaEnum.GIIIN_2;
		default:
			return null;
		}
	}

	public static MotivosBajaEnum parseInt2MotivosBajaEnum(int value) {
		switch (value) {
		case 11:
			return MotivosBajaEnum.FALLECIMIENTO;
		case 12:
			return MotivosBajaEnum.INGRESORESIDENCIA;
		case 13:
			return MotivosBajaEnum.DESVINCULACION;
		case 14:
			return MotivosBajaEnum.INSATISFACCION;
		case 15:
			return MotivosBajaEnum.SINLINEA;
		case 16:
			return MotivosBajaEnum.OTRO;
		case 17:
			return MotivosBajaEnum.INCUMPLIMIENTO;
		case 18:
			return MotivosBajaEnum.TRASLADO;
		default:
			return null;
		}
	}

	public static DireccionType direcciones2DireccionType(Direcciones direccion) {
		DireccionType direccionType = new DireccionType();
		direccionType.setCodProvincia(
				direccion.getProvinciaNORA() != null ? direccion.getProvinciaNORA().getCodProvincia() : null);
		direccionType.setCodMunicipio(
				direccion.getMunicipioNORA() != null ? direccion.getMunicipioNORA().getCodMunicipio() : null);
		direccionType.setCodLocalidad(direccion.getLocalidadNORA() != null
				? BigDecimal.valueOf(direccion.getLocalidadNORA().getCodLocalidad())
				: null);
		direccionType.setCodCalle(direccion.getCalleNORA() != null && direccion.getCalleNORA().getCodCalle() != null
				? BigDecimal.valueOf(direccion.getCalleNORA().getCodCalle())
				: null);
		direccionType.setCalle(direccion.getCalle06());
		direccionType
				.setCodPortal(direccion.getIdPortal06() != null ? new BigDecimal(direccion.getIdPortal06()) : null);
		direccionType.setPortal(direccion.getPortal06());
		direccionType.setCp(direccion.getCp06());
		direccionType.setEscalera(direccion.getEscalera06());
		direccionType.setPiso(direccion.getPiso06());
		direccionType.setLetra(direccion.getLetra06());
		return direccionType;
	}

	public static String crearPathDesdeRutaPif(String pathDestino, String carpeta, String nombreFichero) {
		StringBuilder path = new StringBuilder(pathDestino);
		path.append("/").append(carpeta).append("/").append(nombreFichero);
		return path.toString();
	}
}
