Esempio n. 1
0
 public PerformanceMeasureReportingPeriodSimple(PerformanceMeasureReportingPeriodTarget performanceMeasureReportingPeriodTarget)
 {
     PerformanceMeasureReportingPeriodID           = performanceMeasureReportingPeriodTarget.PerformanceMeasureReportingPeriodID;
     PerformanceMeasureReportingPeriodLabel        = performanceMeasureReportingPeriodTarget.PerformanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodLabel;
     PerformanceMeasureReportingPeriodCalendarYear = performanceMeasureReportingPeriodTarget.PerformanceMeasureReportingPeriod.PerformanceMeasureReportingPeriodCalendarYear;
     TargetValue          = performanceMeasureReportingPeriodTarget.PerformanceMeasureTargetValue;
     TargetValueLabel     = performanceMeasureReportingPeriodTarget.PerformanceMeasureTargetValueLabel;
     PerformanceMeasureID = performanceMeasureReportingPeriodTarget.PerformanceMeasureID;
     PerformanceMeasureReportingPeriodTargetID = performanceMeasureReportingPeriodTarget.PerformanceMeasureReportingPeriodTargetID;
 }
        public void UpdateModel(ProjectFirmaModels.Models.PerformanceMeasure performanceMeasure,
                                ICollection <PerformanceMeasureReportingPeriod> allPerformanceMeasureReportingPeriods,
                                ICollection <PerformanceMeasureReportingPeriodTarget> allPerformanceMeasureReportingPeriodTargets)
        {
            var performanceMeasureTargetValueTypeEnum = PerformanceMeasureTargetValueType.AllLookupDictionary[PerformanceMeasureTargetValueTypeID].ToEnum;

            DeleteOtherPerformanceMeasureTargetValueTypes(performanceMeasure, performanceMeasureTargetValueTypeEnum);

            switch (performanceMeasureTargetValueTypeEnum)
            {
            case PerformanceMeasureTargetValueTypeEnum.NoTarget:
                // Nothing to do here, there are no "No Targets" to be saved in this case. But we still need this so that the ArgumentOutOfRange validation works

                // need to reset the series for the geospatial json...


                break;

            case PerformanceMeasureTargetValueTypeEnum.FixedTarget:
                var fixedTarget = PerformanceMeasureFixedTargetModelExtensions.GetOrCreatePerformanceMeasureFixedTarget(performanceMeasure, FixedTargetValue.Value);
                fixedTarget.PerformanceMeasureTargetValueLabel = FixedTargetValueLabel;
                fixedTarget.PerformanceMeasureTargetValue      = FixedTargetValue;
                break;

            case PerformanceMeasureTargetValueTypeEnum.TargetPerYear:
                var performanceMeasureReportingPeriodTargetsUpdated = new List <PerformanceMeasureReportingPeriodTarget>();
                foreach (var pmrpSimple in PerformanceMeasureReportingPeriodSimples)
                {
                    // Reporting Period
                    // ----------------
                    var reportingPeriod = allPerformanceMeasureReportingPeriods.SingleOrDefault(x => x.PerformanceMeasureReportingPeriodCalendarYear == pmrpSimple.PerformanceMeasureReportingPeriodCalendarYear);
                    if (reportingPeriod == null)
                    {
                        reportingPeriod = new PerformanceMeasureReportingPeriod(pmrpSimple.PerformanceMeasureReportingPeriodCalendarYear, pmrpSimple.PerformanceMeasureReportingPeriodLabel);
                    }
                    var performanceMeasureTarget = allPerformanceMeasureReportingPeriodTargets.SingleOrDefault(x => x.PerformanceMeasureReportingPeriodTargetID == pmrpSimple.PerformanceMeasureReportingPeriodTargetID);
                    if (performanceMeasureTarget == null)
                    {
                        // ReSharper disable once RedundantAssignment
                        performanceMeasureTarget = new PerformanceMeasureReportingPeriodTarget(performanceMeasure, reportingPeriod)
                        {
                            PerformanceMeasureTargetValue      = pmrpSimple.TargetValue,
                            PerformanceMeasureTargetValueLabel = pmrpSimple.TargetValueLabel
                        };
                    }
                    else
                    {
                        performanceMeasureTarget.PerformanceMeasureTargetValue      = pmrpSimple.TargetValue;
                        performanceMeasureTarget.PerformanceMeasureTargetValueLabel = pmrpSimple.TargetValueLabel;
                    }
                    performanceMeasureReportingPeriodTargetsUpdated.Add(performanceMeasureTarget);
                }

                performanceMeasure.PerformanceMeasureReportingPeriodTargets.Merge(
                    performanceMeasureReportingPeriodTargetsUpdated,
                    allPerformanceMeasureReportingPeriodTargets,
                    (x, y) => x.PerformanceMeasureReportingPeriodTargetID == y.PerformanceMeasureReportingPeriodTargetID,
                    (x, y) =>
                {
                    x.PerformanceMeasureReportingPeriodTargetID = y.PerformanceMeasureReportingPeriodTargetID;
                }, HttpRequestStorage.DatabaseEntities);
                break;

            default:
                throw new ArgumentOutOfRangeException($"Invalid Target Value Type {performanceMeasureTargetValueTypeEnum}");
            }
            SetGoogleChartConfigurationForPerformanceMeasure(performanceMeasure, performanceMeasureTargetValueTypeEnum);
        }