public async Task <IReadOnlyCollection <FundingCapCourseSummary> > FundingCourseSummary(IEnumerable <ApprenticeshipBase> apprenticeships)
        {
            decimal MaximumCappedCost(decimal?cost, int cap)
            {
                if (cost.HasValue)
                {
                    return(cost.Value > cap ? cap : cost.Value);
                }
                return(0);
            }

            var fundingBandCapForApprentice = await Task.WhenAll(apprenticeships.Select(async x => new
            {
                x.Id,
                x.CourseCode,
                x.CourseName,
                x.Cost,
                Cap = (await _trainingProgrammeLookup.GetTrainingProgramme(x.CourseCode)).FundingCapOn(x.StartDate ?? throw new InvalidOperationException("Start Date cannot be null"))
            }));
Example #2
0
        public async Task <GetTrainingProgrammeQueryResult> Handle(GetTrainingProgrammeQuery request, CancellationToken cancellationToken)
        {
            try
            {
                var result = await _service.GetTrainingProgramme(request.Id);

                if (result == null)
                {
                    return(new GetTrainingProgrammeQueryResult
                    {
                        TrainingProgramme = null
                    });
                }

                return(new GetTrainingProgrammeQueryResult
                {
                    TrainingProgramme = new TrainingProgramme
                    {
                        Name = result.Name,
                        CourseCode = result.CourseCode,
                        EffectiveFrom = result.EffectiveFrom,
                        EffectiveTo = result.EffectiveTo,
                        ProgrammeType = result.ProgrammeType,
                        FundingPeriods = result.FundingPeriods.Select(x => new TrainingProgrammeFundingPeriod
                        {
                            EffectiveFrom = x.EffectiveFrom,
                            EffectiveTo = x.EffectiveTo,
                            FundingCap = x.FundingCap
                        }).ToList()
                    }
                });
            }
            catch (Exception e)
            {
                _logger.LogInformation(e, $"Course not found : {request.Id}");
            }
            return(new GetTrainingProgrammeQueryResult
            {
                TrainingProgramme = null
            });
        }
Example #3
0
 private Task <TrainingProgramme> GetCourse(string courseCode)
 {
     return(_trainingProgrammeLookup.GetTrainingProgramme(courseCode));
 }