public IEnumerable<long> GetRunIds(Filter filter) { using (OKBDataContext okb = new OKBDataContext()) { return FilterRuns(okb.Runs, filter, okb).Select(x => x.Id).ToArray(); } }
private List<DataAccess.Run> FilterRuns(IQueryable<DataAccess.Run> runs, Filter filter, OKBDataContext okb) { IFilter f = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter); var query = runs.Where(f.Expression); List<DataAccess.Run> results = new List<DataAccess.Run>(); if (roleVerifier.IsInRole(OKBRoles.OKBAdministrator)) { results.AddRange(query); } else { foreach (DataAccess.Run r in query) { if (IsAuthorizedForAlgorithm(r.AlgorithmId, okb) && IsAuthorizedForProblem(r.ProblemId, okb)) { results.Add(r); } } } return results; }
public long GetNumberOfRuns(Filter filter) { using (OKBDataContext okb = new OKBDataContext()) { return FilterRuns(okb.Runs, filter, okb).LongCount(); } }