Пример #1
0
 public async Task <ISaida> ProcurarPessoas(ProcurarPessoaEntrada entrada)
 {
     // Verifica se os parâmetros para a procura foram informadas corretamente
     return(entrada.Invalido
         ? new Saida(false, entrada.Mensagens, null)
         : await _pessoaRepositorio.Procurar(entrada));
 }
Пример #2
0
        public void Nao_Deve_Procurar_Pessoas_Com_Parametros_Invalidos()
        {
            var procurarEntrada = new ProcurarPessoaEntrada(0, "Abc", "ASC", -1, -1);

            _pessoaServico = Substitute.For <PessoaServico>(_pessoaRepositorio, _uow);

            var saida = _pessoaServico.ProcurarPessoas(procurarEntrada).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == string.Format(Mensagem.Paginacao_Pagina_Index_Invalido, -1)), string.Join(", ", saida.Mensagens));
        }
Пример #3
0
        public async Task <IActionResult> Procurar([FromBody, SwaggerParameter("Parâmetros utilizados para realizar a procura.", Required = true)] ProcurarPessoaViewModel model)
        {
            var entrada = new ProcurarPessoaEntrada(
                base.ObterIdUsuarioClaim(),
                model.Nome,
                model.OrdenarPor,
                model.OrdenarSentido,
                model.PaginaIndex,
                model.PaginaTamanho
                );

            return(new ApiResult(await _pessoaServico.ProcurarPessoas(entrada)));
        }
Пример #4
0
        public async Task <ProcurarSaida> Procurar(ProcurarPessoaEntrada procurarEntrada)
        {
            var query = _efContext.Pessoas
                        .AsNoTracking()
                        .Where(x => x.IdUsuario == procurarEntrada.IdUsuario)
                        .AsQueryable();

            if (!string.IsNullOrEmpty(procurarEntrada.Nome))
            {
                query = query.Where(x => x.Nome.IndexOf(procurarEntrada.Nome, StringComparison.InvariantCultureIgnoreCase) != -1);
            }

            switch (procurarEntrada.OrdenarPor)
            {
            case PessoaOrdenarPor.Nome:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Nome) : query.OrderByDescending(x => x.Nome);
                break;

            default:
                query = procurarEntrada.OrdenarSentido == "ASC" ? query.OrderBy(x => x.Id) : query.OrderByDescending(x => x.Id);
                break;
            }

            if (procurarEntrada.Paginar())
            {
                var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value);

                return(new ProcurarSaida(
                           pagedList.ToList().Select(x => new PessoaSaida(x)),
                           procurarEntrada.OrdenarPor.ToString(),
                           procurarEntrada.OrdenarSentido,
                           pagedList.TotalItemCount,
                           pagedList.PageCount,
                           procurarEntrada.PaginaIndex,
                           procurarEntrada.PaginaTamanho));
            }
            else
            {
                var totalRegistros = query.Count();

                return(new ProcurarSaida(
                           query.ToList().Select(x => new PessoaSaida(x)),
                           procurarEntrada.OrdenarPor.ToString(),
                           procurarEntrada.OrdenarSentido,
                           totalRegistros));
            }
        }
Пример #5
0
        public void Deve_Procurar_Pessoas()
        {
            var idUsuario = 1;

            var procurarEntrada = new ProcurarPessoaEntrada(idUsuario, "Nome", "ASC", 1, 1);

            var periodo1 = new Pessoa(new CadastrarPessoaEntrada(idUsuario, "Pessoa 1"));
            var periodo2 = new Pessoa(new CadastrarPessoaEntrada(idUsuario, "Pessoa 2"));

            _pessoaRepositorio.Procurar(procurarEntrada)
            .Returns(new ProcurarSaida(new[] { periodo1, periodo2 }, "Nome", "ASC", 2, 2, 1, 1));

            _pessoaServico = Substitute.For <PessoaServico>(_pessoaRepositorio, _uow);

            var saida = _pessoaServico.ProcurarPessoas(procurarEntrada).Result;

            Assert.IsTrue(saida.Sucesso && (int)saida.Retorno.GetType().GetProperty("TotalPaginas").GetValue(saida.Retorno, null) == 2, string.Join(", ", saida.Mensagens));
        }
Пример #6
0
        public async Task <ProcurarSaida> Procurar(ProcurarPessoaEntrada procurarEntrada)
        {
            var query = _efContext.Pessoas
                        .AsNoTracking()
                        .AsQueryable();

            if (!string.IsNullOrEmpty(procurarEntrada.Nome))
            {
                query = query.Where(x => x.Nome.IndexOf(procurarEntrada.Nome, StringComparison.InvariantCultureIgnoreCase) != -1);
            }

            query = query.OrderByProperty(procurarEntrada.OrdenarPor, procurarEntrada.OrdenarSentido);

            if (procurarEntrada.Paginar())
            {
                var pagedList = await query.ToPagedListAsync(procurarEntrada.PaginaIndex.Value, procurarEntrada.PaginaTamanho.Value);

                return(new ProcurarSaida(
                           pagedList.ToList().Select(x => new PessoaSaida(x)),
                           procurarEntrada.OrdenarPor,
                           procurarEntrada.OrdenarSentido,
                           pagedList.TotalItemCount,
                           pagedList.PageCount,
                           procurarEntrada.PaginaIndex,
                           procurarEntrada.PaginaTamanho));
            }
            else
            {
                var totalRegistros = await query.CountAsync();

                return(new ProcurarSaida(
                           (await query.ToListAsync()).Select(x => new PessoaSaida(x)),
                           procurarEntrada.OrdenarPor,
                           procurarEntrada.OrdenarSentido,
                           totalRegistros));
            }
        }