Inquiridor
Dificuldade em filtrar informações

Pergunta
-
Sei que meu problema é lógica e isso deve partir de mim, eu sei, mas às vezes uma luz, não um código pronto, mas o apontar de um caminho nos ajuda bastante.
1) Tenho 6 ComboBox em minha View que fazem os filtros para uma pesquisa.
2) Essa pesquisa, deverá montar uns CheckBox's, baseado no filtro passado. Acontece que essa montagem dos checkbox's, a LINQ que trás o resultado é a minha model. Alguns me disseram aqui que passar parâmetro direto para a Model, quebra o paradigma da OO e concordo. Nesse momento começa meu problema.
3) Estou tendo dificuldade para fazer isso. Preencho os parâmetros na View e via JQuery eu os pego. Agora como eu faço para distribuir para a minha model, de forma que a LINQ seja executada com esses filtros sendo passados no where da LINQ ou Lambda. Abaixo minha Model.
public static List<MontaArvoreAcao> montaArvoreAcao( ) { RupturaEntities db = new RupturaEntities(); var monta_arvore = (from rup in db.Ruptura join ap in db.Apresentacao on rup.Codigo_Apresentacao equals (ap.Codigo_Apresentacao) join mo in db.Motivo on rup.IDMotivo equals (mo.IDMotivo) join pdv in db.PDV on rup.CodigoPDV equals (pdv.CodigoPDV) where rup.IDMotivo != 6 //group rup by new { rup.IDRuptura} into gr select new MontaArvoreAcao { IDRuptura = rup.IDRuptura, DataRuptura = rup.DataRuptura, IDMotivo = rup.IDMotivo, Motivo = rup.Motivo.Motivo1, IDOrigem = rup.IDOrigem, CodigoPDV = rup.CodigoPDV, UF = rup.PDV.UF, Cidade = pdv.Cidade, CnpjDescricao = pdv.Cnpj + " - " + pdv.Descricao, Codigo_Apresentacao = rup.Codigo_Apresentacao, Unidade_Negocio = ap.Unidade_Negocio, Codigo_Unidade_Negocio = ap.Codigo_Unidade_Negocio, Franquia = ap.Franquia, Familia = ap.Familia, Descricao = ap.Descricao, Tipo_Rede = pdv.Tipo_PDV, Farmacia = pdv.Descricao }).ToList().OrderBy(r => r.IDMotivo); return monta_arvore.ToList(); }
Os parâmetros vindo da View são:
Estado, Cidade, Tipo_PDV, Descricao, UN, Familia de Produto.
Todas as Respostas
-
Alterei a minha Action para receber parâmetros, conforme vocês estão vendo. Como eu passo?
public ActionResult Acao(string _uf, string _cidade, string _descricao)
{
string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\')[1].Trim();
ViewBag.User = user;
ViewData["ListaUn"] = MontaArvoreAcao.CriarListaArvoreUn(_uf,_cidade,_descricao);
ViewData["ListaFamilia"] = MontaArvoreAcao.CriarListaArvoreFamilia();
ViewData["ListaProd"] = MontaArvoreAcao.CriarListaArvoreProduto();
ViewData["ListaPdv"] = MontaArvoreAcao.CriarListaArvorePdv();
return View(MontaArvoreAcao.montaArvoreAcao());
} -
Lembrei-me que via jquery eu faço isso. Já está resolvido.
function.....
$.ajax({
url: '/Controller/Action',
......
data: JSON.stringify({ _uf: $('#cbxUf').val(), _cidade: $('#cbxCidade :selected').text(), _descricao: $('#cbxDescricao :selected').text() }),
E assim por diante
})