Example #1
0
        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");
        }
Example #2
0
        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));
        }
Example #3
0
 public bool FilterApplied(GetAvailableToStartStandardsListRequest request)
 {
     return(!string.IsNullOrEmpty(request.Keyword) || request.Levels.Any() || request.RouteIds.Any() || request.OrderBy != CoursesOrderBy.Score);
 }
Example #4
0
        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
            });
        }