package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.UnidadeDTO;
import br.com.centralit.citcorpore.bean.UnidadesAccServicosDTO;
import br.com.centralit.citcorpore.util.Arvore;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudService;
@SuppressWarnings("rawtypes")
public interface UnidadeService extends CrudService {
Collection findByIdUnidade() throws Exception;
Collection findById(final Integer idUnidade) throws Exception;
Collection findByIdEmpregado() throws Exception;
Collection listHierarquia() throws Exception;
Collection listHierarquiaMultiContratos(final Integer idContrato) throws Exception;
boolean jaExisteUnidadeComMesmoNome(final UnidadeDTO unidade);
/**
* Metodo pra fazer a exclus�o l�gica de Unidade
*
* @param model
* @param document
* @throws ServiceException
* @throws Exception
* @author thays.araujo
*/
void deletarUnidade(final IDto model, final DocumentHTML document, final HttpServletRequest request) throws ServiceException, Exception;
/**
* Restaura GRID de Servi�os.
*
* @author rodrigo.oliveira
*/
void restaurarGridServicos(final DocumentHTML document, final Collection<UnidadesAccServicosDTO> servicos);
Collection listarAtivasPorContrato(final Integer idContrato);
Collection<UnidadeDTO> listUnidadePorContrato(final Integer idcontrato) throws Exception;
Collection<UnidadeDTO> findByNomeEcontrato(final String nome, final Integer idContrato, final Integer limite) throws Exception;
/**
* @author euler.ramos
* � importante que esta lista se mantenha ordenando os n�s na hierarquia, seguindo a oirenta��o de n�s pai para os n�s filhos
* @param unidadeDTO
* @return
* @throws Exception
*/
List<UnidadeDTO> recuperaHierarquiaUnidade(final UnidadeDTO unidadeDTO) throws Exception;
String retornaNomeUnidadeByID(final Integer id) throws Exception;
Collection findByIdEcontrato(final Integer idUnidade, final Integer idContrato) throws Exception;
/**
* Atualiza as coordenadas geogr�ficas de uma unidade
*
* @param locale
* locale para recupera��o de mensagem internacionalizada
* @param unidade
* unidade contendo os valores das coordenadas para serem atualizadas
* @throws ServiceException
* caso os atributos estejam nulos ou n�o seja valores v�lidos
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 22/09/2014
*/
void updateCoordenadas(final String locale, final UnidadeDTO unidade) throws Exception;
/**
* @author euler.ramos
* @param nome - Nome da Unidade - Se for Null ou Vazio o sistema trar� todas as unidades independentemente do nome
* @param idContrato - Para filtrar apenas as unidades vinculadas ao contrato - Se for Null ou Vazio o sistema n�o filtrar� por contrato
* @param idUnidadeColaborador - Trazer apenas a �rvore de unidades referente ao colaborador, conforme a hierarquia
* @param tipoHierarquia - se haver� restri��o dos n�s da �rvore ou como ser� a orienta��o dos n�s retornados
* @param limite - Limite do n�mero de registros que podem ser retornados na pesquisa do banco; Para n�o limitar a consulta informe Null ou 0 (Zero);
* @return �rvore das unidades, de acordo com a pesquisa e configura��o dos par�metros
* @throws ServiceException
* @throws Exception
*/
Arvore obtemArvoreUnidades(String nome, Integer idContrato, Integer idUnidadeColaborador, String tipoHierarquia, Integer limite) throws ServiceException, Exception;
}