public Response ObterPorPeriodo(RequestVendaRangeData consultaVendaRangeData)
        {
            try
            {
                var listVendaDto = VendaDto.ListEmpty();

                if (consultaVendaRangeData.IsNotValid())
                {
                    return(Response.BuildBadRequest(ExceptionMessages.VendaRangeDatasInvalido));
                }

                var vendas = _vendaRepository.ObterComPaginacao(consultaVendaRangeData);

                if (!vendas.Any())
                {
                    return(Response.BuildBadRequest(ExceptionMessages.VendaNaoEncontrada));
                }

                foreach (var venda in vendas)
                {
                    listVendaDto.Add(_mapper.Map <VendaDto>(venda));
                }

                return(Response.BuildSuccess(listVendaDto));
            }
            catch (Exception ex)
            {
                return(Response.BuildInternalServerError(ex.Message));
            }
        }
        public List <Venda> ObterComPaginacao(RequestVendaRangeData consultaVendaRangeDto)
        {
            var where = new Func <Venda, bool>(v => v.Data >= consultaVendaRangeDto.DataInicial && v.Data <= consultaVendaRangeDto.DataFinal);

            var total = _contextEf.Venda.Count(where);

            if (total == 0)
            {
                return(Venda.ListEmpty());
            }

            consultaVendaRangeDto.WithPagination(total);

            return(_contextEf.Venda
                   .Include(v => v.ItemVenda)
                   .Include(v => v.Cliente)
                   .Where(where)
                   .OrderByDescending(d => d.Data)
                   .Skip(consultaVendaRangeDto.Paginacao.Skip)
                   .Take(consultaVendaRangeDto.Paginacao.Take)
                   .ToList());
        }
Exemplo n.º 3
0
 public IActionResult ObterVendaPorPeriodo(RequestVendaRangeData consultaVendaRangeDataDto)
 {
     return(Ok(_vendaAppService.ObterPorPeriodo(consultaVendaRangeDataDto)));
 }