public ActionResult PesquisarMaterial(MaterialPesquisaFiltro filtro) { //var model = materialAppService.PesquisarMaterial(filtro); int totalRegistros; var result = materialAppService.PesquisarAtivosPeloFiltro(filtro, out totalRegistros); if (result.Any()) { var listaViewModel = CreateListaViewModel(filtro, totalRegistros, result); return(PartialView("ListaPesquisaPartial", listaViewModel)); } return(PartialView("_EmptyListPartial")); }
public List <MaterialDTO> PesquisarAtivosPeloFiltro(MaterialPesquisaFiltro filtro, out int totalRegistros) { var specification = (Specification <Material>) new TrueSpecification <Material>(); specification &= MaterialSpecification.EhAtivo(); specification &= ObterTipoTabelaSpecification(specification, filtro.CodigoCentroCusto); bool EhTipoSelecaoContem = filtro.TipoSelecao == TipoPesquisa.Contem; switch (filtro.Campo) { case "unidadeMedida": specification &= EhTipoSelecaoContem ? MaterialSpecification.UnidadeMedidaContem(filtro.TextoInicio) : MaterialSpecification.UnidadeMedidaNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "id": int?inicio = !string.IsNullOrEmpty(filtro.TextoInicio) ? Convert.ToInt32(filtro.TextoInicio) : (int?)null; int?fim = !string.IsNullOrEmpty(filtro.TextoFim) ? Convert.ToInt32(filtro.TextoFim) : (int?)null; specification &= EhTipoSelecaoContem ? MaterialSpecification.MatchingId(inicio) : MaterialSpecification.IdNoIntervalo(inicio, fim); break; case "classeInsumo": specification &= EhTipoSelecaoContem ? MaterialSpecification.ClasseInsumoContem(filtro.TextoInicio) : MaterialSpecification.ClasseInsumoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "codigoExterno": specification &= EhTipoSelecaoContem ? MaterialSpecification.CodigoExternoContem(filtro.TextoInicio) : MaterialSpecification.CodigoExternoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "descricao": default: specification &= EhTipoSelecaoContem ? MaterialSpecification.DescricaoContem(filtro.TextoInicio) : MaterialSpecification.DescricaoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; } return(materialRepository.Pesquisar( specification, filtro.PageIndex, filtro.PageSize, filtro.OrderBy, filtro.Ascending, out totalRegistros).To <List <MaterialDTO> >()); }