Пример #1
0
        public async Task <IActionResult> RetornarDadosCliente([FromBody] FiltroDataViewModel filtro, [FromHeader] string authorization)
        {
            var usuario = await _tokenService.ExtractUsuarioToken(authorization);

            if (usuario is null)
            {
                return(BadRequest(""));
            }

            return(Ok(await _painelRepository.RetornarDadosUsuario(usuario.Id, filtro)));
        }
        public async Task <List <Pedido> > RetornarPedidosData(int id, FiltroDataViewModel filtro)
        {
            if (filtro is null)
            {
                filtro = new FiltroDataViewModel()
                {
                    DataInical = inicioAnoPadrao, Datafinal = FimAnoPadrao
                };
            }

            return(await _context.Pedidos.AsQueryable().Where(x => x.UsuarioPedidoId == id && x.DataRegistro >= filtro.DataInical && x.DataRegistro <= filtro.Datafinal).ToListAsync());
        }
        public async Task <PainelViewModel> RetornarDadosUsuario(int id, FiltroDataViewModel filtro = null)
        {
            if (filtro is null)
            {
                filtro = new FiltroDataViewModel()
                {
                    DataInical = inicioAnoPadrao, Datafinal = FimAnoPadrao
                };
            }

            var pedidos      = _context.Pedidos.AsQueryable().Where(x => x.UsuarioPedidoId == id && x.DataRegistro >= filtro.DataInical && x.DataRegistro <= filtro.Datafinal);
            var vendasFeitas = _context.Vendas.AsQueryable().Where(x => x.Horario >= filtro.DataInical && x.Horario <= filtro.Datafinal && x.usuarioVendaID == id);

            var quantidadePedidos = await pedidos.CountAsync();

            var valorTotal = await pedidos.SumAsync(x => x.ValorTotal);


            var despesas = await(from ped in pedidos
                                 group ped by ped.Situacao into situacoes
                                 select new DespesasViewModel()
            {
                TipoDeDespesa = situacoes.Key,
                ValorDespesa  = situacoes.Sum(p => p.ValorTotal)
            }).ToListAsync();

            var comparativoAnual = await(from itens in _context.ItemsVenda
                                         join produtos in _context.Produtos
                                         on itens.ProdutoId equals produtos.ID
                                         join vendas in vendasFeitas
                                         on itens.VendaId equals vendas.Id
                                         group itens by produtos.Nome
                                         into produtosSelecionados
                                         select new DespesasViewModel()
            {
                TipoDeDespesa = produtosSelecionados.Key,
                ValorDespesa  = produtosSelecionados.Sum(x => x.Quantidade)
            }
                                         ).ToListAsync();


            var comparativoMensal = (from mes in Enumerable.Range(1, 12)
                                     join venda in vendasFeitas
                                     on mes equals venda.Horario.Month into values
                                     from ord in values.DefaultIfEmpty()
                                     group ord by mes into vendasHorario
                                     select new DespesasViewModel()
            {
                TipoDeDespesa = vendasHorario.Key.ToString(),
                ValorDespesa = (decimal)vendasHorario.Sum(x => x is null ? 0 : x.Total)
            }).ToList();