public ActionResult PesquisarOrcamentos(OrcamentoPesquisaFiltro filtro) { int totalRegistros = 0; if (string.IsNullOrEmpty(filtro.OrderBy)) { filtro.OrderBy = ""; } List <OrcamentoDTO> result = orcamentoAppService.PesquisarOrcamentosPeloFiltro(filtro, out totalRegistros); if (result.Any()) { var listaViewModel = CreateListaViewModel(filtro, totalRegistros, result); return(PartialView("ListaPesquisaPartial", listaViewModel)); } return(PartialView("_EmptyListPartial")); }
public List <OrcamentoDTO> PesquisarOrcamentosPeloFiltro(OrcamentoPesquisaFiltro filtro, out int totalRegistros) { var specification = (Specification <Domain.Entity.Orcamento.Orcamento>) new TrueSpecification <Domain.Entity.Orcamento.Orcamento>(); int?inicio; int?fim; specification &= OrcamentoSpecification.MatchingEmpresa(filtro.EmpresaId); specification &= OrcamentoSpecification.MatchingObra(filtro.ObraId); bool EhTipoSelecaoContem = filtro.TipoSelecao == TipoPesquisa.Contem; bool EhTipoSelecaoIntervalo = filtro.TipoSelecao == TipoPesquisa.Intervalo; switch (filtro.Campo) { case "sequencial": if (EhTipoSelecaoIntervalo) { inicio = !string.IsNullOrEmpty(filtro.TextoInicio) ? Convert.ToInt32(filtro.TextoInicio) : (int?)null; fim = !string.IsNullOrEmpty(filtro.TextoFim) ? Convert.ToInt32(filtro.TextoFim) : (int?)null; specification &= OrcamentoSpecification.SequencialNoIntervalo(inicio, fim); } break; case "descricao": specification &= EhTipoSelecaoContem ? OrcamentoSpecification.DescricaoContem(filtro.TextoInicio) : OrcamentoSpecification.DescricaoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "obra": specification &= EhTipoSelecaoContem ? OrcamentoSpecification.ObraNumeroContem(filtro.TextoInicio) : OrcamentoSpecification.ObraNumeroNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "empresa": specification &= EhTipoSelecaoContem ? OrcamentoSpecification.EmpresaNumeroContem(filtro.TextoInicio) : OrcamentoSpecification.EmpresaNumeroNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "centroCusto": specification &= EhTipoSelecaoContem ? OrcamentoSpecification.CentroCustoContem(filtro.TextoInicio) : OrcamentoSpecification.CentroCustoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "situacao": specification &= EhTipoSelecaoContem ? OrcamentoSpecification.SituacaoContem(filtro.TextoInicio) : OrcamentoSpecification.SituacaoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); break; case "data": Nullable <DateTime> datInicio = !string.IsNullOrEmpty(filtro.TextoInicio) ? Convert.ToDateTime(filtro.TextoInicio) : (Nullable <DateTime>)null; Nullable <DateTime> datFim = !string.IsNullOrEmpty(filtro.TextoFim) ? Convert.ToDateTime(filtro.TextoFim) : (Nullable <DateTime>)null; specification &= EhTipoSelecaoContem ? OrcamentoSpecification.DataContem(datInicio) : OrcamentoSpecification.DataNoIntervalo(datInicio, datFim); break; //case "simplificado": // specification &= EhTipoSelecaoContem ? OrcamentoSpecification.SimplificadoContem(filtro.TextoInicio) // : OrcamentoSpecification.SimplificadoNoIntervalo(filtro.TextoInicio, filtro.TextoFim); // break; default: break; } return(orcamentoRepository.Pesquisar(specification, filtro.PageIndex, filtro.PageSize, filtro.OrderBy, filtro.Ascending, out totalRegistros, l => l.Obra.CentroCusto, l => l.Empresa.ClienteFornecedor).To <List <OrcamentoDTO> >()); }