/// <summary> /// Adjusts(add or update)monthly actual when adding a new daily actual /// </summary> /// <param name="actualRequest">actual request</param> /// <param name="goalTypeId">goal type id</param> /// <param name="dataTypeId">data type id</param> /// <param name="loggedInUserId">logged in user id</param> /// <returns>Adjusted monthly Actual Entity after including daily target</returns> private MonthlyActual AdjustMonthlyActual(ActualItem actualRequest, int goalTypeId, int dataTypeId, int loggedInUserId) { // Get existing monthly actual entry if exists var existingMonthlyActual = monthlyActualRepository.GetAll().FirstOrDefault(x => x.TargetId == actualRequest.TargetId && x.Month == actualRequest.Date.Month); if (existingMonthlyActual != null) { // updating existing monthly actual return(UpdateExistingMonthlyActualOfDailyActual(existingMonthlyActual, actualRequest, goalTypeId, dataTypeId, loggedInUserId)); } else { DateTime curTimestamp = TimeZoneUtility.GetCurrentTimestamp(); // get monthly target decimal?monthlyTarget = goalCalculator.GetMonthlyGoal(actualRequest.TargetId, actualRequest.Date.Month); // Assign the monthly target instead of daily target, because we // need to create monthly actual here actualRequest.GoalValue = monthlyTarget; return(CreateMonthlyActual(actualRequest, goalTypeId, loggedInUserId)); } }