Exemple #1
0
        /// <summary>
        /// Distribute the existing targets.
        /// </summary>
        /// <param name="request">The request to generate daily targets.</param>
        public IEnumerable <DailyTargetItem> DistributeExistingDailyTarget(GenerateDailyTargetsRequest request, int targetYear)
        {
            //gets the day list of the required month
            var dayList = CalendarUtility.GetAllDaysInMonth(targetYear, request.MonthId).ToList();

            var dailyTargetList = new List <DailyTargetItem>();

            dayList.ForEach(day =>
            {
                dailyTargetList.Add(new DailyTargetItem
                {
                    Day          = day,
                    IsHoliday    = holidayCalculator.CheckIfDateIsaHoliday(request.ScorecardId, day, request.MonthId, targetYear),
                    IsOutofRange = goalCalculator.CheckIfSelectedDateIsOutOfDateRange(request.EffectiveStartDate, request.EffectiveEndDate, new DateTime(targetYear, request.MonthId, day))
                });
            });

            var metric = metricRepository.Get(request.MetricId); // distribute monthly goal evenly

            if (request.MonthlyGoalValue.HasValue)
            {
                dailyTargetList = goalCalculator.DistributeMonthlyGoalValueAmongWorkdaysEvenly(dailyTargetList, metric.DataTypeId, request.MonthlyGoalValue.Value);
            }
            else if (request.DailyRateValue.HasValue)
            {
                dailyTargetList = goalCalculator.DistributeDailyRateAmongWorkDays(dailyTargetList, metric.DataTypeId, request.DailyRateValue.Value);
            }

            return(dailyTargetList);
        }
Exemple #2
0
        public IHttpActionResult GenerateDailyTargets([FromUri] GenerateDailyTargetsRequest request)
        {
            ApiResponse <IEnumerable <DailyTargetItem> > response = new
                                                                    ApiResponse <IEnumerable <DailyTargetItem> >();

            response.Data = targetManager.GenerateDailyTargetsList(request);
            return(Ok(response));
        }