/// <summary> /// Get Month To date performance to determine Goal Value /// </summary> /// <param name="target"></param> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public decimal?GetMonthToDateGoalValue(Target target, int year, int monthId) { decimal?goal = null; var currentDate = TimeZoneUtility.GetCurrentTimestamp(); var day = currentDate.Day; var monthlyTarget = target.MonthlyTargets.FirstOrDefault(x => x.TargetId == target.Id && x.Month == monthId); if (monthlyTarget != null) { if (!target.MTDPerformanceTrackingMethodId.HasValue) { return(monthlyTarget.MaxGoalValue); } switch ((MTDPerformanceTrackingMethod)target.MTDPerformanceTrackingMethodId) { case MTDPerformanceTrackingMethod.Cumulative: { goal = goalCalculator.CalculateCumulativeMTDGoal(target, monthId); } break; case MTDPerformanceTrackingMethod.Average: { goal = goalCalculator.CalculateAverageMTDGoal(target, monthId); } break; case MTDPerformanceTrackingMethod.Latest: { goal = goalCalculator.GetDailyMTDGoal(target, monthId); } break; default: break; } if (goal.HasValue) { if (target.Metric.DataTypeId == Constants.DataTypeWholeNumber) { goal = Math.Round(goal.Value, 0, MidpointRounding.AwayFromZero); } else { goal = Math.Round(goal.Value, 2, MidpointRounding.AwayFromZero); } } } return(goal); }