public void Then_The_Url_Is_Correctly_Constructed_Without_RouteIds_And_Levels( string keyword) { var orderBy = CoursesOrderBy.Score; var actual = new GetAvailableToStartStandardsListRequest { Keyword = keyword, OrderBy = orderBy }; actual.GetUrl.Should() .Be($"api/courses/standards?keyword={keyword}&orderby={orderBy}&filter=ActiveAvailable"); }
public void Then_The_Url_Is_Correctly_Constructed( List <int> routeIds, List <int> levels, string keyword) { var orderBy = CoursesOrderBy.Title; var actual = new GetAvailableToStartStandardsListRequest { Keyword = keyword, RouteIds = routeIds, Levels = levels, OrderBy = orderBy }; actual.GetUrl.Should() .Be($"api/courses/standards?keyword={keyword}&orderby={orderBy}&filter=ActiveAvailable&routeIds=" + string.Join("&routeIds=", routeIds) + "&levels=" + string.Join("&levels=", levels)); }
public bool FilterApplied(GetAvailableToStartStandardsListRequest request) { return(!string.IsNullOrEmpty(request.Keyword) || request.Levels.Any() || request.RouteIds.Any() || request.OrderBy != CoursesOrderBy.Score); }
public async Task <GetTrainingCoursesListResult> Handle(GetTrainingCoursesListQuery request, CancellationToken cancellationToken) { var taskList = new List <Task>(); bool saveStandardsToCache; var sectors = await _cacheHelper.GetRequest <GetRoutesListResponse>(_apiClient, new GetRoutesListRequest(), nameof(GetRoutesListResponse), out var saveSectorsToCache); var routeFilters = sectors .Routes .Where(c => request.RouteIds.Contains(c.Name)).Select(x => x.Id) .ToList(); var standardsRequest = new GetAvailableToStartStandardsListRequest { Keyword = request.Keyword, RouteIds = routeFilters, Levels = request.Levels, OrderBy = (CoursesOrderBy)request.OrderBy }; Task <GetStandardsListResponse> standardsTask; if (_cacheHelper.FilterApplied(standardsRequest)) { standardsTask = _apiClient.Get <GetStandardsListResponse>(standardsRequest); saveStandardsToCache = false; taskList.Add(standardsTask); } else { standardsTask = _cacheHelper.GetRequest <GetStandardsListResponse>(_apiClient, new GetAvailableToStartStandardsListRequest { Keyword = request.Keyword, RouteIds = routeFilters, Levels = request.Levels, OrderBy = (CoursesOrderBy)request.OrderBy }, nameof(GetStandardsListResponse), out saveStandardsToCache); taskList.Add(standardsTask); } var levelsTask = _cacheHelper.GetRequest <GetLevelsListResponse>(_apiClient, new GetLevelsListRequest(), nameof(GetLevelsListResponse), out var saveLevelsToCache); taskList.Add(levelsTask); var shortlistItemCountTask = _shortlistService.GetShortlistItemCount(request.ShortlistUserId); taskList.Add(shortlistItemCountTask); await Task.WhenAll(taskList); await _cacheHelper.UpdateCachedItems(Task.FromResult(sectors), levelsTask, standardsTask, new CacheHelper.SaveToCache { Levels = saveLevelsToCache, Sectors = saveSectorsToCache, Standards = saveStandardsToCache }); return(new GetTrainingCoursesListResult { Courses = standardsTask.Result.Standards, Sectors = sectors.Routes, Levels = levelsTask.Result.Levels, Total = standardsTask.Result.Total, TotalFiltered = standardsTask.Result.TotalFiltered, OrderBy = request.OrderBy, ShortlistItemCount = shortlistItemCountTask.Result }); }