package com.fp.frontend.webservices;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import com.fp.persistence.parmas.dto.ws.ColaImpresionDto;
import com.fp.persistence.parmas.dto.ws.ImagenDto;
import com.fp.persistence.parmas.dto.ws.JefeCentroControlDto;

/**
 * Servicio que contiene los m&eacute;todos que retornan colas de
 * impresi&oacute;n
 *
 * @author dcruz
 *
 */
@WebService
public interface ColaImpresionService {

    /**
     * Devuelve los documentos por imprimir por usuario
     *
     * @param usercode
     * @return
     */
    @WebMethod
    public List<ColaImpresionDto> obtenerDatosPendientesImprimir(@WebParam(name = "usercode") String usercode);

    /**
     * Invoca al componente que realiza la invocaci&oacute;n de las colas de
     * impresion presentes de dicho documento
     *
     * @param codigoproceso
     * @return una {@link List} de {@link ColaImpresionDto}
     */
    @WebMethod
    public List<ColaImpresionDto> obtenerDocumentosImpresionProceso(@WebParam(name = "codigoproceso") String codigoproceso);

    /**
     * Retorna los datos del Jefe del centro de control
     *
     * @param numerodocumento
     * @return
     */
    @WebMethod
    public JefeCentroControlDto obtenerJefeCentroArmas(@WebParam(name = "numerodocumento") String numerodocumento);

    /**
     * Retorna los datos de la imagen de la persona
     *
     * @param numeroidentificacion N&uacute;mero de identificaci&oacute;n
     * @return
     */
    @WebMethod
    public ImagenDto obtenerImagenPersona(@WebParam(name = "numeroidentificacion") String numeroidentificacion);

    /**
     * Envia los datos del documento y lo almacena en Alfresco
     *
     * @param documento
     * @param numerosolicitud
     * @return 0 &eacute;xito, 1 los par&aacute;metros son obligatorios, 2
     * ocurri&oacute; un error en el servidor, 3 no existe el path asignado
     */
    @WebMethod
    public String envioInforme(@WebParam(name = "documento") byte[] documento, @WebParam(name = "numerosolicitud") String numerosolicitud);
}
