/// <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); }
public IHttpActionResult GenerateDailyTargets([FromUri] GenerateDailyTargetsRequest request) { ApiResponse <IEnumerable <DailyTargetItem> > response = new ApiResponse <IEnumerable <DailyTargetItem> >(); response.Data = targetManager.GenerateDailyTargetsList(request); return(Ok(response)); }