public ActionResult Index(string termo, string chave, string menu) { if (!string.IsNullOrWhiteSpace(termo)) { var contas = _contaRepositorio.ObterContasPorDescricao(termo, (int?)ViewBag.UsuarioExternoId); var contatos = _contatoRepositorio.ObterContatosPorDescricao(termo, (int?)ViewBag.UsuarioExternoId); var mercadorias = _mercadoriaRepositorio.ObterMercadoriaPorDescricao(termo); var modelos = _modeloRepositorio.ObterModelosPorDescricao(termo); var oportunidades = _oportunidadeRepositorio.ObterOportunidadesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId); var subClientes = _oportunidadeRepositorio.ObterSubClientesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId); var clientesGrupo = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorDescricao(termo, (int?)ViewBag.UsuarioExternoId); var adendosSubClientes = _oportunidadeRepositorio.ObterAdendosPorSubClientes(termo, (int?)ViewBag.UsuarioExternoId); var servicos = _servicoRepositorio.ObterServicosPorDescricao(termo); return(View(new BuscaViewModel { Termo = termo, Contas = contas.ToList(), Contatos = contatos.ToList(), Mercadorias = mercadorias.ToList(), Modelos = modelos.ToList(), Oportunidades = oportunidades.ToList(), SubClientes = subClientes.ToList(), ClientesGrupoCNPJ = clientesGrupo.ToList(), Servicos = servicos.ToList(), AdendosSubClientes = adendosSubClientes.ToList() })); } if (!string.IsNullOrWhiteSpace(chave)) { var id = chave.ToInt(); Conta conta = new Conta(); Contato contato = new Contato(); Mercadoria mercadoria = new Mercadoria(); Modelo modelo = new Modelo(); Servico servico = new Servico(); Oportunidade oportunidade = new Oportunidade(); List <OportunidadeDTO> oportunidades = new List <OportunidadeDTO>(); List <ClientePropostaDTO> subClientes = new List <ClientePropostaDTO>(); List <ClientePropostaDTO> clientesGrupo = new List <ClientePropostaDTO>(); List <OportunidadeAdendoClientesDTO> adendosSubClientes = new List <OportunidadeAdendoClientesDTO>(); var viewModel = new BuscaViewModel(); switch (menu) { case "Contas": conta = _contaRepositorio.ObterContaPorId(id); if (ViewBag.UsuarioExternoId != null) { if (!_usuarioRepositorio.ExisteVinculoConta(conta.Id, ViewBag.UsuarioExternoId)) { break; } } if (conta != null) { viewModel.Contas.Add(conta); subClientes = _oportunidadeRepositorio.ObterSubClientesPorConta(conta.Id).ToList(); if (subClientes != null) { viewModel.SubClientes.AddRange(subClientes); } clientesGrupo = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorConta(conta.Id).ToList(); if (clientesGrupo != null) { viewModel.ClientesGrupoCNPJ.AddRange(clientesGrupo); } oportunidades = _oportunidadeRepositorio.ObterOportunidadesPorConta(conta.Id).ToList(); if (oportunidades != null) { viewModel.Oportunidades.AddRange(oportunidades); } } break; case "Contatos": contato = _contatoRepositorio.ObterContatoPorId(id); if (contato != null) { viewModel.Contatos.Add(contato); } break; case "Mercadorias": mercadoria = _mercadoriaRepositorio.ObterMercadoriaPorId(id); if (mercadoria != null) { viewModel.Mercadorias.Add(mercadoria); } break; case "Modelos": modelo = _modeloRepositorio.ObterModeloPorId(id); if (modelo != null) { viewModel.Modelos.Add(modelo); } break; case "Oportunidades": oportunidade = _oportunidadeRepositorio.ObterOportunidadePorId(id); if (ViewBag.UsuarioExternoId != null) { if (!_usuarioRepositorio.ExisteVinculoConta(oportunidade.ContaId, ViewBag.UsuarioExternoId)) { break; } } if (oportunidade != null) { viewModel.Oportunidades.Add(new OportunidadeDTO { Id = oportunidade.Id, Identificacao = oportunidade.Identificacao, Descricao = oportunidade.Descricao, ContaDescricao = oportunidade.Conta.Descricao, SucessoNegociacao = oportunidade.SucessoNegociacao, StatusOportunidade = oportunidade.StatusOportunidade }); } break; case "Serviços": servico = _servicoRepositorio.ObterServicoPorId(id); if (servico != null) { viewModel.Servicos.Add(servico); } break; default: break; } return(View(viewModel)); } return(RedirectToAction("Index", "Home")); }