public IHttpActionResult GetActualandCounterMeasureStatus( [FromUri] ActualStatusRequest request) { ApiResponse <ActualandCounterMeasureStatus> response = new ApiResponse <ActualandCounterMeasureStatus>(); response.Data = counterMeasureManager.GetActualandCounterMeasureStatus(request); return(Ok(response)); }
/// <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); } }
/// <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); } }