예제 #1
0
 public IEnumerable<long> GetRunIds(Filter filter) {
   using (OKBDataContext okb = new OKBDataContext()) {
     return FilterRuns(okb.Runs, filter, okb).Select(x => x.Id).ToArray();
   }
 }
예제 #2
0
    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;
    }
예제 #3
0
 public long GetNumberOfRuns(Filter filter) {
   using (OKBDataContext okb = new OKBDataContext()) {
     return FilterRuns(okb.Runs, filter, okb).LongCount();
   }
 }