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

import java.util.Date;

import javax.xml.datatype.DatatypeConfigurationException;

import com.ejie.ad74a.model.DocumentosInfSocial;
import com.ejie.ad74a.model.DocumentosInforme;
import com.ejie.ad74a.model.InformeSocial;
import com.ejie.ad74a.model.Informes;
import com.ejie.ad74a.model.Solicitantes;
import com.ejie.ad74a.util.comun.UtilidadesFecha;
import com.ejie.ad74a.ws.client.prestadorWS.data.BeneficiarioType;
import com.ejie.ad74a.ws.client.prestadorWS.data.CabeceraType;
import com.ejie.ad74a.ws.client.prestadorWS.data.DatosInformeSocialType;
import com.ejie.ad74a.ws.client.prestadorWS.data.TipoComunicacionEnum;
import com.ejie.ad74a.ws.client.prestadorWS.service.ParseUtils;

public abstract class OpComunes {
	public static final String RESULTADO_OK = "00";

	public static CabeceraType getCabeceraType(Solicitantes solicitante, TipoComunicacionEnum tipoComunicacion)
			throws DatatypeConfigurationException {
		CabeceraType cabeceraType = new CabeceraType();
		BeneficiarioType beneficiarioType = new BeneficiarioType();

		cabeceraType.setTipoComunicacion(tipoComunicacion);
		cabeceraType.setFechaComunicacion(UtilidadesFecha.parseDate2XMLGregorianCalendar(new Date()));
		beneficiarioType = rellenarBeneficiarioType(solicitante);
		cabeceraType.setBeneficiarioType(beneficiarioType);
		return cabeceraType;
	}

	protected static BeneficiarioType rellenarBeneficiarioType(Solicitantes solicitante) {
		BeneficiarioType beneficiario = new BeneficiarioType();

		// numAbonado
		beneficiario.setNumAbonado(solicitante.getNumAbonado01());
		// nombre
		beneficiario.setNombre(solicitante.getNombre01());
		// ape1
		beneficiario.setApe1(solicitante.getApellido101());
		// ape2
		beneficiario.setApe2(solicitante.getApellido201());
		// tipoDocumento
		beneficiario.setTipoDocumento(ParseUtils.parseTipoDocumentoEnum(solicitante.getTipoIdentificador01()));
		// numDocumento
		beneficiario.setNumDocumento(solicitante.getIdentificador01());

		return beneficiario;
	}

	public static DatosInformeSocialType rellenarDatosInformeSocialType(DocumentosInfSocial infSocial)
			throws DatatypeConfigurationException {
		DatosInformeSocialType datosInformeSocial = new DatosInformeSocialType();
		if (infSocial != null) {
			// rutaFichero
			datosInformeSocial.setRutaFichero(infSocial.getRutaPif());
			//si está informada la fecha del informe, se rellenan el resto de datos
			if(infSocial.getFInforme02()!=null) {
				// fInforme
				datosInformeSocial.setFInforme(UtilidadesFecha.parseDate2XMLGregorianCalendar(infSocial.getFInforme02()));
				// sola
				if(infSocial.getSola02()!=null) {
					datosInformeSocial.setSola(ParseUtils.parseInt2BinarioEnum(infSocial.getSola02()));
				}
				// estaSolaManana
				if(infSocial.getEstaSolaManana02()!=null) {
					datosInformeSocial.setEstaSolaManana(ParseUtils.parseInt2BinarioEnum(infSocial.getEstaSolaManana02()));
				}
				// estaSolaTarde
				if(infSocial.getEstaSolaTarde02()!=null) {
					datosInformeSocial.setEstaSolaTarde(ParseUtils.parseInt2BinarioEnum(infSocial.getEstaSolaTarde02()));
				}
				// estaSolaNoche
				if(infSocial.getEstaSolaNoche02()!=null) {
					datosInformeSocial.setEstaSolaNoche(ParseUtils.parseInt2BinarioEnum(infSocial.getEstaSolaNoche02()));
				}
				// relacionEntorno
				if(infSocial.getRelacionEntorno02()!=null) {
					datosInformeSocial
					.setRelacionEntorno(ParseUtils.parseInt2RelacionEntornoEnum(infSocial.getRelacionEntorno02()));
				}
				// familiarFallecido
				if(infSocial.getFamiliarFallecido02()!=null) {
					datosInformeSocial
					.setFamiliarFallecido(ParseUtils.parseInt2BinarioEnum(infSocial.getFamiliarFallecido02()));
				}
				// vinculoFallecido
				datosInformeSocial.setVinculoFallecido(infSocial.getVinculoFallecido02());
				// visitasFamilia
				if(infSocial.getVisitasFamilia02()!=null) {
					datosInformeSocial.setVisitasFamilia(ParseUtils.parseInt2FrecuenciaEnum(infSocial.getVisitasFamilia02()));
				}
				// visitasAmigos
				if(infSocial.getVisitasAmigos02()!=null) {
					datosInformeSocial.setVisitasAmigos(ParseUtils.parseInt2FrecuenciaEnum(infSocial.getVisitasAmigos02()));
				}
				// frecuenciaSalidas
				if(infSocial.getFrecuenciaSalidas02()!=null) {
					datosInformeSocial
					.setFrecuenciaSalidas(ParseUtils.parseInt2FrecuenciaEnum(infSocial.getFrecuenciaSalidas02()));
				}
				// periodoSinVisitas
				if(infSocial.getPeriodoSinVisitas02()!=null) {
					datosInformeSocial
					.setPeriodoSinVisitas(ParseUtils.parseInt2BinarioEnum(infSocial.getPeriodoSinVisitas02()));
				}
				// tiempoSinVisitas
				if(infSocial.getTiempoSinVisitas02()!=null) {
					datosInformeSocial
					.setTiempoSinVisitas(ParseUtils.parseInt2TiempoSinVisitasEnum(infSocial.getTiempoSinVisitas02()));
				}
				// observaciones
				datosInformeSocial.setObservaciones(infSocial.getObservaciones02());
			}
		}
		return datosInformeSocial;
	}
}
