public object ObterChamados([FromBody] FiltrosChamado filtros) { try { var chamados = _db.Chamado .Include(x => x.Protocolo) .Include(x => x.Beneficiario) .Include(x => x.Sub_categoria) .ThenInclude(x => x.Categoria_setor) .ThenInclude(x => x.Setor) .Select(x => new Chamado { Id = x.Id, ProtocoloId = x.ProtocoloId, BeneficiarioId = x.BeneficiarioId, Sub_CategoriaId = x.Sub_CategoriaId, Tp_chamado = x.Tp_chamado, Ds_assunto = x.Ds_assunto, St_registro_ativo = x.St_registro_ativo, Dt_criacao = x.Dt_criacao, Protocolo = x.Protocolo, Beneficiario = x.Beneficiario, Sub_categoria = x.Sub_categoria, Sla = ObterPrazoDoChamado(x.Dt_criacao, x.Tp_chamado, x.Sub_categoria).SLA, EstaNoSla = ObterPrazoDoChamado(x.Dt_criacao, x.Tp_chamado, x.Sub_categoria).EstaNoSLA, }) .SomenteDoFiltros(_db, filtros) .ToList(); return(Ok(new { chamados })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
private static IQueryable <int> ChamadosId(DbWorkFlow db, FiltrosChamado filtros) { return(db.Historico_chamado.Where(x => x.St_chamado == filtros.St_chamado).Select(x => x.ChamadoId)); }
public static IQueryable <Chamado> SomenteDoFiltros(this IQueryable <Chamado> queryble, DbWorkFlow db, FiltrosChamado filtros) { if (filtros == null) { return(queryble); } if (!string.IsNullOrEmpty(filtros.Nu_protocolo)) { queryble = queryble.Where(x => x.Protocolo.Nu_protocolo == filtros.Nu_protocolo); } if (!string.IsNullOrEmpty(filtros.St_chamado)) { var chamadosId = ChamadosId(db, filtros); queryble = queryble.Where(x => chamadosId.Contains(x.Id)); } if (!string.IsNullOrEmpty(filtros.CpfOuCnpj)) { queryble = queryble.Where(x => x.Beneficiario.Co_cpf_cnpj == filtros.CpfOuCnpj); } if (filtros.EstaNoSla != null) { queryble = queryble.Where(x => x.EstaNoSla == filtros.EstaNoSla.GetValueOrDefault()); } if (filtros.Dt_inicio != DateTime.MinValue && filtros.Dt_inicio != DateTime.MinValue) { queryble = queryble.Where(x => x.Dt_criacao >= filtros.Dt_inicio && x.Dt_criacao <= filtros.Dt_fim); } if (!string.IsNullOrEmpty(filtros.No_categoria)) { queryble = queryble.Where(x => x.Sub_categoria.Categoria_setor.No_categoria_setor == filtros.No_categoria); } if (!string.IsNullOrEmpty(filtros.Tp_chamado)) { queryble = queryble.Where(x => x.Tp_chamado == filtros.Tp_chamado); } if (!string.IsNullOrEmpty(filtros.Autor)) { queryble = queryble.Where(x => x.Beneficiario.No_beneficiario.Equals(filtros.Autor, StringComparison.InvariantCultureIgnoreCase)); } if (filtros.SetorOrigemId != 0) { var chamadosId = db.Historico_chamado.Where(x => x.SetorOrigemId == filtros.SetorOrigemId && x.St_chamado == Historico_chamado.TP_ABERTO).Select(x => x.ChamadoId); queryble = queryble.Where(x => chamadosId.Contains(x.Id)); } return(queryble); }