public IHttpActionResult GetActualandCounterMeasureStatus(
            [FromUri] ActualStatusRequest request)
        {
            ApiResponse <ActualandCounterMeasureStatus> response =
                new ApiResponse <ActualandCounterMeasureStatus>();

            response.Data = counterMeasureManager.GetActualandCounterMeasureStatus(request);
            return(Ok(response));
        }
Esempio n. 2
0
        /// <summary>
        /// Round the actual item to two decimal places
        /// </summary>
        /// <param name="actualItem">Input actual item to round</param>
        public static void RoundActualStatusRequest(ActualStatusRequest actualItem)
        {
            // Round the actual value to two decimal places
            actualItem.ActualValue = decimal.Round(actualItem.ActualValue, 2,
                                                   MidpointRounding.AwayFromZero);

            if (actualItem.GoalValue.HasValue)
            {
                // Round the goal value to two decimal places
                actualItem.GoalValue = decimal.Round(actualItem.GoalValue.Value, 2,
                                                     MidpointRounding.AwayFromZero);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Method to check whether target is achieved or not by comparing goal and actuals based on
        /// goal type and return status and outstanding counter measure flag if any
        /// </summary>
        /// <param name="actualRequest">Actual Value</param>
        /// <returns>Actual and counter measure status</returns>
        public ActualandCounterMeasureStatus GetActualandCounterMeasureStatus(
            ActualStatusRequest actualRequest)
        {
            // Round the actual and goal value to two decimal places
            ActualUtility.RoundActualStatusRequest(actualRequest);

            // Find target with the given id
            var target = targetRepository.Get(actualRequest.TargetId);

            if (target != null && target.IsActive)
            {
                if (target.GraphPlottingMethodId.HasValue &&
                    target.GraphPlottingMethodId == Constants.GraphPlottingMethodCumulative &&
                    target.TrackingMethodId == Constants.TrackingMethodDaily)
                {
                    actualRequest.ActualValue = actualCalculator.CalculateCumulativeActual(
                        actualRequest.TargetId, actualRequest.SelectedDate, actualRequest.ActualValue) ?? 0;
                    actualRequest.GoalValue = goalCalculator.CalculateCumulativeGoal(
                        target, actualRequest.SelectedDate);
                }


                var actualandCounterMeasureStatus = new ActualandCounterMeasureStatus();

                actualandCounterMeasureStatus.ActualStatus = TargetActualComparer.GetActualStatus(
                    actualRequest.GoalValue, actualRequest.ActualValue, target.Metric.GoalTypeId);

                //if status is not met check for outstanding counter measures
                if (actualandCounterMeasureStatus.ActualStatus == ActualStatus.NotAchieved)
                {
                    actualandCounterMeasureStatus.OutstandingCounterMeasureExists =
                        CheckIfAnyOutstandingCounterMeasureExists(target);
                }
                return(actualandCounterMeasureStatus);
            }

            else
            {
                throw new NDMSBusinessException(Constants.TargetNotFound);
            }
        }