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