package com.ejie.ab63.adaptadores;

import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeFactory;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ejie.ab63.adaptadores.service.Ab79WebServiceService;
import com.ejie.ab63.clientesWS.ab79WebService.Ab79Exception;
import com.ejie.ab63.clientesWS.ab79WebService.Ab79ExceptionGeneral;
import com.ejie.ab63.clientesWS.ab79WebService.InspeccionWS;
import com.ejie.ab63.comun.Constantes;
import com.ejie.ab63.model.Establecimiento;
import com.ejie.ab63.util.InspecionesServiceUtils;
import com.ejie.ab63.util.PermisosXLNETS;

/**
 *  
 * 
 */
@Service(value = "ab79WebServiceAdaptadorServiceImpl")
public class Ab79WebServiceAdaptadorServiceImpl implements Ab79WebServiceAdaptadorService {

	public static final Logger logger = LoggerFactory.getLogger(Ab79WebServiceAdaptadorServiceImpl.class);

	@Autowired()
	private Ab79WebServiceService ab79WebServiceService;

	@Override
	public String crearInspeccion(String folderId, Establecimiento establecimiento, Date fechaLimite,
			String observaciones) throws Ab79Exception {
		Ab79WebServiceAdaptadorServiceImpl.logger.info("ab79WebServiceAdaptadorService.crearInspeccion - Inicio");
		try {
			Ab79WebServiceAdaptadorServiceImpl.logger
					.info("ab79WebServiceAdaptadorService.crearInspeccion - folderId: " + folderId);
			Ab79WebServiceAdaptadorServiceImpl.logger
					.info("ab79WebServiceAdaptadorService.crearInspeccion - Establecimiento: " + folderId);

			InspeccionWS inspeccion = new InspeccionWS();
			if (observaciones != null) {
				inspeccion.setObservacionesActuacionInspeccion(observaciones);
			}
			if (fechaLimite != null) {
				GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.getInstance();
				calendar.setTime(fechaLimite);
				inspeccion.setFechaLimiteInspeccion(DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar));
			}
			inspeccion.setDatosEstablecimientoWS(InspecionesServiceUtils.descomponerEstablecimiento(establecimiento));

			String respuesta = this.ab79WebServiceService.crearInspeccion(folderId, inspeccion,
					PermisosXLNETS.getUserConnected(), Constantes.AB79_ORIGEN_CENSO);

			Ab79WebServiceAdaptadorServiceImpl.logger
					.debug("ab79WebServiceAdaptadorService.crearInspeccion - Return: " + "");
			return respuesta;
			// return Constantes.AB79_RESPONSE_OK;
		} catch (Exception e) {
			logger.error("Ab79WebServiceAdaptadorService :: Error: ", e);
			throw new Ab79Exception(e.getLocalizedMessage(), new Ab79ExceptionGeneral());
		}
	}

}
