public void ConsigoConsultarMateriaisComPrecoAtivo() { var consultaMaterial = ObjectFactory.GetInstance<IConsultaMaterial>(); var paginacao = new PaginacaoVm { Page = 1, PageSize = 10, Take = 10 }; var filtro = new MaterialFiltroVm { IdDoCliente = "0001000188", ComPrecoAtivo = true, IdDaAreaDeVenda = 336 }; KendoGridVm kendoGridVm = consultaMaterial.Listar(paginacao, filtro); Assert.AreEqual(545,kendoGridVm.QuantidadeDeRegistros); }
// pesquisa da tela public KendoGridVm Listar(PaginacaoVm paginacaoVm, MaterialFiltroVm filtro) { Material material = null; UnidadeDeMedida unidadeDeMedida = null; IQueryOver<Material, Material> queryOver = _unitOfWorkNh.Session.QueryOver(() => material); queryOver = queryOver.JoinAlias(x => x.UnidadeDeMedida, () => unidadeDeMedida); queryOver.Where( Restrictions.Disjunction() .Add(() => material.Eliminacao == null) .Add(() => material.Eliminacao != "X")); if (!string.IsNullOrEmpty(filtro.Tipo)) { queryOver = queryOver.Where(m => m.Tip_mat == filtro.Tipo); } if (!string.IsNullOrEmpty(filtro.Codigo)) { queryOver = queryOver.Where(m => m.Id_material.IsInsensitiveLike(filtro.Codigo, MatchMode.Anywhere)); } if (!string.IsNullOrEmpty(filtro.Descricao)) { queryOver = queryOver.Where(m => m.Descricao.IsInsensitiveLike(filtro.Descricao, MatchMode.Anywhere)); } CondicaoDePrecoGeral condicaoDePrecoGeral = null; if (filtro.ComPrecoAtivo) { ClienteVenda areaDeVenda = _areasDeVenda.ObterPorId(filtro.IdDaAreaDeVenda); queryOver = queryOver.Where(m => m.Id_centro == areaDeVenda.Org_vendas); QueryOver<CondicaoDePrecoGeral, CondicaoDePrecoGeral> subQueryCondicaoGeral = QueryOver.Of(() => condicaoDePrecoGeral) .Where(c => c.Org_vendas == areaDeVenda.Org_vendas) .And(c => c.Can_dist == areaDeVenda.Can_dist) .Select(Projections.Property(() => condicaoDePrecoGeral.Id_material)); var disjuncaoDasSubqueries = Restrictions.Disjunction() .Add(Subqueries.WhereProperty<Material>(m => m.Id_material).In(subQueryCondicaoGeral)); if (!string.IsNullOrEmpty(filtro.IdDoCliente)) { CondicaoDePrecoCliente condicaoDePrecoCliente = null; QueryOver<CondicaoDePrecoCliente, CondicaoDePrecoCliente> subQueryCondicaoCliente = QueryOver.Of(() => condicaoDePrecoCliente) .Where(() => condicaoDePrecoCliente.Id_cliente == filtro.IdDoCliente) .And(c => c.Org_vendas == areaDeVenda.Org_vendas) .And(c => c.Can_dist == areaDeVenda.Can_dist) .Select(Projections.Property(() => condicaoDePrecoCliente.Id_material)); disjuncaoDasSubqueries.Add(Subqueries.WhereProperty<Material>(m => m.Id_material).In(subQueryCondicaoCliente) ); Cliente cliente = _clientes.BuscaPeloCodigo(filtro.IdDoCliente).Single(); CondicaoDePrecoRegiao condicaoDePrecoRegiao = null; QueryOver<CondicaoDePrecoRegiao, CondicaoDePrecoRegiao> subQueryCondicaoRegiao = QueryOver.Of(() => condicaoDePrecoRegiao) .Where(() => condicaoDePrecoRegiao.Regiao == cliente.Uf) .Select(Projections.Property(() => condicaoDePrecoRegiao.Id_material)); disjuncaoDasSubqueries.Add(Subqueries.WhereProperty<Material>(m => m.Id_material).In(subQueryCondicaoRegiao)); } queryOver = queryOver.Where(disjuncaoDasSubqueries); } MaterialCadastroVm materialCadastroVm = null; queryOver.SelectList(lista => lista .Select(x => material.pro_id_material).WithAlias(() => materialCadastroVm.Id) .Select(x => material.Id_material).WithAlias(() => materialCadastroVm.Id_material) .Select(x => material.Descricao).WithAlias(() => materialCadastroVm.Descricao) .Select(x => material.Id_centro).WithAlias(() => materialCadastroVm.Centro) .Select(x => material.Tip_mat).WithAlias(() => materialCadastroVm.Tipo) //.Select(() => unidadeDeMedida.Descricao ) .WithAlias(() => materialCadastroVm.UnidadeMedida) //.Select(x => unidadeDeMedida.Id_unidademedida /*+ " - " + unidadeDeMedida.Descricao */) .WithAlias(() => materialCadastroVm.UnidadeMedida) .Select(Projections.SqlFunction("concat", NHibernateUtil.String, Projections.Property(() => unidadeDeMedida.Id_unidademedida), Projections.Constant(" - "), Projections.Property(() => unidadeDeMedida.Descricao))) .WithAlias(() => materialCadastroVm.UnidadeMedida) ); var kendoGridVm = new KendoGridVm() { QuantidadeDeRegistros = queryOver.RowCount(), Registros = queryOver .TransformUsing(Transformers.AliasToBean<MaterialCadastroVm>()) .Skip(paginacaoVm.Skip) .Take(paginacaoVm.Take) .List<MaterialCadastroVm>() .Cast<ListagemVm>() .ToList() }; return kendoGridVm; }
public JsonResult ListarMaterial(PaginacaoVm paginacaoVm, MaterialFiltroVm filtro) { KendoGridVm kendoGridVm = _consultaMaterial.Listar(paginacaoVm, filtro); return Json(kendoGridVm, JsonRequestBehavior.AllowGet); }