protected void SetupValidLearnersData(long ukprn, Learner learner) { learner.LearningDelivery.PriceEpisodes[0].Tnp1 = learner.LearningDelivery.StandardCode > 0 ? learner.LearningDelivery.PriceEpisodes[0].TotalPrice * 0.8m : learner.LearningDelivery.PriceEpisodes[0].TotalPrice; if (learner.LearningDelivery.StandardCode > 0) { learner.LearningDelivery.PriceEpisodes[0].Tnp2 = learner.LearningDelivery.PriceEpisodes[0].TotalPrice * 0.2m; } //Save File Details LearnerDataHelper.SaveFileDetails(ukprn, EnvironmentVariables); //Save Learning Provider LearnerDataHelper.SaveLearningProvider(ukprn, EnvironmentVariables); //Save the Learner LearnerDataHelper.SaveLearner(ukprn, learner.Uln, learner.LearnRefNumber, EnvironmentVariables); //save Learner delivery LearnerDataHelper.SaveLearningDelivery(ukprn, learner.LearnRefNumber, learner.LearningDelivery, EnvironmentVariables); //save learning delivery FAM LearnerDataHelper.SaveLearningDeliveryFAM(ukprn, learner.LearnRefNumber, learner.LearningDelivery.StartDate, learner.LearningDelivery.PlannedEndDate, EnvironmentVariables); LearnerDataHelper.SaveTrailblazerApprenticeshipFinancialRecord(ukprn, 1, learner.LearnRefNumber, learner.LearningDelivery.PriceEpisodes[0].Tnp1.Value, EnvironmentVariables); //save Trailblazer if (learner.LearningDelivery.PriceEpisodes[0].Tnp2.HasValue) { LearnerDataHelper.SaveTrailblazerApprenticeshipFinancialRecord(ukprn, 2, learner.LearnRefNumber, learner.LearningDelivery.PriceEpisodes[0].Tnp2.Value, EnvironmentVariables); } var months = ((learner.LearningDelivery.PlannedEndDate.Year - learner.LearningDelivery.StartDate.Year) * 12) + learner.LearningDelivery.PlannedEndDate.Month - learner.LearningDelivery.StartDate.Month; learner.LearningDelivery.PriceEpisodes[0].MonthlyPayment = learner.LearningDelivery.PriceEpisodes[0].TotalPrice * 0.8m / months; learner.LearningDelivery.PriceEpisodes[0].CompletionPayment = learner.LearningDelivery.PriceEpisodes[0].TotalPrice * 0.2m; //- ((learner.LearningDelivery.PriceEpisodes[0].TotalPrice * 0.8m) / months); //save the learning deliver values EarningsDataHelper.SaveLearningDeliveryValuesForUkprn(ukprn, learner.LearnRefNumber, learner.LearningDelivery, EnvironmentVariables); }
protected void SetupEarningsData(Provider provider, Learner learner) { StepDefinitionsContext.AddProviderLearner(provider, learner); //set a default employer StepDefinitionsContext.ReferenceDataContext.SetDefaultEmployer( new Dictionary <string, decimal> { { "All", int.MaxValue } }); //setup committment and employer ref data SetupReferenceData(); SetupValidLearnersData(provider.Ukprn, learner); }
protected void AddLearnerCommitmentsForPeriod(DateTime date, long ukprn, Learner learner, string provider) { var learnerCommitments = StepDefinitionsContext.ReferenceDataContext.Commitments.Where(c => c.Learner == learner.Name && c.Provider == provider); foreach (var commitment in learnerCommitments) { if (commitment.StartDate > date) { continue; } if (commitment.EffectiveFrom.HasValue && commitment.EffectiveFrom.Value > date) { continue; } var employer = StepDefinitionsContext.ReferenceDataContext.Employers?.SingleOrDefault(e => e.Name == commitment.Employer); var accountId = employer?.AccountId ?? long.Parse(IdentifierGenerator.GenerateIdentifier(8, false)); var commitmentStartDate = commitment.StartDate ?? learner.LearningDelivery.StartDate; var commitmentEffectiveFromDate = commitment.EffectiveFrom ?? commitmentStartDate; var commitmentEndDate = commitment.EndDate ?? learner.LearningDelivery.PlannedEndDate; var priceEpisode = learner.LearningDelivery.PriceEpisodes.Where(pe => pe.StartDate >= commitmentStartDate && pe.StartDate <= commitmentEndDate).OrderBy(pe => pe.StartDate).FirstOrDefault(); CommitmentDataHelper.CreateCommitment( new CommitmentEntity { CommitmentId = commitment.Id, Ukprn = ukprn, Uln = learner.Uln, AccountId = accountId.ToString(), StartDate = commitmentStartDate, EndDate = commitment.EndDate ?? learner.LearningDelivery.PlannedEndDate, AgreedCost = commitment.AgreedPrice ?? priceEpisode.TotalPrice, StandardCode = commitment.StandardCode, FrameworkCode = commitment.FrameworkCode, ProgrammeType = commitment.ProgrammeType, PathwayCode = commitment.PathwayCode, Priority = commitment.Priority, VersionId = commitment.VersionId, PaymentStatus = (int)commitment.Status, PaymentStatusDescription = commitment.Status.ToString(), EffectiveFrom = commitmentEffectiveFromDate, EffectiveTo = commitment.EffectiveTo }, EnvironmentVariables); } }
protected void AddLearnerCommitment(long ukprn, Learner learner, string provider) { var commitmentId = long.Parse(IdentifierGenerator.GenerateIdentifier(6, false)); var commitmentPriority = 1; var accountId = long.Parse(IdentifierGenerator.GenerateIdentifier(8, false)); var commitment = StepDefinitionsContext.ReferenceDataContext.Commitments?.SingleOrDefault(c => c.Learner == learner.Name && c.Provider == provider); if (commitment != null) { commitmentId = commitment.Id; commitmentPriority = commitment.Priority; var employer = StepDefinitionsContext.ReferenceDataContext.Employers?.SingleOrDefault(e => e.Name == commitment.Employer); if (employer != null) { accountId = employer.AccountId; } } CommitmentDataHelper.CreateCommitment( new CommitmentEntity { CommitmentId = commitmentId, Ukprn = ukprn, Uln = learner.Uln, AccountId = accountId.ToString(), StartDate = learner.LearningDelivery.StartDate, EndDate = learner.LearningDelivery.PlannedEndDate, AgreedCost = learner.LearningDelivery.PriceEpisodes[0].TotalPrice, StandardCode = commitment.StandardCode, FrameworkCode = commitment.FrameworkCode, ProgrammeType = commitment.ProgrammeType, PathwayCode = commitment.PathwayCode, Priority = commitmentPriority, VersionId = commitment.VersionId, PaymentStatus = (int)commitment.Status, PaymentStatusDescription = commitment.Status.ToString(), EffectiveFrom = learner.LearningDelivery.StartDate }, EnvironmentVariables); }
protected void SetupContexLearners(Table table) { if (table.Header.Contains("Employment Status") && StepDefinitionsContext.ReferenceDataContext.EmploymentStatuses == null) { PopulateEmploymentStatuses(table); } for (var rowIndex = 0; rowIndex < table.RowCount; rowIndex++) { var provider = table.ContainsColumn("Provider") ? table.Rows[rowIndex]["Provider"] : "provider"; if (table.Header.Contains("LearnDelFAM") && !string.IsNullOrEmpty(table.Rows[rowIndex]["LearnDelFAM"])) { var famValue = table.Rows[rowIndex]["LearnDelFAM"]; var famCode = new LearningDeliveryFam { FamType = famValue.Substring(0, 3), FamCode = int.Parse(famValue.Substring(3)) }; StepDefinitionsContext.ReferenceDataContext.AddLearningDeliveryFam(famCode); } var learningDelivery = new LearningDelivery { LearningDeliveryFams = StepDefinitionsContext.ReferenceDataContext.LearningDeliveryFams, LearnerType = table.Header.Contains("learner type") ? GetLearnerType(table.Rows[rowIndex]["learner type"]) : LearnerType.ProgrammeOnlyDas, StartDate = DateTime.Parse(table.Rows[rowIndex]["start date"]), PlannedEndDate = table.Header.Contains("planned end date") ? DateTime.Parse(table.Rows[rowIndex]["planned end date"]) : DateTime.Parse(table.Rows[rowIndex]["start date"]).AddMonths(12), ActualEndDate = !table.Header.Contains("actual end date") || string.IsNullOrWhiteSpace(table.Rows[rowIndex]["actual end date"]) ? null : (DateTime?)DateTime.Parse(table.Rows[rowIndex]["actual end date"]), CompletionStatus = table.Header.Contains("completion status") ? IlrTranslator.TranslateCompletionStatus(table.Rows[rowIndex]["completion status"]) : CompletionStatus.Continuing, FrameworkCode = table.Rows[rowIndex].Value <int>("framework code") > 0 ? table.Rows[rowIndex].Value <int>("framework code") : IlrBuilder.Defaults.FrameworkCode, ProgrammeType = table.Rows[rowIndex].Value <int>("programme type") > 0 ? table.Rows[rowIndex].Value <int>("programme type") : IlrBuilder.Defaults.ProgrammeType, PathwayCode = table.Rows[rowIndex].Value <int>("pathway code") > 0 ? table.Rows[rowIndex].Value <int>("pathway code") : IlrBuilder.Defaults.PathwayCode, Type = table.Rows[rowIndex].Contains("aim type") ? GetAimType(table.Rows[rowIndex].Value <string>("aim type")) : Enums.AimType.Programme }; var standardCode = table.Rows[rowIndex].Value <int>("standard code") > 0 ? table.Rows[rowIndex].Value <int>("standard code") : IlrBuilder.Defaults.StandardCode; learningDelivery.StandardCode = learningDelivery.FrameworkCode > 0 && learningDelivery.PathwayCode > 0 && learningDelivery.ProgrammeType > 0 ? 0 : standardCode; var priceEpisodes = SetupPriceEpisodes(table, rowIndex, learningDelivery.StandardCode); learningDelivery.PriceEpisodes = priceEpisodes.ToArray(); Learner learner = null; if (table.Rows[rowIndex].ContainsKey("ULN")) { var learners = StepDefinitionsContext.GetProvider(provider).Learners; if (learners != null) { learner = learners.SingleOrDefault(x => x.Name == table.Rows[rowIndex]["ULN"]); } } if (learner == null) { learner = new Learner(); learner.Name = table.Rows[rowIndex].ContainsKey("ULN") ? table.Rows[rowIndex]["ULN"] : string.Empty; if (table.Rows[rowIndex].ContainsKey("ULN")) { learner.Uln = GetUln(learner.Name, table.Rows[rowIndex]["ULN"]); } else { learner.Uln = GetUln(learner.Name, string.Empty); } learner.LearnRefNumber = $"{StepDefinitionsContext.GetProvider(provider).Ukprn}-{rowIndex+1}"; learner.DateOfBirth = GetDateOfBirth(learningDelivery.LearnerType, learningDelivery.StartDate); learner.EmploymentStatuses = StepDefinitionsContext.ReferenceDataContext.EmploymentStatuses; StepDefinitionsContext.AddProviderLearner(provider, learner); } learner.LearningDeliveries.Add(learningDelivery); } }
protected void SubmitIlr(Provider provider, string academicYear, DateTime date, ProcessService processService) { var submissionLearners = provider.Learners.Select(l => { var learner = new Learner { Name = l.Name, Uln = l.Uln, LearnRefNumber = l.LearnRefNumber, DateOfBirth = l.DateOfBirth, EmploymentStatuses = l.EmploymentStatuses }; foreach (var ld in l.LearningDeliveries) { learner.LearningDeliveries.Add( new LearningDelivery { LearningDeliveryFams = ld.LearningDeliveryFams, LearnerType = ld.LearnerType, StartDate = ld.StartDate, PlannedEndDate = ld.PlannedEndDate, ActualEndDate = date >= ld.ActualEndDate ? ld.ActualEndDate : null, CompletionStatus = ld.CompletionStatus, StandardCode = ld.StandardCode, FrameworkCode = ld.FrameworkCode, PathwayCode = ld.PathwayCode, ProgrammeType = ld.ProgrammeType, PriceEpisodes = ld.PriceEpisodes, Type = ld.Type }); } return(learner); }).ToArray(); IlrSubmission submission = IlrBuilder.CreateAIlrSubmission() .WithUkprn(provider.Ukprn) .WithMultipleLearners() .WithLearners(submissionLearners); AcceptanceTestDataHelper.AddCurrentActivePeriod(date.Year, date.Month, EnvironmentVariables); var ilrStatusWatcher = new TestStatusWatcher(EnvironmentVariables, $"Submit ILR to {date:dd/MM/yy}"); processService.RunIlrSubmission(submission, EnvironmentVariables, ilrStatusWatcher); var periodEarnings = EarningsDataHelper.GetPeriodisedValuesForUkprnSummary(provider.Ukprn, EnvironmentVariables).LastOrDefault() ?? new PeriodisedValuesEntity(); PopulateEarnedByPeriodValues(academicYear, provider.EarnedByPeriod, periodEarnings); //populate by Uln values var periodEarningsByUln = EarningsDataHelper.GetPeriodisedValuesForUkprn(provider.Ukprn, EnvironmentVariables); PopulateEarnedByPeriodByUln(academicYear, provider.EarnedByPeriodByUln, periodEarningsByUln); var dataLockMatches = DataLockDataHelper.GetDataLockMatchesForUkprn(provider.Ukprn, EnvironmentVariables) ?? new DataLockMatch[0]; provider.DataLockMatchesByPeriod.Add(date.GetPeriod(), dataLockMatches); }