public KendoGridVm Listar(PaginacaoVm paginacaoVm, ProcessoCotacaoFiltroVm filtro)
        {
            _processosDeCotacao.FiltraPorTipo(Enumeradores.TipoDeCotacao.Frete);
            if (filtro.CodigoFornecedor != null)
            {
                _processosDeCotacao
                .DesconsideraNaoIniciados()
                .FiltraPorFornecedor(filtro.CodigoFornecedor);
            }

            _processosDeCotacao.CodigoDoProdutoContendo(filtro.CodigoProduto)
            .DescricaoDoProdutoContendo(filtro.DescricaoProduto);

            if (filtro.CodigoStatusProcessoCotacao.HasValue)
            {
                _processosDeCotacao.FiltraPorStatus(
                    (Enumeradores.StatusProcessoCotacao)
                    Enum.Parse(typeof(Enumeradores.StatusProcessoCotacao),
                               Convert.ToString(filtro.CodigoStatusProcessoCotacao.Value)));
            }

            var query = (from p in _processosDeCotacao.GetQuery()
                         from item in p.Itens
                         orderby p.Status
                         select new
            {
                CodigoMaterial = item.Produto.Codigo,
                Material = item.Produto.Descricao,
                DataTermino = p.DataLimiteDeRetorno,
                Id = p.Id,
                Quantidade = item.Quantidade,
                Status = p.Status,
                UnidadeDeMedida = item.UnidadeDeMedida.Descricao
            }
                         );

            var quantidadeDeRegistros = query.Count();

            var registros = query.Skip(paginacaoVm.Skip).Take(paginacaoVm.Take).ToList()
                            .Select(x => new ProcessoCotacaoMaterialListagemVm()
            {
                Id             = x.Id,
                CodigoMaterial = x.CodigoMaterial,
                Material       = x.Material,
                DataTermino    =
                    x.DataTermino.HasValue ? x.DataTermino.Value.ToShortDateString() : "",
                Quantidade      = x.Quantidade,
                Status          = x.Status.Descricao(),
                UnidadeDeMedida = x.UnidadeDeMedida
            }).Cast <ListagemVm>().ToList();

            var kendoGridVm = new KendoGridVm()
            {
                QuantidadeDeRegistros = quantidadeDeRegistros,
                Registros             = registros
            };

            return(kendoGridVm);
        }
        public JsonResult Listar(PaginacaoVm paginacaoVm, ProcessoCotacaoFiltroVm filtro)
        {
            var usuarioConectado = ObjectFactory.GetInstance <UsuarioConectado>();

            if (usuarioConectado.Perfis.Contains(Enumeradores.Perfil.Fornecedor))
            {
                filtro.CodigoFornecedor = usuarioConectado.Login;
            }

            var kendoGridVm = _consultaProcessoDeCotacaoDeMaterial.Listar(paginacaoVm, filtro);

            return(Json(new { registros = kendoGridVm.Registros, totalCount = kendoGridVm.QuantidadeDeRegistros }, JsonRequestBehavior.AllowGet));
        }
        public KendoGridVm Listar(PaginacaoVm paginacaoVm, ProcessoCotacaoFiltroVm filtro)
        {
            _processosDeCotacao.FiltraPorTipo(Enumeradores.TipoDeCotacao.Material);
            if (filtro.CodigoFornecedor != null)
            {
                _processosDeCotacao
                .DesconsideraNaoIniciados()
                .FiltraPorFornecedor(filtro.CodigoFornecedor);
            }

            _processosDeCotacao.CodigoDoProdutoContendo(filtro.CodigoProduto)
            .DescricaoDoProdutoContendo(filtro.DescricaoProduto);

            if (filtro.CodigoStatusProcessoCotacao.HasValue)
            {
                _processosDeCotacao.FiltraPorStatus((Enumeradores.StatusProcessoCotacao)Enum.Parse(typeof(Enumeradores.StatusProcessoCotacao), Convert.ToString(filtro.CodigoStatusProcessoCotacao.Value)));
            }

            var query = _processosDeCotacao.GetQuery();

            query = query.OrderBy(x => x.Status);

            var quantidadeDeRegistros = query.Count();

            var processosListados = query.Skip(paginacaoVm.Skip).Take(paginacaoVm.Take).ToList();

            var registros = (from x in processosListados
                             let material = String.Join(", ", x.Itens.Select(i => i.Produto.Descricao))
                                            select
                                            new ProcessoCotacaoMaterialListagemVm()
            {
                Id = x.Id,
                //CodigoMaterial = x.CodigoMaterial,
                Material = string.IsNullOrEmpty(material) ? "Sem Materiais": material,
                DataTermino = x.DataLimiteDeRetorno.HasValue ? x.DataLimiteDeRetorno.Value.ToShortDateString(): "",
                //Quantidade = x.Quantidade,
                Status = x.Status.Descricao(),
                //UnidadeDeMedida = x.UnidadeDeMedida
            }).Cast <ListagemVm>().ToList();

            var kendoGridVm = new KendoGridVm()
            {
                QuantidadeDeRegistros = quantidadeDeRegistros,
                Registros             = registros
            };

            return(kendoGridVm);
        }