package com.ejie.ab61.serviciosWeb;

import java.util.Date;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.ejie.ab61.exceptions.Ab61Exception;
import com.ejie.ab61.service.serviciosWeb.ServiciosWebService;

@WebService(serviceName = "ab61ToolkitWebService", portName = "ab61ToolkitWebServicePort", targetNamespace = "http://com.ejie.ab61.serviciosWeb.toolkit")
@SOAPBinding(parameterStyle = ParameterStyle.WRAPPED)
public class ToolkitWebServiceImpl extends SpringBeanAutowiringSupport {

	private static final Logger logger = LoggerFactory.getLogger(ToolkitWebServiceImpl.class);
	@Autowired
	ServiciosWebService serviciosWebService;

	@WebMethod
	public String obtenerDatosNegocio(@WebParam(name = "parametroEntrada") String parametroEntrada,
			@WebParam(name = "nombreVista") String nombreVista) {

		ToolkitWebServiceImpl.logger
				.info("[GET - serviciosWebService : Obtener lista de datos para el parametroEntrada / nombreVista: "
						+ parametroEntrada + "/" + nombreVista);
		return serviciosWebService.obtenerDatosNegocio(parametroEntrada, nombreVista);
	}

	@WebMethod
	public String obtenerDatosNegocio_Concatenar(@WebParam(name = "parametroEntrada1") String parametroEntrada1,
			@WebParam(name = "parametroEntrada2") String parametroEntrada2,
			@WebParam(name = "parametroEntrada3") String parametroEntrada3,
			@WebParam(name = "parametroEntrada4") String parametroEntrada4,
			@WebParam(name = "parametroEntrada5") String parametroEntrada5,
			@WebParam(name = "nombreVista") String nombreVista) {

		if (parametroEntrada1 == null)
			parametroEntrada1 = "";
		if (parametroEntrada2 == null)
			parametroEntrada2 = "";
		if (parametroEntrada3 == null)
			parametroEntrada3 = "";
		if (parametroEntrada4 == null)
			parametroEntrada4 = "";
		if (parametroEntrada5 == null)
			parametroEntrada5 = "";

		ToolkitWebServiceImpl.logger
				.info("[GET - serviciosWebService : Obtener lista de datos para los parametroEntrada / nombreVista: ");
		ToolkitWebServiceImpl.logger.info("ParametroEntrada1: " + parametroEntrada1);
		ToolkitWebServiceImpl.logger.info("ParametroEntrada2: " + parametroEntrada2);
		ToolkitWebServiceImpl.logger.info("ParametroEntrada3: " + parametroEntrada3);
		ToolkitWebServiceImpl.logger.info("ParametroEntrada4: " + parametroEntrada4);
		ToolkitWebServiceImpl.logger.info("ParametroEntrada5: " + parametroEntrada5);
		ToolkitWebServiceImpl.logger.info("NombreVista: " + nombreVista);

		String parametroEntrada = parametroEntrada1 + parametroEntrada2 + parametroEntrada3 + parametroEntrada4
				+ parametroEntrada5;

		return serviciosWebService.obtenerDatosNegocio(parametroEntrada, nombreVista);
	}

	@WebMethod
	public String calcularFechaVencimiento(@WebParam(name = "periodo") String periodo,
			@WebParam(name = "cantidad") Integer cantidad, @WebParam(name = "fechaInicio") String fechaInicio)
			throws Ab61Exception {

		ToolkitWebServiceImpl.logger
				.info("[GET - serviciosWebService : Obtener lista de parámetros para calcularFechaVencimiento: ");
		ToolkitWebServiceImpl.logger.info("Periodo: " + periodo);
		ToolkitWebServiceImpl.logger.info("Cantidad: " + cantidad);
		ToolkitWebServiceImpl.logger.info("Fecha inicio: " + fechaInicio);

		return serviciosWebService.calcularFechaVencimiento(periodo, cantidad, fechaInicio);

	}

}
