Esempio n. 1
0
        /// <summary>
        /// Convert Monthly Actual to Monthly Actual History
        /// </summary>
        /// <param name="monthlyActual">Monthly Actual</param>
        /// <returns>Monthly Actual History</returns>
        public static MonthlyActualHistory ConvertMonthlyActualToMonthlyActualHistory
            (MonthlyActual monthlyActual)
        {
            var monthlyActualHistory = new MonthlyActualHistory()
            {
                MonthlyActualId = monthlyActual.Id,
                Month           = monthlyActual.Month,
                ActualValue     = monthlyActual.ActualValue,
                Status          = monthlyActual.Status,
                TargetId        = monthlyActual.TargetId,
                CreatedOn       = monthlyActual.CreatedOn,
                LastModifiedOn  = monthlyActual.LastModifiedOn,
                CreatedBy       = monthlyActual.CreatedBy,
                LastModifiedBy  = monthlyActual.LastModifiedBy
            };

            return(monthlyActualHistory);
        }
Esempio n. 2
0
        /// <summary>
        /// Create MonthlyActual entity from ActualEntry request
        /// </summary>
        /// <param name="actualRequest">Actual entry</param>
        /// <param name="goalTypeId">Goal type id</param>
        /// <param name="loggedInUserId">Logged in user id</param>
        /// <returns></returns>
        private MonthlyActual CreateMonthlyActual(ActualItem actualRequest, int goalTypeId,
                                                  int loggedInUserId)
        {
            DateTime curTimestamp  = TimeZoneUtility.GetCurrentTimestamp();
            var      monthlyActual = new MonthlyActual()
            {
                Month       = actualRequest.Date.Month,
                ActualValue = actualRequest.ActualValue,
                Status      = TargetActualComparer.GetActualStatus(actualRequest.GoalValue,
                                                                   actualRequest.ActualValue, goalTypeId),
                TargetId       = actualRequest.TargetId,
                CreatedOn      = curTimestamp,
                LastModifiedOn = curTimestamp,
                CreatedBy      = loggedInUserId,
                LastModifiedBy = loggedInUserId
            };

            monthlyActual.MonthlyActualHistory = new List <MonthlyActualHistory>()
            {
                ActualConverters.ConvertMonthlyActualToMonthlyActualHistory(monthlyActual)
            };
            return(monthlyActual);
        }
Esempio n. 3
0
        /// <summary>
        /// Update existing monthly actual while adding or updating daily actuals
        /// </summary>
        /// <param name="existingActual">existing monthly actual</param>
        /// <param name="actualUpdRequest">Actual update 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>Updated monthly actual</returns>
        public virtual MonthlyActual UpdateExistingMonthlyActualOfDailyActual(
            MonthlyActual existingActual, ActualItem actualUpdRequest,
            int goalTypeId, int dataTypeId, int loggedInUserId)
        {
            //set monthly actual value as sum of daily actuals in case
            //metric data type is amount/whole number
            if (dataTypeId == Constants.DataTypeAmount ||
                dataTypeId == Constants.DataTypeWholeNumber ||
                dataTypeId == Constants.DataTypeDecimalNumber)
            {
                if (actualUpdRequest.ActualValue != null)
                {
                    existingActual.ActualValue = FindSumOfDailyActualsExcludingCurrentEntryDate
                                                     (actualUpdRequest.TargetId, actualUpdRequest.Date) +
                                                 actualUpdRequest.ActualValue.Value;
                }
            }
            else
            {
                existingActual.ActualValue = actualUpdRequest.ActualValue;
            }

            existingActual.LastModifiedBy = loggedInUserId;
            existingActual.LastModifiedOn = TimeZoneUtility.GetCurrentTimestamp();
            decimal?monthlyTarget = goalCalculator.GetMonthlyGoal(actualUpdRequest.TargetId,
                                                                  actualUpdRequest.Date.Month);

            existingActual.Status = TargetActualComparer.GetActualStatus(monthlyTarget,
                                                                         existingActual.ActualValue, goalTypeId);

            // Add the history as well
            existingActual.MonthlyActualHistory.Add(
                ActualConverters.ConvertMonthlyActualToMonthlyActualHistory(existingActual));

            return(existingActual);
        }