Exemplo n.º 1
0
        public async Task <IEnumerable <Movimento> > GetMovimentoWithItem(FilterMovim filter)
        {
            if (!IsFilterValid(filter))
            {
                return(null);
            }

            return(await _movimentoRepository.GetMovimentoWithItem(filter));
        }
        public async Task <IEnumerable <Movimento> > GetMovimentoWithItem(FilterMovim filter)
        {
            var item = _db.Set <ItemMovimento>();

            var movimento = await DBSet.AsNoTracking()
                            .Include(u => u.Usuario)
                            .Include(f => f.Frota)
                            //.Include(i => i.ItemMovimento).ThenInclude(x => x.ClienteProduto).ThenInclude(x => x.Cliente)
                            //.Include(i => i.ItemMovimento).ThenInclude(x => x.ClienteProduto).ThenInclude(x => x.Produto)
                            .Where(x => x.DataHoraInicial >= filter.DataHoraInicial && x.DataHoraInicial <= filter.DataHoraFinal.AddDays(1))
                            .ToListAsync();

            var cliprod = await _clienteProdutoRepository.GetAllWithInclude();

            var itemMovim = await item.AsNoTracking()
                            .GroupBy(x => new { x.ClienteProdutoId, x.MovimentoId })
                            .Select(g => new {
                ClienteProdutoId = g.Key.ClienteProdutoId,
                MovimentoId      = g.Key.MovimentoId,
                Qtd = g.Sum(x => x.Qtd)
            }).ToListAsync();

            movimento.ForEach(x =>
            {
                var group    = itemMovim.Where(i => i.MovimentoId == x.Id);
                var itemList = new List <ItemMovimento>();
                foreach (var item in group)
                {
                    var rel = cliprod.FirstOrDefault(r => r.Id == item.ClienteProdutoId);

                    var itMv = new ItemMovimento
                    {
                        ClienteProdutoId = item.ClienteProdutoId,
                        ClienteProduto   = rel,
                        MovimentoId      = item.MovimentoId,
                        Movimento        = x,
                        Qtd = item.Qtd
                    };

                    itemList.Add(itMv);
                }

                x.ItemMovimento = itemList;
            });

            return(movimento);
        }
Exemplo n.º 3
0
        private bool IsFilterValid(FilterMovim filter)
        {
            if (filter.DataHoraInicial == null)
            {
                Notify("Data inicial do filtro inválida.");
                return(false);
            }

            if (filter.DataHoraFinal == null)
            {
                Notify("Data final do filtro inválida.");
                return(false);
            }

            if (filter.DataHoraFinal < filter.DataHoraInicial)
            {
                Notify("Data final do filtro menor que data inicial.");
                return(false);
            }

            return(true);
        }