void ReleaseDesignerOutlets()
        {
            if (OutcomeKey != null)
            {
                OutcomeKey.Dispose();
                OutcomeKey = null;
            }

            if (OutcomeValue != null)
            {
                OutcomeValue.Dispose();
                OutcomeValue = null;
            }

            if (OutcomeValueKey != null)
            {
                OutcomeValueKey.Dispose();
                OutcomeValueKey = null;
            }

            if (UniqueOutcomeKey != null)
            {
                UniqueOutcomeKey.Dispose();
                UniqueOutcomeKey = null;
            }

            if (PrivacyConsentControl != null)
            {
                PrivacyConsentControl.Dispose();
                PrivacyConsentControl = null;
            }
        }
示例#2
0
        public void CheckOutcome()
        {
            RegistryKey LMachine = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, System.Environment.MachineName);
            RegistryKey SKey     = LMachine.OpenSubKey("SOFTWARE", true);
            RegistryKey HKey     = SKey.OpenSubKey("HolodeckEE", true);
            RegistryKey OutcomeKey;

            do
            {
                Thread.Sleep(500);
                OutcomeKey = HKey.OpenSubKey("Outcome");
            }while(OutcomeKey == null);

            String OutcomeType = (String)(OutcomeKey.GetValue("Outcome"));

            Console.WriteLine("==> Test Outcome: {0}! <==", OutcomeType);

            Thread.Sleep(4000);
            Console.WriteLine("Now Closing Holodeck...");
            Thread.Sleep(3000);
            Holodeck.HolodeckPane.File_Exit(false);
        }
        public async Task <IEnumerable <AimAndDeliverableModel> > GetAimAndDeliverableModel(
            int ukPrn,
            CancellationToken cancellationToken)
        {
            var reportData = new List <AimAndDeliverableModel>();

            var providerConRefNumbers = (await _validLearnerDataService.GetLearnerConRefNumbers(ukPrn, cancellationToken)).ToList();

            var conRefNumbers = providerConRefNumbers.Where(IsConRefNumberRound2).ToList();

            var validLearners = (await _validLearnerDataService.GetLearnerDetails(ukPrn, FundingModel, conRefNumbers, cancellationToken))
                                .ToDictionary(vl => new ValidLearnerKey(vl.LearnRefNumber, vl.AimSeqNumber ?? 0), vl => vl);

            var fm70LearningDeliveries =
                (await _fm70DataService.GetLearningDeliveries(ukPrn, false, cancellationToken)).ToList();

            var learningDeliveryFams =
                (await _validLearnerDataService.GetLearningDeliveryFams(ukPrn, ReportingConstants.LearningDeliveryFamTypeRES, cancellationToken)).ToList();

            var learnerMonitorings = (await _validLearnerDataService.GetLearnerMonitorings(ukPrn, cancellationToken))
                                     .ToDictionary(
                lm => new LearnerMonitoringKey(lm.LearnRefNumber, lm.ProvSpecLearnMonOccur),
                lm => lm);

            var deliveryMonitorings = (await _validLearnerDataService.GetDeliveryMonitorings(ukPrn, cancellationToken))
                                      .ToDictionary(
                dm => new DeliveryMonitoringKey(dm.LearnRefNumber, dm.ProvSpecDelMonOccur, dm.AimSeqNumber),
                dm => dm);

            var fm70Outcomes = (await _fm70DataService.GetOutcomes(ukPrn, cancellationToken))
                               .ToDictionary(
                oc => new OutcomeKey(
                    oc.LearnRefNumber,
                    oc.OutType,
                    oc.OutCode,
                    oc.OutStartDate),
                oc => oc);

            var outcomes = (await _validLearnerDataService.GetDPOutcomes(ukPrn, cancellationToken))
                           .ToDictionary(
                oc => new OutcomeKey(
                    oc.LearnRefNumber,
                    oc.OutType,
                    oc.OutCode,
                    oc.OutStartDate),
                oc => oc);

            var deliverableCodes = fm70LearningDeliveries.Select(ld => ld.DeliverableCode).ToList();

            var fcsCodeMappings =
                _referenceDataService.GetContractDeliverableCodeMapping(deliverableCodes, cancellationToken).ToList();

            var learnAimRefs = validLearners.Select(ld => ld.Value.LearnAimRef).ToList();

            var larsDeliveries = (await _referenceDataService.GetLarsLearningDelivery(learnAimRefs, cancellationToken))
                                 .ToDictionary(t => t.LearnAimRef, t => t, StringComparer.OrdinalIgnoreCase);

            foreach (var fm70Delivery in fm70LearningDeliveries)
            {
                var periodReportedForDeliverable = false;

                var key = new ValidLearnerKey(fm70Delivery.LearnRefNumber, fm70Delivery.AimSeqNumber);
                validLearners.TryGetValue(key, out var learningDelivery);

                if (learningDelivery == null)
                {
                    continue;
                }

                DpOutcome     outcome     = null;
                Fm70DpOutcome fm70Outcome = null;
                if (!string.IsNullOrWhiteSpace(fm70Delivery.EligibleProgressionOutcomeType) &&
                    fm70Delivery.EligibleProgressionOutcomeCode != null &&
                    fm70Delivery.EligibleProgressionOutomeStartDate != null)
                {
                    var outcomeKey = new OutcomeKey(
                        fm70Delivery.LearnRefNumber,
                        fm70Delivery.EligibleProgressionOutcomeType,
                        fm70Delivery.EligibleProgressionOutcomeCode ?? 0,
                        fm70Delivery.EligibleProgressionOutomeStartDate ?? DateTime.MinValue);

                    outcomes.TryGetValue(outcomeKey, out outcome);

                    fm70Outcomes.TryGetValue(outcomeKey, out fm70Outcome);
                }

                larsDeliveries.TryGetValue(learningDelivery.LearnRefNumber, out var larsDelivery);

                var fam = learningDeliveryFams.FirstOrDefault(ldf =>
                                                              ldf.LearnRefNumber.CaseInsensitiveEquals(learningDelivery.LearnRefNumber) &&
                                                              ldf.AimSeqNumber == learningDelivery.AimSeqNumber);

                if (!fm70Delivery.Fm70LearningDeliveryDeliverables.Any())
                {
                    var model = GetAimAndDeliverableModel(learningDelivery, fm70Delivery, larsDelivery, outcome, fm70Outcome, fam, learnerMonitorings, deliveryMonitorings);

                    reportData.Add(model);
                    continue;
                }

                foreach (var deliverable in fm70Delivery.Fm70LearningDeliveryDeliverables)
                {
                    var deliverableCode = deliverable.DeliverableCode;

                    var fcsMapping = fcsCodeMappings?.SingleOrDefault(f =>
                                                                      f.ExternalDeliverableCode.CaseInsensitiveEquals(deliverableCode) &&
                                                                      f.FundingStreamPeriodCode.CaseInsensitiveEquals(FundingStreamPeriodCode));

                    var fm70Periods = fm70Delivery.Fm70LearningDeliveryDeliverablePeriods.Where(delivery =>
                                                                                                delivery.LearnRefNumber.CaseInsensitiveEquals(fm70Delivery.LearnRefNumber) &&
                                                                                                delivery.AimSeqNumber == fm70Delivery.AimSeqNumber &&
                                                                                                delivery.DeliverableCode.CaseInsensitiveEquals(deliverableCode));

                    foreach (var period in fm70Periods)
                    {
                        var total = (period.StartEarnings ?? 0) + (period.AchievementEarnings ?? 0)
                                    + (period.AdditionalProgCostEarnings ?? 0) + (period.ProgressionEarnings ?? 0);
                        if (period.ReportingVolume == 0 && period.DeliverableVolume == 0 && total == 0)
                        {
                            continue;
                        }

                        var model = GetAimAndDeliverableModel(
                            learningDelivery,
                            fm70Delivery,
                            larsDelivery,
                            outcome,
                            fm70Outcome,
                            fam,
                            learnerMonitorings,
                            deliveryMonitorings,
                            deliverable,
                            period,
                            fcsMapping,
                            total);

                        periodReportedForDeliverable = true;
                        reportData.Add(model);
                    }

                    if (!periodReportedForDeliverable)
                    {
                        var model = GetAimAndDeliverableModel(learningDelivery, fm70Delivery, larsDelivery, outcome, fm70Outcome, fam, learnerMonitorings, deliveryMonitorings, deliverable, null, fcsMapping, null);
                        reportData.Add(model);
                    }
                }
            }

            return(reportData);
        }