コード例 #1
0
        /// <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);
        }