package com.ejie.ab61.serviciosWeb;

import java.util.List;

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.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.ejie.ab61.exceptions.Ab61Exception;
import com.ejie.ab61.exceptions.PifException;
import com.ejie.ab61.model.documento.DocumentoAportado;
import com.ejie.ab61.model.documentosPid.IdentificadoresPid;
import com.ejie.ab61.model.origen.Origen;
import com.ejie.ab61.model.serviciosWeb.BusquedasWS;
import com.ejie.ab61.model.serviciosWeb.DocumentoWS;
import com.ejie.ab61.model.serviciosWeb.inicioOficio.DatosInicioOficio;
import com.ejie.ab61.model.serviciosWeb.inicioOficio.InicioOficioTitularWS;
import com.ejie.ab61.model.serviciosWeb.inicioOficio.InicioOficioWS;
import com.ejie.ab61.service.serviciosWeb.ServiciosWebService;

@WebService(serviceName = "ab61WebService", portName = "ab61WebServicePort", targetNamespace = "http://com.ejie.ab61.serviciosWeb")
@SOAPBinding(parameterStyle = ParameterStyle.WRAPPED)
public class WebServiceImpl extends SpringBeanAutowiringSupport {

	@Autowired
	ServiciosWebService serviciosWebService;

	@WebMethod
	public String generarExcelListados(@WebParam(name = "idListado") Integer idListado,
			@WebParam(name = "listaBusqueda") List<BusquedasWS> listaBusquedas,
			@WebParam(name = "aplicacion") String aplicacion,
			@WebParam(name = "idProcedimiento") Integer idProcedimiento) throws Ab61Exception {

		return serviciosWebService.generarExcelListados(idListado, listaBusquedas, aplicacion, idProcedimiento);
	}

	@WebMethod
	public String descargarDocumento(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "procedureId") String procedureId, @WebParam(name = "foderId") String folderId,
			@WebParam(name = "identificadorInspeccion") String identificadorInspeccion,
			@WebParam(name = "aplicacion") String aplicacion) throws Ab61Exception {

		return serviciosWebService.descargarDocumento(idPlantilla, procedureId, folderId, identificadorInspeccion,
				aplicacion);

	}

	@WebMethod
	public String descargarDocumentoNegocio(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "identificador") String identificador, @WebParam(name = "origen") Origen origen,
			@WebParam(name = "aplicacion") String aplicacion) throws Ab61Exception {

		return serviciosWebService.descargarDocumentoNegocio(idPlantilla, identificador, origen, aplicacion);

	}

	@WebMethod
	public String generarDocumento(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "procedureId") String procedureId, @WebParam(name = "foderId") String folderId,
			@WebParam(name = "identificadorInspeccion") String identificadorInspeccion,
			@WebParam(name = "usuario") String usuario) throws Ab61Exception {

		return serviciosWebService.generarDocumento(idPlantilla, procedureId, folderId, identificadorInspeccion,
				usuario);

	}

	@WebMethod
	public String generarDocumentoNegocio(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "identificador") String identificador, @WebParam(name = "origen") Origen origen,
			@WebParam(name = "usuario") String usuario) throws Ab61Exception {

		return serviciosWebService.generarDocumentoNegocio(idPlantilla, identificador, origen, usuario);

	}

	@WebMethod
	public String modificarDocumento(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "procedureId") String procedureId, @WebParam(name = "foderId") String folderId,
			@WebParam(name = "identificadorInspeccion") String identificadorInspeccion,
			@WebParam(name = "usuario") String usuario) throws Ab61Exception {
		return serviciosWebService.modificarDocumento(idPlantilla, procedureId, folderId, identificadorInspeccion,
				usuario);

	}

	@WebMethod
	public String modificarDocumentoNegocio(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "identificador") String identificador, @WebParam(name = "usuario") String usuario)
			throws Ab61Exception {
		return serviciosWebService.modificarDocumentoNegocio(idPlantilla, identificador, usuario);

	}

	@WebMethod
	public String aportarDocumento(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "procedureId") String procedureId, @WebParam(name = "folderId") String folderId,
			@WebParam(name = "n38Login") String n38Login, @WebParam(name = "usuario") String usuario)
			throws Ab61Exception {

		return serviciosWebService.aportarDocumento(idPlantilla, folderId, procedureId, n38Login, usuario);
	}

	@WebMethod
	public String aportarDocumentoNegocio(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "procedureId") String procedureId, @WebParam(name = "folderId") String folderId,
			@WebParam(name = "n38Login") String n38Login, @WebParam(name = "usuario") String usuario)
			throws Ab61Exception {

		return serviciosWebService.aportarDocumentoNegocio(idPlantilla, folderId, procedureId, n38Login, usuario);
	}

	@WebMethod
	public List<DocumentoAportado> aportarDocumentos(@WebParam(name = "documentosWS") List<DocumentoWS> documentosWS,
			@WebParam(name = "folderId") String folderId, @WebParam(name = "procedureId") String procedureId,
			@WebParam(name = "n38Login") String n38Login, @WebParam(name = "usuario") String usuario)
			throws Ab61Exception {

		return serviciosWebService.aportarDocumentos(documentosWS, folderId, procedureId, n38Login, usuario);
	}

	@WebMethod
	public String eliminarDocumento(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "foderId") String folderId, @WebParam(name = "procedureId") String procedureId,
			@WebParam(name = "identificadorInspeccion") String identificadorInspeccion) throws Ab61Exception {
		return serviciosWebService.eliminarDocumento(idPlantilla, folderId, procedureId, identificadorInspeccion);

	}

	@WebMethod
	public String eliminarDocumentoNegocio(@WebParam(name = "idPlantilla") Integer idPlantilla,
			@WebParam(name = "identificador") String identificador) throws Ab61Exception {
		return serviciosWebService.eliminarDocumentoNegocio(idPlantilla, identificador);

	}

	@WebMethod
	public DatosInicioOficio generarInicioOficio(@WebParam(name = "inicioOficioWS") InicioOficioWS inicioOficioWS)
			throws Ab61Exception {
		return serviciosWebService.generarInicioOficio(inicioOficioWS);

	}

	@WebMethod
	public DatosInicioOficio generarInicioOficioTitular(
			@WebParam(name = "inicioOficioTitularWS") InicioOficioTitularWS inicioOficioTitularWS)
			throws Ab61Exception {
		return serviciosWebService.generarInicioOficioTitular(inicioOficioTitularWS);
	}

	@WebMethod
	public String descargarDocumentoDokusi(@WebParam(name = "oidDokusi") String oidDokusi,
			@WebParam(name = "aplicacion") String aplicacion, @WebParam(name = "tipoUrl") Integer tipoUrl)
			throws Ab61Exception, PifException {
		return serviciosWebService.descargarDocumentoDokusi(oidDokusi, aplicacion, tipoUrl);
	}

	@WebMethod
	public String descargarDocumentoPid(@WebParam(name = "oidPid") String oidPid,
			@WebParam(name = "aplicacion") String aplicacion, @WebParam(name = "tipoUrl") Integer tipoUrl)
			throws Ab61Exception, PifException {
		return serviciosWebService.descargarDocumentoPid(oidPid, aplicacion, tipoUrl);
	}

	@WebMethod
	public void eliminarDocumentoPid(@WebParam(name = "oidPid") String oidPid) throws Ab61Exception {
		serviciosWebService.eliminarDocumentoPid(oidPid);
	}

	@WebMethod
	public IdentificadoresPid insertarDocumentoPid(@WebParam(name = "pathPif") String pathPif,
			@WebParam(name = "fileName") String fileName, @WebParam(name = "idTipoPlantilla") Integer idTipoPlantilla,
			@WebParam(name = "nombreDocumento") String nombreDocumento,
			@WebParam(name = "aportadoExpediente") Integer aportadoExpediente,
			@WebParam(name = "aplicacion") String aplicacion, @WebParam(name = "usuario") String usuario)
			throws Ab61Exception {
		return serviciosWebService.insertarDocumentoPid(pathPif, fileName, idTipoPlantilla, nombreDocumento,
				aportadoExpediente, aplicacion, usuario);
	}

}
