public async Task <IReadOnlyList <TestRunSessionResponse> > GetAll([FromQuery] SessionFilterRequest sessionFilter)
 {
     return(await _service.GetAllSessionsAsync(sessionFilter));
 }
示例#2
0
        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());
        }