Example #1
0
        public IList <QuotaPlanejadoRealizadoVm> PlanejadoRealizado(RelatorioAgendamentoFiltroVm filtro)
        {
            AplicaFiltros(filtro);

            var quotas = (from quota in _quotas.GetQuery()
                          group quota by new { quota.CodigoTerminal, quota.Fornecedor.Codigo, quota.Fornecedor.Nome, quota.FluxoDeCarga }
                          into agrupador
                          select new
            {
                agrupador.Key,
                PlanejadoTotal = agrupador.Sum(x => x.PesoTotal),
                RealizadoTotal = agrupador.Sum(x => x.PesoRealizado)
            }).ToList();


            return(quotas.Select(x =>
                                 new QuotaPlanejadoRealizadoVm
            {
                CodigoTerminal = x.Key.CodigoTerminal,
                NomeDoFornecedor = x.Key.Codigo + " - " + x.Key.Nome,
                FluxoDeCarga = x.Key.FluxoDeCarga.Descricao(),
                Quota = x.PlanejadoTotal,
                PesoRealizado = x.RealizadoTotal
            }).ToList());
        }
Example #2
0
        private IQueryOver <Quota, Quota> ObtemQueryOverComFiltrosAplicados(RelatorioAgendamentoFiltroVm filtro)
        {
            IQueryOver <Quota, Quota> queryOver = _quotas.GetQueryOver();

            if (filtro.DataDe.HasValue)
            {
                queryOver = queryOver.Where(x => x.Data >= filtro.DataDe.Value);
            }
            if (filtro.DataAte.HasValue)
            {
                queryOver = queryOver.Where(x => x.Data <= filtro.DataAte.Value);
            }
            if (filtro.CodigoFluxoDeCarga.HasValue)
            {
                queryOver = queryOver.Where(x => x.FluxoDeCarga == (Enumeradores.FluxoDeCarga)
                                            Enum.Parse(typeof(Enumeradores.FluxoDeCarga), Convert.ToString(filtro.CodigoFluxoDeCarga.Value)));
            }
            if (!string.IsNullOrEmpty(filtro.CodigoFornecedor))
            {
                queryOver = queryOver.Where(x => x.Fornecedor.Codigo == filtro.CodigoFornecedor);
            }

            queryOver = queryOver.Where(x => x.CodigoTerminal == filtro.CodigoTerminal);

            return(queryOver);
        }
Example #3
0
        public IList <QuotaPlanejadoRealizadoPorDataVm> PlanejadoRealizadoPorData(RelatorioAgendamentoFiltroVm filtro)
        {
            //OBS: GROUP BY COM ORDER BY CAUSA UM ERRO UTILIZANDO IQUERYABLE (GetQuery).
            //Por isso tive que utilizar IQueryOver

            //var query = (from quota in _quotas.GetQuery()
            //              group quota by new { quota.CodigoTerminal, quota.Data, quota.Fornecedor.Codigo, quota.Fornecedor.Nome, quota.FluxoDeCarga }
            //                  into agrupador
            //                  select new
            //                  {
            //                      agrupador.Key,
            //                      PlanejadoTotal = agrupador.Sum(x => x.PesoTotal),
            //                      RealizadoTotal = agrupador.Sum(x => x.PesoRealizado)
            //                  }
            //                  ).ToList()
            //                  .OrderBy(x => new{x.Key.CodigoTerminal, x.Key.Data});


            IQueryOver <Quota, Quota> queryOver = ObtemQueryOverComFiltrosAplicados(filtro);
            Fornecedor fornec = null;

            queryOver = queryOver
                        .JoinAlias(x => x.Fornecedor, () => fornec)
                        .SelectList(list => list
                                    .SelectGroup(x => x.CodigoTerminal)
                                    .SelectGroup(x => x.Data)
                                    .SelectGroup(x => x.Fornecedor.Codigo)
                                    .SelectGroup(x => fornec.Nome)
                                    .SelectGroup(x => x.FluxoDeCarga)
                                    .SelectSum(x => x.PesoTotal)
                                    .SelectSum(x => x.PesoRealizado)
                                    ).OrderBy(x => x.CodigoTerminal).Asc.OrderBy(x => x.Data).Asc;

            //tive que utilizar um array de objetos porque na query que executa no banco ainda não tenho o método Descricao() do Enum.
            return(Enumerable.Select <object[], QuotaPlanejadoRealizadoPorDataVm>(queryOver
                                                                                  .List <object[]>(), properties => new QuotaPlanejadoRealizadoPorDataVm
            {
                CodigoTerminal = (string)properties[0],
                Data = ((DateTime)properties[1]).ToShortDateString(),
                NomeDoFornecedor = ((string)properties[2]) + " - " + (string)properties[3],
                FluxoDeCarga = ((Enumeradores.FluxoDeCarga)properties[4]).Descricao(),
                Quota = (decimal)properties[5],
                PesoRealizado = (decimal)properties[6]
            }).ToList());
        }
Example #4
0
        public IList <AgendamentoDeCargaRelatorioListarVm> ListagemDeAgendamentos(RelatorioAgendamentoFiltroVm filtro)
        {
            AplicaFiltros(filtro);
            string placa = filtro.Placa;

            if (!string.IsNullOrEmpty(placa))
            {
                placa = placa.Replace("-", "").ToLower();
            }

            var agendamentos = (from quota in _quotas.GetQuery()
                                from agendamento in quota.Agendamentos
                                where
                                (string.IsNullOrEmpty(filtro.Placa) ||
                                 agendamento.Placa.Replace("-", "").ToLower() == placa)
                                orderby quota.Data
                                select new
            {
                Terminal = quota.CodigoTerminal,
                quota.Data,
                Fornecedor = quota.Fornecedor.Codigo + " - " + quota.Fornecedor.Nome,
                quota.FluxoDeCarga,
                quota.Material,
                agendamento.Placa,
                Peso = agendamento.PesoTotal
            }
                                ).ToList();

            return(agendamentos.Select(x =>
                                       new AgendamentoDeCargaRelatorioListarVm
            {
                Terminal = x.Terminal,
                Data = x.Data.ToShortDateString(),
                Fornecedor = x.Fornecedor,
                FluxoDeCarga = x.FluxoDeCarga.Descricao(),
                Material = x.Material.Descricao(),
                Placa = x.Placa,
                Peso = x.Peso
            }).ToList());
        }
Example #5
0
        private void AplicaFiltros(RelatorioAgendamentoFiltroVm filtro)
        {
            if (filtro.DataDe.HasValue)
            {
                _quotas.APartirDe(filtro.DataDe.Value);
            }
            if (filtro.DataAte.HasValue)
            {
                _quotas.Ate(filtro.DataAte.Value);
            }
            if (filtro.CodigoFluxoDeCarga.HasValue)
            {
                _quotas.FiltraPorFluxo(
                    (Enumeradores.FluxoDeCarga)
                    Enum.Parse(typeof(Enumeradores.FluxoDeCarga), Convert.ToString(filtro.CodigoFluxoDeCarga.Value)));
            }
            if (!string.IsNullOrEmpty(filtro.CodigoFornecedor))
            {
                _quotas.DoFornecedor(filtro.CodigoFornecedor);
            }

            _quotas.DoTerminal(filtro.CodigoTerminal);
        }
Example #6
0
        public IList <QuotaCadastroVm> ListagemDeQuotas(RelatorioAgendamentoFiltroVm filtro)
        {
            AplicaFiltros(filtro);
            var quotas = (from quota in _quotas.GetQuery()
                          orderby quota.Data
                          select new
            {
                Terminal = quota.CodigoTerminal,
                Data = quota.Data.ToShortDateString(),
                quota.FluxoDeCarga,
                Fornecedor = quota.Fornecedor.Codigo + " - " + quota.Fornecedor.Nome,
                Peso = quota.PesoTotal
            }).ToList();

            return(quotas.Select(x =>
                                 new QuotaCadastroVm
            {
                Terminal = x.Terminal,
                Data = x.Data,
                Fornecedor = x.Fornecedor,
                FluxoDeCarga = x.FluxoDeCarga.Descricao(),
                Peso = x.Peso,
            }).ToList());
        }
Example #7
0
        public ActionResult GerarRelatorio(Enumeradores.RelatorioDeAgendamento relatorioDeAgendamento, RelatorioAgendamentoFiltroVm filtro)
        {
            ViewBag.Filtro = filtro;
            ViewBag.RelatorioDeAgendamento = relatorioDeAgendamento;
            switch (relatorioDeAgendamento)
            {
            case Enumeradores.RelatorioDeAgendamento.ListagemDeQuotas:
                ViewBag.TituloDoRelatorio = "Listagem de Quotas";
                IList <QuotaCadastroVm> quotasListadas = _consultaQuotaRelatorio.ListagemDeQuotas(filtro);
                return(View("ListagemDeQuotas", quotasListadas));

            case Enumeradores.RelatorioDeAgendamento.ListagemDeAgendamentos:
                ViewBag.TituloDoRelatorio = "Listagem de Agendamentos";
                IList <AgendamentoDeCargaRelatorioListarVm> agendamentosListados = _consultaQuotaRelatorio.ListagemDeAgendamentos(filtro);
                return(View("ListagemDeAgendamentos", agendamentosListados));

            case Enumeradores.RelatorioDeAgendamento.PlanejadoVersusRealizado:
                ViewBag.TituloDoRelatorio = "Agendamentos Planejado x Realizado";
                IList <QuotaPlanejadoRealizadoVm> quotas = _consultaQuotaRelatorio.PlanejadoRealizado(filtro);
                return(View("PlanejadoRealizado", quotas));

            case Enumeradores.RelatorioDeAgendamento.PlanejadoVersusRealizadoPorData:
                ViewBag.TituloDoRelatorio = "Agendamentos Planejado x Realizado por Data";
                IList <QuotaPlanejadoRealizadoPorDataVm> quotasPorData = _consultaQuotaRelatorio.PlanejadoRealizadoPorData(filtro);
                return(View("PlanejadoRealizadoPorData", quotasPorData));

            default:
                var contentResult = new ContentResult {
                    Content = "Opção Inválida"
                };
                return(contentResult);
            }
        }