public KendoGridVm ListarTransportadoras(PaginacaoVm paginacaoVm, TransportadoraFiltroVm filtro) { IQueryOver<Fornecedor, Fornecedor> queryOverRetorno; IQueryOver<Fornecedor, Fornecedor> queryOverBase = AplicarFiltros(filtro,false); queryOverBase = queryOverBase.And(f => f.Grupo_contas == "ZTRA"); Fornecedor fornecedor = null; TransportadoraDoCliente transportadoraDoCliente = null; QueryOver<TransportadoraDoCliente, TransportadoraDoCliente> subQueryCliente = QueryOver.Of(() => transportadoraDoCliente) .Where(Restrictions.EqProperty(Projections.Property(() => fornecedor.Codigo), Projections.Property(() => transportadoraDoCliente.Transportadora.Codigo))) .And(x => x.TipoDeParceiro == filtro.TipoDeParceiro) .And(x => x.Cliente.Id_cliente == filtro.IdDoCliente) .Select(Projections.Property(() => transportadoraDoCliente.TipoDeParceiro)); var queryCliente = queryOverBase.Clone().WithSubquery.WhereExists(subQueryCliente); queryOverRetorno = queryCliente; int quantidadeDeTransportadoras = queryCliente.RowCount(); Usuario usuarioConectado = _usuarios.UsuarioConectado(); if (quantidadeDeTransportadoras > 0) { if (filtro.IdDaAreaDeVenda.HasValue) { AplicarFiltroDeAreaDeVenda(queryCliente, filtro.IdDaAreaDeVenda.Value); quantidadeDeTransportadoras = queryCliente.RowCount(); } queryOverRetorno = queryCliente; } else if (!string.IsNullOrEmpty(usuarioConectado.CodigoDoFornecedor)) { TransportadoraDoRepresentante transportadoraDoRepresentante = null; QueryOver<TransportadoraDoRepresentante, TransportadoraDoRepresentante> subQuery = QueryOver.Of(() => transportadoraDoRepresentante) .Where(Restrictions.EqProperty(Projections.Property(() => fornecedor.Codigo), Projections.Property(() => transportadoraDoRepresentante.Transportadora.Codigo))) .And(x => x.TipoDeParceiro == filtro.TipoDeParceiro) .And(x => x.Representante.Codigo == usuarioConectado.CodigoDoFornecedor) .Select(Projections.Property(() => transportadoraDoRepresentante.TipoDeParceiro)); var queryOverRepresentante = queryOverBase.Clone().WithSubquery.WhereExists(subQuery); if (filtro.IdDaAreaDeVenda.HasValue) { AplicarFiltroDeAreaDeVenda(queryOverRepresentante, filtro.IdDaAreaDeVenda.Value); } quantidadeDeTransportadoras = queryOverRepresentante.RowCount(); queryOverRetorno = queryOverRepresentante; } var kendoGridVm = new KendoGridVm { QuantidadeDeRegistros = quantidadeDeTransportadoras, Registros = _builderFornecedor.BuildList(queryOverRetorno.Skip(paginacaoVm.Skip).Take(paginacaoVm.Take).List()) .Cast<ListagemVm>() .ToList() }; return kendoGridVm; }
public JsonResult ListarTransportadoras(PaginacaoVm paginacaoVm, TransportadoraFiltroVm filtro) { KendoGridVm kendoGridVm = _consultaFornecedor.ListarTransportadoras(paginacaoVm, filtro); return Json(kendoGridVm, JsonRequestBehavior.AllowGet); }