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); }