Example #1
0
        /// <summary>
        /// Method to get sum of targets of Child Scorecards for a month
        /// </summary>
        /// <param name="cascadedTargetId">target to be added/updated</param>
        /// <param name="parentTargetId">parent target</param>
        /// <param name="monthlyTarget">monthly target</param>
        /// <returns></returns>
        private decimal GetSumOfChildScorecardTarget(int?cascadedTargetId, int parentTargetId,
                                                     MonthlyTargetItem monthlyTarget)
        {
            decimal sumOfChildScorecardsMonthlyTarget = 0;
            //get all child scorecard targets having cascade from parent enabled
            var siblingTargets = targetRepository.GetAll().Where(x =>
                                                                 x.ParentTargetId == parentTargetId &&
                                                                 x.CascadeFromParent && x.IsActive &&
                                                                 (cascadedTargetId.HasValue ? x.Id != cascadedTargetId.Value : x.Id == x.Id))
                                 .ToList();

            //iterating through child scorecard
            foreach (var child in siblingTargets)
            {
                var monthlyTargetOfChild = child.MonthlyTargets
                                           .FirstOrDefault(x => x.Month == monthlyTarget.Month.Id &&
                                                           x.MaxGoalValue.HasValue);
                if (monthlyTargetOfChild != null)
                {
                    sumOfChildScorecardsMonthlyTarget = sumOfChildScorecardsMonthlyTarget
                                                        + monthlyTargetOfChild.MaxGoalValue.Value;
                }
            }
            sumOfChildScorecardsMonthlyTarget = sumOfChildScorecardsMonthlyTarget
                                                + monthlyTarget.GoalValue.Value;

            return(sumOfChildScorecardsMonthlyTarget);
        }
Example #2
0
        /// <summary>
        /// Convert MonthlyTargetItem data structure to MonthlyTarget
        /// </summary>
        /// <param name="monthlyTarget">Input MonthlyTargetItem</param>
        /// <param name="loggedInUserId">Logged In UserId</param>
        /// <returns>MonthlyTarget DS</returns>
        public static MonthlyTarget ConvertMonthlyTargetItemToMonthlyTargetEntity(
            MonthlyTargetItem monthlyTarget, int loggedInUserId)
        {
            DateTime      curTimestamp = TimeZoneUtility.GetCurrentTimestamp();
            MonthlyTarget mthlyTarget  = new MonthlyTarget();

            mthlyTarget.Month            = monthlyTarget.Month.Id;
            mthlyTarget.MaxGoalValue     = monthlyTarget.GoalValue;
            mthlyTarget.DailyRate        = monthlyTarget.DailyRateValue;
            mthlyTarget.StretchGoalValue = monthlyTarget.StretchGoalValue;
            mthlyTarget.CreatedOn        = curTimestamp;
            mthlyTarget.LastModifiedOn   = curTimestamp;
            mthlyTarget.CreatedBy        = loggedInUserId; //Need to update with logged in user in future
            mthlyTarget.LastModifiedBy   = loggedInUserId; //Need to update with logged in user in future
            return(mthlyTarget);
        }
Example #3
0
        /// <summary>
        /// Method to convert monthly target entity to monthly target item DTO
        /// </summary>
        /// <param name="monthlyTarget">MonthlyTarget Entity</param>
        /// <param name="monthItem">MonthItem DTO</param>
        /// <returns></returns>
        public static MonthlyTargetItem ConvertMonthlyTargetToMonthlyTargetItemDTO
            (MonthlyTarget monthlyTarget, MonthItem monthItem)
        {
            var currentDate = TimeZoneUtility.GetCurrentTimestamp();

            var monthlyTargetItem = new MonthlyTargetItem()
            {
                Id                     = monthlyTarget.Id,
                Month                  = monthItem,
                GoalValue              = monthlyTarget.MaxGoalValue,
                DailyRateValue         = monthlyTarget.DailyRate,
                StretchGoalValue       = monthlyTarget.StretchGoalValue,
                HasManualTarget        = monthlyTarget.DailyTargets.Any(x => x.IsManual),
                HasRolledUpDailyTarget = monthlyTarget.DailyTargets.Any(x => x.RolledUpGoalValue != null),
                HasDailyTarget         = monthlyTarget.DailyTargets.Any(x => x.MaxGoalValue != null),
                IsPastMonth            = (monthItem.Id < (currentDate.Month - 1) && monthItem.Year == currentDate.Year) || monthItem.Year < currentDate.Year,
                RolledupGoalValue      = monthlyTarget.RolledUpGoalValue
            };

            return(monthlyTargetItem);
        }
Example #4
0
 /// <summary>
 /// Function to check if currently updating monthly target item need to be regenerated due to a change in effective start dat in that month
 /// </summary>
 /// <param name="targetItem"></param>
 /// <param name="existingTarget"></param>
 /// <param name="updatingMonth"></param>
 /// <returns></returns>
 public bool CheckIfEffectiveDateChangeInvolvesSelectedMonthlyTarget(TargetItem targetItem, Target existingTarget, MonthlyTargetItem updatingMonth)
 {
     if (targetItem.EffectiveStartDate == existingTarget.EffectiveStartDate && targetItem.EffectiveEndDate == existingTarget.EffectiveEndDate)
     {
         return(false);
     }
     else
     {
         if (targetItem.EffectiveStartDate != existingTarget.EffectiveStartDate)
         {
             return(updatingMonth.Month.Id == targetItem.EffectiveStartDate.Month || updatingMonth.Month.Id == existingTarget.EffectiveStartDate.Month);
         }
         else
         {
             return(updatingMonth.Month.Id == targetItem.EffectiveEndDate.Month || updatingMonth.Month.Id == existingTarget.EffectiveEndDate.Month);
         }
     }
 }
Example #5
0
        /// <summary>
        /// Function to check if currently updating month required system regenerated dialyTargets
        /// </summary>
        /// <param name="targetItem"></param>
        /// <param name="existingTarget"></param>
        /// <param name="updatingMonth"></param>
        /// <returns></returns>
        public bool CheckIfSelectedMonthNeedsUpdation(TargetItem targetItem, Target existingTarget, MonthlyTargetItem updatingMonth)
        {
            bool updateMonthlyTarget = false;
            var  existingMonth       = existingTarget.MonthlyTargets?.FirstOrDefault(x => x.Month == updatingMonth.Month.Id);

            if (existingMonth != null)
            {
                updateMonthlyTarget = CheckIfTargetExistsForHolidays(existingMonth, targetItem.ScorecardId, targetItem.EffectiveEndDate.Year);
            }
            updateMonthlyTarget = updateMonthlyTarget || CheckIfEffectiveDateChangeInvolvesSelectedMonthlyTarget(targetItem, existingTarget, updatingMonth);
            return(updateMonthlyTarget);
        }