示例#1
0
        public Task <TResponse> GetRequest <TResponse>(ICoursesApiClient <CoursesApiConfiguration> client, IGetApiRequest request, string keyName, out bool updateCache)
        {
            Task <TResponse> itemsTask;

            updateCache = false;

            var itemFromCache = _cacheStorageService.RetrieveFromCache <TResponse>(keyName).Result;

            if (itemFromCache != null)
            {
                itemsTask = Task.FromResult(itemFromCache);

                if (itemFromCache.GetType() == typeof(GetStandardsListResponse))
                {
                    if (itemFromCache is GetStandardsListResponse castItem && castItem.Total < 1)
                    {
                        itemsTask   = client.Get <TResponse>(request);
                        updateCache = true;
                    }
                }
            }
            else
            {
                itemsTask   = client.Get <TResponse>(request);
                updateCache = true;
            }

            return(itemsTask);
        }
        public async Task <GetRoutesListResponse> GetRoutes()
        {
            var response = await _cacheStorageService.RetrieveFromCache <GetRoutesListResponse>(nameof(GetRoutesListResponse));

            if (response == null)
            {
                response = await _coursesApiClient.Get <GetRoutesListResponse>(new GetRoutesListRequest());

                await _cacheStorageService.SaveToCache(nameof(GetRoutesListResponse), response, 23);
            }

            return(response);
        }
示例#3
0
        public async Task <GetTrainingCourseProvidersResult> Handle(GetTrainingCourseProvidersQuery request, CancellationToken cancellationToken)
        {
            var locationTask = _locationLookupService.GetLocationInformation(request.Location, request.Lat, request.Lon);

            var courseTask = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));

            var shortlistTask = _shortlistService.GetShortlistItemCount(request.ShortlistUserId);

            await Task.WhenAll(locationTask, courseTask, shortlistTask);

            var showEmployerDemand = _config.EmployerDemandFeatureToggle && await _employerDemandApiClient.GetResponseCode(new GetShowEmployerDemandRequest()) == HttpStatusCode.OK;

            var providers = await _courseDeliveryApiClient.Get <GetProvidersListResponse>(new GetProvidersByCourseRequest(
                                                                                              request.Id,
                                                                                              courseTask.Result.SectorSubjectAreaTier2Description,
                                                                                              courseTask.Result.Level,
                                                                                              locationTask.Result?.GeoPoint?.FirstOrDefault(),
                                                                                              locationTask.Result?.GeoPoint?.LastOrDefault(),
                                                                                              request.SortOrder,
                                                                                              request.ShortlistUserId));

            return(new GetTrainingCourseProvidersResult
            {
                Course = courseTask.Result,
                Providers = providers.Providers,
                Total = providers.TotalResults,
                Location = locationTask.Result,
                ShortlistItemCount = shortlistTask.Result,
                ShowEmployerDemand = showEmployerDemand
            });
        }
示例#4
0
        public async Task <GetEmployerCourseProviderDemandQueryResult> Handle(GetEmployerCourseProviderDemandQuery request, CancellationToken cancellationToken)
        {
            var courseTask             = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.CourseId));
            var locationTask           = _locationLookupService.GetLocationInformation(request.LocationName, 0, 0, true);
            var providerCourseInfoTask =
                _courseDeliveryApiClient.Get <GetProviderCourseInformation>(
                    new GetProviderCourseInformationRequest(request.Ukprn, request.CourseId));

            await Task.WhenAll(courseTask, locationTask, providerCourseInfoTask);

            var radius = locationTask.Result != null ? request.LocationRadius : null;

            var demand = await _employerDemandApiClient.Get <GetEmployerCourseProviderListResponse>(
                new GetCourseProviderDemandsRequest(request.Ukprn, request.CourseId,
                                                    locationTask.Result?.GeoPoint?.FirstOrDefault(), locationTask.Result?.GeoPoint?.LastOrDefault(),
                                                    radius));

            return(new GetEmployerCourseProviderDemandQueryResult
            {
                Course = courseTask.Result,
                Location = locationTask.Result,
                EmployerCourseDemands = demand.EmployerCourseDemands,
                Total = demand.Total,
                TotalFiltered = demand.TotalFiltered,
                ProviderDetail = providerCourseInfoTask.Result
            });
        }
示例#5
0
        public async Task <GetTrainingCourseResult> Handle(GetTrainingCourseQuery request, CancellationToken cancellationToken)
        {
            var location = await _locationLookupService.GetLocationInformation(request.LocationName, request.Lat, request.Lon);

            var standardTask = _apiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));

            var providersTask = _courseDeliveryApiClient.Get <GetUkprnsForStandardAndLocationResponse>(new GetUkprnsForStandardAndLocationRequest(request.Id, location?.GeoPoint?.First() ?? 0, location?.GeoPoint?.Last() ?? 0));

            var levelsTask = _cacheHelper.GetRequest <GetLevelsListResponse>(_apiClient,
                                                                             new GetLevelsListRequest(), nameof(GetLevelsListResponse), out _);

            var shortlistTask = _shortlistService.GetShortlistItemCount(request.ShortlistUserId);

            await Task.WhenAll(standardTask, providersTask, levelsTask, shortlistTask);

            if (standardTask.Result == null)
            {
                return(new GetTrainingCourseResult());
            }

            standardTask.Result.LevelEquivalent = levelsTask.Result.Levels.SingleOrDefault(x => x.Code == standardTask.Result.Level)?.Name;

            return(new GetTrainingCourseResult
            {
                Course = standardTask.Result,
                ProvidersCount = providersTask.Result.UkprnsByStandard.ToList().Count,
                ProvidersCountAtLocation = providersTask.Result.UkprnsByStandardAndLocation.ToList().Count,
                ShortlistItemCount = shortlistTask.Result
            });
        }
        public async Task <GetTrainingCourseResult> Handle(GetTrainingCourseQuery request, CancellationToken cancellationToken)
        {
            var standardTask = _apiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));

            var providersTask = _courseDeliveryApiClient.Get <GetUkprnsForStandardAndLocationResponse>(new GetUkprnsForStandardAndLocationRequest(request.Id, request.Lat, request.Lon));

            var levelsTask = _cacheHelper.GetRequest <GetLevelsListResponse>(_apiClient,
                                                                             new GetLevelsListRequest(), nameof(GetLevelsListResponse), out _);

            var shortlistTask = _shortlistService.GetShortlistItemCount(request.ShortlistUserId);

            var showEmployerDemand = _config.EmployerDemandFeatureToggle && (await _employerDemandApiClient.GetResponseCode(new GetShowEmployerDemandRequest())) == HttpStatusCode.OK;

            await Task.WhenAll(standardTask, providersTask, levelsTask, shortlistTask);

            if (standardTask.Result == null)
            {
                return(new GetTrainingCourseResult());
            }

            standardTask.Result.LevelEquivalent = levelsTask.Result.Levels.SingleOrDefault(x => x.Code == standardTask.Result.Level)?.Name;

            return(new GetTrainingCourseResult
            {
                Course = standardTask.Result,
                ProvidersCount = providersTask.Result.UkprnsByStandard.ToList().Count,
                ProvidersCountAtLocation = providersTask.Result.UkprnsByStandardAndLocation.ToList().Count,
                ShortlistItemCount = shortlistTask.Result,
                ShowEmployerDemand = showEmployerDemand
            });
        }
        public async Task <GetStandardsListItem> Handle(GetStandardQuery request, CancellationToken cancellationToken)
        {
            var course = await _coursesApiClient.Get <GetStandardsListItem>(
                new GetStandardDetailsByIdRequest(request.CourseCode));

            return(course);
        }
示例#8
0
        public async Task <GetCourseEpaosResult> Handle(GetCourseEpaosQuery request, CancellationToken cancellationToken)
        {
            var epaosTask = _assessorsApiClient.GetAll <GetCourseEpaoListItem>(
                new GetCourseEpaosRequest
            {
                CourseId = request.CourseId
            });

            var courseTask = _coursesApiClient.Get <GetStandardsListItem>(
                new GetStandardRequest(request.CourseId));

            await Task.WhenAll(epaosTask, courseTask);

            _logger.LogDebug($"Found [{epaosTask.Result.Count()}] EPAOs for Course Id:[{request.CourseId}].");

            var filteredEpaos = epaosTask.Result
                                .Where(_courseEpaoIsValidFilterService.IsValidCourseEpao)
                                .ToList();

            _logger.LogDebug($"Found [{filteredEpaos.Count}] EPAOs for Course Id:[{request.CourseId}] after filtering.");

            return(new GetCourseEpaosResult
            {
                Epaos = filteredEpaos.OrderBy(item => item.Name),
                Course = courseTask.Result
            });
        }
示例#9
0
        public async Task <GetRestartEmployerDemandQueryResult> Handle(GetRestartEmployerDemandQuery request, CancellationToken cancellationToken)
        {
            var expiredDemandTask =
                _demandApiClient.Get <GetEmployerDemandResponse>(
                    new GetEmployerDemandByExpiredDemandRequest(request.Id));

            var demandTask =
                _demandApiClient.Get <GetEmployerDemandResponse>(
                    new GetEmployerDemandRequest(request.Id));

            await Task.WhenAll(expiredDemandTask, demandTask);

            var coursesResult = await _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(demandTask.Result.Course.Id));

            if (expiredDemandTask.Result != null)
            {
                return(new GetRestartEmployerDemandQueryResult
                {
                    EmployerDemand = expiredDemandTask.Result,
                    RestartDemandExists = true,
                    LastStartDate = coursesResult.StandardDates.LastDateStarts
                });
            }

            return(new GetRestartEmployerDemandQueryResult
            {
                EmployerDemand = demandTask.Result,
                RestartDemandExists = false,
                LastStartDate = coursesResult.StandardDates.LastDateStarts
            });
        }
        public async Task <GetTrainingProgrammesQueryResult> Handle(GetTrainingProgrammesQuery request, CancellationToken cancellationToken)
        {
            var frameworksTask = _coursesApiClient.Get <GetFrameworksListResponse>(new GetFrameworksRequest());
            var standardsTask  = _coursesApiClient.Get <GetStandardsListResponse>(new GetActiveStandardsListRequest());

            await Task.WhenAll(frameworksTask, standardsTask);

            var trainingProgrammes = new List <TrainingProgramme>();

            trainingProgrammes.AddRange(frameworksTask.Result.Frameworks?.Select(item => (TrainingProgramme)item) ?? Array.Empty <TrainingProgramme>());
            trainingProgrammes.AddRange(standardsTask.Result.Standards?.Select(item => (TrainingProgramme)item) ?? Array.Empty <TrainingProgramme>());

            return(new GetTrainingProgrammesQueryResult
            {
                TrainingProgrammes = trainingProgrammes
            });
        }
        public async Task <GetStandardsResult> Handle(GetStandardsQuery request, CancellationToken cancellationToken)
        {
            var standards = await _coursesApiClient.Get <GetStandardsListResponse>(new GetStandardsExportRequest());

            return(new GetStandardsResult
            {
                Standards = standards.Standards
            });
        }
示例#12
0
        public async Task <GetStandardsQueryResult> Handle(GetStandardsQuery request, CancellationToken cancellationToken)
        {
            var response = await _coursesApiClient.Get <GetStandardsListResponse>(new GetActiveStandardsListRequest());

            return(new GetStandardsQueryResult
            {
                Standards = response.Standards
            });
        }
示例#13
0
        public async Task <GetTrainingCoursesResult> Handle(GetTrainingCoursesQuery request, CancellationToken cancellationToken)
        {
            var courses = await _coursesApiClient.Get <GetStandardsListResponse>(new GetStandardsRequest());

            return(new GetTrainingCoursesResult
            {
                Courses = courses.Standards
            });
        }
示例#14
0
        public async Task <GetStartCourseDemandQueryResult> Handle(GetStartCourseDemandQuery request, CancellationToken cancellationToken)
        {
            var result = await _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.CourseId));

            return(new GetStartCourseDemandQueryResult
            {
                Course = result
            });
        }
示例#15
0
        public async Task <GetFrameworksResult> Handle(GetFrameworksQuery request, CancellationToken cancellationToken)
        {
            var response = await _coursesApiClient.Get <GetFrameworksListResponse>(new GetFrameworksRequest());

            return(new GetFrameworksResult
            {
                Frameworks = response.Frameworks
            });
        }
示例#16
0
        public async Task <GetFrameworkCoursesResult> Handle(GetFrameworkCoursesQuery request, CancellationToken cancellationToken)
        {
            var frameworks = await _coursesApiClient.Get <GetFrameworksListResponse>(new GetFrameworksRequest());

            return(new GetFrameworkCoursesResult
            {
                Frameworks = frameworks.Frameworks.Where(f => f.IsActiveFramework && f.FundingPeriods.Count > 0)
            });
        }
示例#17
0
        private async Task <List <Course> > GetAllCoursesFromApi()
        {
            var standardsResponseTask  = _coursesApiClient.Get <GetStandardsListResponse>(new GetAllStandardsRequest());
            var frameworksResponseTask = _coursesApiClient.Get <GetFrameworksListResponse>(new GetFrameworksRequest());

            await Task.WhenAll(standardsResponseTask, frameworksResponseTask);

            var standardCourses = standardsResponseTask.Result.Standards.Select(x => new Course
            {
                Id = x.LarsCode.ToString(), Level = x.Level, Title = x.Title
            }).ToList();

            var frameworkCourses = frameworksResponseTask.Result.Frameworks.Select(x => new Course
            {
                Id = x.Id, Title = x.Title, Level = x.Level
            }).ToList();

            return(standardCourses.Union(frameworkCourses).ToList());
        }
示例#18
0
        public async Task <GetStandardsQueryResult> Handle(GetStandardsQuery request, CancellationToken cancellationToken)
        {
            var sector = await GetSectorId(request.Sector);

            if (sector == null)
            {
                return(new GetStandardsQueryResult());
            }

            var standardsResponse =
                await _coursesApiClient.Get <GetStandardsListResponse>(new GetAvailableToStartStandardsListRequest { RouteIds = new List <int> {
                                                                                                                         sector.Value
                                                                                                                     } });

            return(new GetStandardsQueryResult
            {
                Standards = standardsResponse.Standards
            });
        }
示例#19
0
        public async Task <GetTrainingCourseResult> Handle(GetTrainingCourseQuery request, CancellationToken cancellationToken)
        {
            var standardTask = _apiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));

            await Task.WhenAll(standardTask);

            return(new GetTrainingCourseResult
            {
                Course = standardTask.Result
            });
        }
示例#20
0
        private async Task <List <GetStandardsListItem> > GetStandardsList(string standardId)
        {
            var standards = new List <GetStandardsListItem>();

            if (string.IsNullOrEmpty(standardId))
            {
                var standardsResponse = await _coursesApiClient.Get <GetStandardsListResponse>(new GetAvailableToStartStandardsListRequest());

                standards = standardsResponse.Standards.ToList();
            }

            else
            {
                var standard = await _coursesApiClient.Get <GetStandardsListItem>(new GetStandardDetailsByIdRequest(standardId));

                standards.Add(standard);
            }

            return(standards);
        }
        public async Task <GetStandardDetailsResult> Handle(GetStandardDetailsQuery request, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(request.Id))
            {
                throw new ArgumentException("Standard Id is required", nameof(GetStandardDetailsQuery.Id));
            }

            var standardDetails = await _coursesApiClient.Get <StandardDetailResponse>(new GetStandardDetailsByIdRequest(request.Id));

            return(new GetStandardDetailsResult(standardDetails));
        }
示例#22
0
        public async Task <CreateApplicationCommandResult> Handle(CreateApplicationCommand request, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"Creating Application to Pledge {request.PledgeId} for Account {request.EmployerAccountId}");

            var accountTask  = _levyTransferMatchingService.GetAccount(new GetAccountRequest(request.EmployerAccountId));
            var standardTask = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardDetailsByIdRequest(request.StandardId));

            await Task.WhenAll(accountTask, standardTask);

            var account  = accountTask.Result;
            var standard = standardTask.Result;

            if (account == null)
            {
                _logger.LogInformation($"Account {request.EmployerAccountId} does not exist - creating");
                await CreateAccount(request);
            }

            var data = new CreateApplicationRequestData
            {
                EmployerAccountId   = request.EmployerAccountId,
                Details             = request.Details,
                StandardId          = request.StandardId,
                StandardTitle       = standard.Title,
                StandardLevel       = standard.Level,
                StandardDuration    = standard.TypicalDuration,
                StandardMaxFunding  = standard.MaxFundingOn(request.StartDate),
                StandardRoute       = standard.Route,
                NumberOfApprentices = request.NumberOfApprentices,
                StartDate           = request.StartDate,
                HasTrainingProvider = request.HasTrainingProvider,
                Sectors             = request.Sectors,
                Locations           = request.Locations,
                AdditionalLocation  = request.AdditionalLocation,
                SpecificLocation    = request.SpecificLocation,
                FirstName           = request.FirstName,
                LastName            = request.LastName,
                EmailAddresses      = request.EmailAddresses,
                BusinessWebsite     = request.BusinessWebsite,
                UserId          = request.UserId,
                UserDisplayName = request.UserDisplayName
            };

            var createApplicationRequest = new CreateApplicationRequest(request.PledgeId, data);

            var result = await _levyTransferMatchingService.CreateApplication(createApplicationRequest);

            return(new CreateApplicationCommandResult
            {
                ApplicationId = result.ApplicationId
            });
        }
        public async Task <GetRegisterDemandResult> Handle(GetRegisterDemandQuery request, CancellationToken cancellationToken)
        {
            var course   = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.CourseId));
            var location = _locationLookupService.GetLocationInformation(request.LocationName, 0, 0);

            await Task.WhenAll(course, location);

            return(new GetRegisterDemandResult
            {
                Course = course.Result,
                Location = location.Result
            });
        }
        public async Task <GetTrainingCourseProvidersResult> Handle(GetTrainingCourseProvidersQuery request, CancellationToken cancellationToken)
        {
            var locationTask = _locationLookupService.GetLocationInformation(request.Location, request.Lat, request.Lon);

            var courseTask = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));

            var shortlistTask = _shortlistService.GetShortlistItemCount(request.ShortlistUserId);

            await Task.WhenAll(locationTask, courseTask, shortlistTask);

            var providers = await _courseDeliveryApiClient.Get <GetProvidersListResponse>(new GetProvidersByCourseRequest(
                                                                                              request.Id,
                                                                                              courseTask.Result.SectorSubjectAreaTier2Description,
                                                                                              courseTask.Result.Level,
                                                                                              locationTask.Result?.GeoPoint?.FirstOrDefault(),
                                                                                              locationTask.Result?.GeoPoint?.LastOrDefault(),
                                                                                              request.SortOrder,
                                                                                              request.ShortlistUserId));

            if (providers?.Providers.Any() == true)
            {
                var ukprns = providers.Providers.Select(s => s.Ukprn);

                var apprenticeFeedbackRatings =
                    await _apprenticeFeedbackApiClient.
                    PostWithResponseCode <IEnumerable <GetApprenticeFeedbackResponse> >(
                        new PostApprenticeFeedbackRequest
                {
                    Data = new PostApprenticeFeedbackRequestData {
                        Ukprns = ukprns
                    }
                });

                if (apprenticeFeedbackRatings.StatusCode == HttpStatusCode.OK)
                {
                    foreach (var ratingResponse in apprenticeFeedbackRatings.Body)
                    {
                        providers.Providers.First(s => s.Ukprn == ratingResponse.Ukprn).ApprenticeFeedback = ratingResponse;
                    }
                }
            }

            return(new GetTrainingCourseProvidersResult
            {
                Course = courseTask.Result,
                Providers = providers?.Providers,
                Total = providers?.TotalResults ?? 0,
                Location = locationTask.Result,
                ShortlistItemCount = shortlistTask.Result
            });
        }
        public async Task <GetStandardsQueryResult> Handle(GetStandardsQuery request, CancellationToken cancellationToken)
        {
            var standards = new List <GetStandardsListItem>();

            if (string.IsNullOrEmpty(request.StandardId))
            {
                var standardsResponse = await _coursesApiClient.Get <GetStandardsListResponse>(new GetAvailableToStartStandardsListRequest());

                standards = standardsResponse.Standards.ToList();
            }

            else
            {
                var standard = await _coursesApiClient.Get <GetStandardsListItem>(new GetStandardDetailsByIdRequest(request.StandardId));

                standards.Add(standard);
            }

            return(new GetStandardsQueryResult
            {
                Standards = standards
            });
        }
        public async Task <GetTrainingCourseProvidersResult> Handle(GetTrainingCourseProvidersQuery request, CancellationToken cancellationToken)
        {
            var courseTask    = _coursesApiClient.Get <GetStandardsListItem>(new GetStandardRequest(request.Id));
            var providersTask = _courseDeliveryApiClient.Get <GetProvidersListResponse>(new GetProvidersByCourseRequest(request.Id));

            await Task.WhenAll(courseTask, providersTask);

            return(new GetTrainingCourseProvidersResult
            {
                Course = courseTask.Result,
                Providers = providersTask.Result.Providers,
                Total = providersTask.Result.TotalResults
            });
        }
示例#27
0
        public async Task <GetTrainingCoursesListResult> Handle(GetTrainingCoursesListQuery request, CancellationToken cancellationToken)
        {
            _taskList = new List <Task>();

            var standardsTask = _apiClient.Get <GetStandardsListResponse>(new GetStandardsListRequest
            {
                Keyword  = request.Keyword,
                RouteIds = request.RouteIds,
                Levels   = request.Levels,
                OrderBy  = request.OrderBy
            });

            _taskList.Add(standardsTask);

            var sectorsTask = GetRequest <GetSectorsListResponse>(new GetSectorsListRequest(), nameof(GetSectorsListResponse), out _saveSectorsToCache);

            _taskList.Add(sectorsTask);

            var levelsTask = GetRequest <GetLevelsListResponse>(new GetLevelsListRequest(), nameof(GetLevelsListResponse), out _saveLevelsToCache);

            _taskList.Add(levelsTask);

            await Task.WhenAll(_taskList);

            await UpdateCachedItems(sectorsTask, levelsTask);

            return(new GetTrainingCoursesListResult
            {
                Courses = standardsTask.Result.Standards,
                Sectors = sectorsTask.Result.Sectors,
                Levels = levelsTask.Result.Levels,
                Total = standardsTask.Result.Total,
                TotalFiltered = standardsTask.Result.TotalFiltered,
                OrderBy = request.OrderBy
            });
        }
示例#28
0
        public async Task <GetCourseEpaosResult> Handle(GetCourseEpaosQuery request, CancellationToken cancellationToken)
        {
            var epaosTask = _assessorsApiClient.GetAll <GetCourseEpaoListItem>(
                new GetCourseEpaosRequest
            {
                CourseId = request.CourseId
            });

            var courseTask = _coursesApiClient.Get <GetStandardsListItem>(
                new GetStandardRequest(request.CourseId));

            await Task.WhenAll(epaosTask, courseTask);

            _logger.LogDebug($"Found [{epaosTask.Result.Count()}] EPAOs for Course Id:[{request.CourseId}].");

            var filteredEpaos = epaosTask.Result
                                .Where(_courseEpaoIsValidFilterService.IsValidCourseEpao)
                                .ToList();

            var epaoTasks = filteredEpaos.
                            ToDictionary(
                t => t.EpaoId,
                t => _assessorsApiClient.Get <IEnumerable <GetStandardsExtendedListItem> >(
                    new GetCourseEpaosStandardVersionsRequest(t.EpaoId, request.CourseId)));

            await Task.WhenAll(epaoTasks.Select(x => x.Value).ToArray());

            foreach (var filtEpao in filteredEpaos)
            {
                if (epaoTasks.TryGetValue(filtEpao.EpaoId, out var epaoResponse) && epaoResponse.Result != null)
                {
                    var epaoVersions = epaoResponse.Result
                                       .Where(c => _courseEpaoIsValidFilterService.ValidateVersionDates(c.DateVersionApproved, c.EffectiveFrom, c.EffectiveTo))
                                       .Select(x => x.Version).ToArray();

                    filtEpao.CourseEpaoDetails.StandardVersions = epaoVersions;
                }
            }

            _logger.LogDebug($"Found [{filteredEpaos.Count}] EPAOs for Course Id:[{request.CourseId}] after filtering.");

            return(new GetCourseEpaosResult
            {
                Epaos = filteredEpaos.Where(x => x.CourseEpaoDetails.StandardVersions.Length > 0)
                        .OrderBy(item => item.Name),
                Course = courseTask.Result
            });
        }
        public async Task <GetStandardsListResponse> GetCourses()
        {
            var courses = await _cacheStorageService
                          .RetrieveFromCache <GetStandardsListResponse>(nameof(GetStandardsListResponse));

            if (courses != null)
            {
                return(courses);
            }

            courses = await _coursesApiClient.Get <GetStandardsListResponse>(new GetActiveStandardsListRequest());

            await _cacheStorageService.SaveToCache(nameof(GetStandardsListResponse), courses, DeliveryAreaCacheDurationInHours);

            return(courses);
        }
示例#30
0
        public async Task <GetRoutesQueryResult> Handle(GetRoutesQuery request, CancellationToken cancellationToken)
        {
            var response = await _cacheStorageService.RetrieveFromCache <GetRoutesListResponse>(nameof(GetRoutesListResponse));

            if (response == null)
            {
                response = await _coursesApiClient.Get <GetRoutesListResponse>(new GetRoutesListRequest());

                await _cacheStorageService.SaveToCache(nameof(GetRoutesListResponse), response, 23);
            }

            return(new GetRoutesQueryResult
            {
                Routes = response.Routes
            });
        }