public IList<Katapoka.DAO.Projeto_Tb> GetProjetosFiltro(int? idProjeto, int? idEmpresa, string dsNome, int? idUsuarioCriacao, DateTime? dtCriacao, OrdenacaoProjeto ordem, int skip = 0, int? take = null) { if (take == null) return GetQueryProjetos(idProjeto, idEmpresa, dsNome, idUsuarioCriacao, dtCriacao, ordem).Skip(skip).ToList(); return GetQueryProjetos(idProjeto, idEmpresa, dsNome, idUsuarioCriacao, dtCriacao, ordem).Skip(skip).Take(take.Value).ToList(); }
private IEnumerable<Katapoka.DAO.Projeto_Tb> GetQueryProjetos(int? idProjeto, int? idEmpresa, string dsNome, int? idUsuarioCriacao, DateTime? dtCriacao, OrdenacaoProjeto ordem) { var query = this.Context.Projeto_Tb.AsQueryable(); if (idProjeto != null) query = query.Where(p => p.IdProjeto == idProjeto.Value); if (idEmpresa != null) query = query.Where(p => p.IdEmpresa == idEmpresa.Value); if (!string.IsNullOrWhiteSpace(dsNome)) query = query.Where(p => p.DsNome.Contains(dsNome)); if (idUsuarioCriacao != null) query = query.Where(p => p.IdUsuarioCriacao == idUsuarioCriacao.Value); if (dtCriacao != null) query = query.Where(p => p.DtCriacao == dtCriacao.Value); Func<Katapoka.DAO.Projeto_Tb, object> paramOrdenacao = null; switch (ordem) { case OrdenacaoProjeto.EmpresaC: case OrdenacaoProjeto.EmpresaD: paramOrdenacao = p => p.Empresa_Tb.DsNomeFantasia; break; case OrdenacaoProjeto.IdC: case OrdenacaoProjeto.IdD: paramOrdenacao = p => p.IdEmpresa; break; case OrdenacaoProjeto.NomeProjetoC: case OrdenacaoProjeto.NomeProjetoD: paramOrdenacao = p => p.DsNome; break; } if (paramOrdenacao != null) { if (new OrdenacaoProjeto[] { OrdenacaoProjeto.EmpresaC, OrdenacaoProjeto.IdC, OrdenacaoProjeto.NomeProjetoC } .Contains(ordem)) return query.OrderBy(paramOrdenacao); else if (new OrdenacaoProjeto[] { OrdenacaoProjeto.EmpresaD, OrdenacaoProjeto.IdD, OrdenacaoProjeto.NomeProjetoD } .Contains(ordem)) return query.OrderByDescending(paramOrdenacao); else return query; //Nunca deve chegar nesse return, mas por via das dúvidas, deixa ele aí } else { return query; } }
public int GetCountProjetos(int? idProjeto, int? idEmpresa, string dsNome, int? idUsuarioCriacao, DateTime? dtCriacao, OrdenacaoProjeto ordem) { return GetQueryProjetos(idProjeto, idEmpresa, dsNome, idUsuarioCriacao, dtCriacao, ordem).Count(); }