package br.com.centralit.citcorpore.negocio;
import java.util.List;
import br.com.centralit.citcorpore.bean.AssociacaoDeviceAtendenteDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudService;
/**
* Servi�os para {@link AssociacaoDeviceAtendenteDTO}
*
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 15/11/2014
*/
public interface AssociacaoDeviceAtendenteService extends CrudService {
/**
* Lista as associa��es ativas de um usu�rio, independentemente de conex�o e plataforma
*
* @param usuario
* usu�rio para o qual se deseja listar as associa��es ativas
* @param connection
* "conex�o" no mobile, que � a URI acessada
* @return {@link List} de {@link AssociacaoDeviceAtendenteDTO}
* @throws ServiceException
*/
List<AssociacaoDeviceAtendenteDTO> listActiveAssociationsForUserAndConnection(final UsuarioDTO usuario, final String connection) throws ServiceException;
/**
* Associa um device a um usu�rio
*
* @param associacao
* informa��es da associa��o a ser efetuada
* @param usuario
* usu�rio para o qual ser� realizada a associa��o
* @return {@link AssociacaoDeviceAtendenteDTO} realizada
* @throws ServiceException
*/
AssociacaoDeviceAtendenteDTO associateDeviceToAttendant(final AssociacaoDeviceAtendenteDTO associacao, final UsuarioDTO usuario) throws ServiceException;
/**
* Desassocia um device de um usu�rio
*
* @param associacao
* informa��es da associa��o a ser desfeita
* @param usuario
* usu�rio para o qual ser� realizada a desassocia��o
* @return {@link AssociacaoDeviceAtendenteDTO} desassociado
* @throws ServiceException
*/
AssociacaoDeviceAtendenteDTO disassociateDeviceFromAttendant(final AssociacaoDeviceAtendenteDTO associacao, final UsuarioDTO usuario) throws ServiceException;
}