public async Task <IReadOnlyList <TestRunSessionResponse> > GetAll([FromQuery] SessionFilterRequest sessionFilter) { return(await _service.GetAllSessionsAsync(sessionFilter)); }
public async Task <IReadOnlyList <TestRunSessionResponse> > GetAllSessionsAsync(SessionFilterRequest sessionFilter) { var query = _dbService.Query <TestRunSession>(); query = sessionFilter.StartedBefore.HasValue ? query.Where(x => x.StartTime < sessionFilter.StartedBefore.Value) : query; query = sessionFilter.StartedAfter.HasValue ? query.Where(x => x.StartTime > sessionFilter.StartedAfter.Value) : query; query = sessionFilter.CompletedBefore.HasValue ? query.Where(x => x.FinishTime.HasValue && x.FinishTime < sessionFilter.CompletedBefore.Value) : query; query = sessionFilter.CompletedAfter.HasValue ? query.Where(x => !x.FinishTime.HasValue || x.FinishTime > sessionFilter.CompletedAfter.Value) : query; var result = await query.MaterializeAllAsync(); var modifiedResult = string.IsNullOrWhiteSpace(sessionFilter.ProjectName) ? result : result.Where(x => string.Equals(x.ProductBuild.TeamProject, sessionFilter.ProjectName, StringComparison.OrdinalIgnoreCase)); modifiedResult = sessionFilter.Skip.HasValue ? modifiedResult.SkipLast(sessionFilter.Skip.Value) : modifiedResult; modifiedResult = sessionFilter.Top.HasValue ? modifiedResult.TakeLast(sessionFilter.Top.Value) : modifiedResult; return(modifiedResult.ToList()); }