/// <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); }
/// <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); }
/// <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); }