public static void ManyApprovedNonLevy()
        {
            for (var i = 0; i < 500; i++)
            {
                var builder = new CohortBuilder();

                if (RandomHelper.GetRandomNumber(10) > 8)
                {
                    builder
                    .WithNonLevyEmployer()
                    .WithDefaultProvider()
                    .WithParty(Party.None)
                    .WithApprovals(Party.Employer | Party.Provider)
                    .WithLastAction(LastAction.Approve)
                    .WithApprenticeshipPaymentStatus(PaymentStatus.Active)
                    .WithApprenticeships(1);
                }
                else
                {
                    DataLockType datalockType = DataLockType.Course;
                    var          r            = RandomHelper.GetRandomNumber(3);
                    if (r == 1)
                    {
                        datalockType = DataLockType.Price;
                    }

                    if (r == 2)
                    {
                        datalockType = DataLockType.MultiPrice;
                    }

                    builder
                    .WithNonLevyEmployer()
                    .WithDefaultProvider()
                    .WithParty(Party.None)
                    .WithApprovals(Party.Employer | Party.Provider)
                    .WithLastAction(LastAction.Approve)
                    .WithApprenticeshipPaymentStatus(PaymentStatus.Active)
                    .WithApprenticeship(cohort =>
                                        new ApprenticeshipBuilder(builder)
                                        .WithDataLock(datalockType));
                }

                builder.Build();
            }
        }
        public static void Scenario_Fully_Approved_Transfer_Cohort()
        {
            var builder = new CohortBuilder();

            builder
            .WithNonLevyEmployer()
            .WithDefaultProvider()
            .WithTransferSender(8194, "Mega Corp", TransferApprovalStatus.Approved)
            .WithParty(Party.None)
            .WithApprovals(Party.Employer | Party.Provider | Party.TransferSender)
            .WithLastAction(LastAction.Approve)
            .WithApprenticeshipPaymentStatus(PaymentStatus.Active)
            .WithApprenticeships(50);
            builder.Build();
        }
        public static void Scenario_Transfer_Cohort_Pending_With_Sender_With_FundingBands()
        {
            var builder = new CohortBuilder();

            builder
            .WithNonLevyEmployer()
            .WithDefaultProvider()
            .WithParty(Party.TransferSender)
            .WithApprovals(Party.Employer | Party.Provider)
            .WithLastAction(LastAction.Approve)
            .WithTransferSender(8194, "Mega Corp", TransferApprovalStatus.Pending)     //todo: refactor this so that status is based on being with transfer sender
            .WithApprenticeships(10)
            .WithFundingCapWarning();
            builder.Build();
        }
        public static void NonLevy_PendingChangeOfCircumstances_ProviderOriginated()
        {
            var builder = new CohortBuilder();

            builder
            .WithNonLevyEmployer()
            .WithDefaultProvider()
            .WithParty(Party.None)
            .WithApprovals(Party.Employer | Party.Provider)
            .WithLastAction(LastAction.Approve)
            .WithApprenticeshipPaymentStatus(PaymentStatus.Active)
            .WithApprenticeship(cohort =>
                                new ApprenticeshipBuilder(builder)
                                .WithStartOption(ApprenticeshipStartedOption.Started)
                                .WithChangeOfCircumstances(Originator.Provider)
                                );
            builder.Build();
        }
        public static void Cohort_Provider_Draft(int size, bool nonLevyEmployer)
        {
            var builder = new CohortBuilder();

            builder
            .WithDefaultProvider()
            .WithDefaultEmployer()
            .WithParty(Party.Provider)
            .WithIsDraft(true)
            .WithApprenticeships(size);

            if (nonLevyEmployer)
            {
                builder.WithNonLevyEmployer();
            }

            builder.Build();
        }
        public static void Single_Stopped_Apprentice()
        {
            var builder = new CohortBuilder();

            builder
            .WithNonLevyEmployer()
            .WithDefaultProvider()
            .WithParty(Party.None)
            .WithApprovals(Party.Employer | Party.Provider)
            .WithApprenticeship(cohort =>
                                new ApprenticeshipBuilder(builder)
                                .WithUln("1000001880")
                                .WithStartOption(new DateTime(2019, 6, 1))
                                .WithEndOption(new DateTime(2020, 6, 1))
                                .WithStopOption(new DateTime(2020, 2, 1))
                                );
            builder.Build();
        }