Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }