package br.com.centralit.citcorpore.negocio;
import br.com.centralit.citcorpore.bean.GerenciamentoRotasDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bean.result.GerenciamentoRotasResultDTO;
import br.com.centralit.citcorpore.util.Enumerados.TipoSolicitacaoServico;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.core.Page;
import br.com.citframework.integracao.core.Pageable;
import br.com.citframework.service.CrudService;
/**
* Servi�os para as consultas de {@link SolicitacaoServicoDTO} realizadas pelo mobile V2
*
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 09/10/2014
*
*/
public interface SolicitacaoServicoServiceForMobileV2 extends CrudService {
/**
* Lista {@link SolicitacaoServicoDTO} de acordo com a mais recente presente no APP
*
* @param newestNumber
* n�mero de solicita��o mais recente presente no mobile
* @param usuario
* usu�rio que est� solicitando a listagem
* @param tiposSolicitacao
* tipos de solicita��o a serem consideradas na listagem
* @param aprovacao
* identificador de se a solicita��o est� ou n�o em aprova��o
* @return {@link Page} contendo os registros resultantes da consulta
* @throws ServiceException
*/
Page<SolicitacaoServicoDTO> listNewest(final Integer newestNumber, final UsuarioDTO usuario, final TipoSolicitacaoServico[] tiposSolicitacao, final String aprovacao)
throws ServiceException;
/**
* Lista {@link SolicitacaoServicoDTO} de acordo com a mais antiga presente no APP
*
* @param oldestNumber
* n�mero de solicita��o mais antiga presente no mobile
* @param usuario
* usu�rio que est� solicitando a listagem
* @param tiposSolicitacao
* tipos de solicita��o a serem consideradas na listagem
* @param aprovacao
* identificador de se a solicita��o est� ou n�o em aprova��o
* @return {@link Page} contendo os registros resultantes da consulta
* @throws ServiceException
*/
Page<SolicitacaoServicoDTO> listOldest(final Integer oldestNumber, final UsuarioDTO usuario, final TipoSolicitacaoServico[] tiposSolicitacao, final String aprovacao)
throws ServiceException;
/**
* Lista {@link SolicitacaoServicoDTO} de acordo com o posicionamento geogr�fico do usu�rio
*
* @param latitude
* latitude do posicionamento do usu�rio
* @param longitude
* longitude do posicionamento do usu�rio
* @param usuario
* usu�rio que est� solicitando a listagem
* @param tiposSolicitacao
* tipos de solicita��o a serem consideradas na listagem
* @param aprovacao
* identificador de se a solicita��o est� ou n�o em aprova��o
* @param pageable
* informa��o sobre pagina��o
* @return {@link Page} contendo os registros resultantes da consulta
* @throws ServiceException
*/
Page<SolicitacaoServicoDTO> listByCoordinates(final Double latitude, final Double longitude, final UsuarioDTO usuario, final TipoSolicitacaoServico[] tiposSolicitacao,
final String aprovacao, final Pageable pageable) throws ServiceException;
/**
* Lista solicita��es de servi�os para roteiriza��o
*
* @param filter
* informa��es para filtro
* @param pageable
* informa��es para pagina��o
* @return {@link Page} contendo os registros resultantes da consulta
* @throws ServiceException
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @date 17/11/2014
*/
Page<GerenciamentoRotasResultDTO> listSolicitacoesParaRoteirizacao(final GerenciamentoRotasDTO filter, final Pageable pageable) throws ServiceException;
Page<SolicitacaoServicoDTO> listNotificationByNumberAndUser(final Integer number, final UsuarioDTO user) throws ServiceException;
}