public async Task Execute() { if (DateTime.Now.Day >= 23) { // simplistic check, but it'll do if no one messes with the DB directly if (SchedulesForNextMonthAlreadyExist()) { Console.WriteLine("Schedules for next month already in place"); return; } // TODO make sure the schedules for the current month are in place; // right now, this is at the mercy of Hanfire's scheduler ... var schedules = new NaiveMonthlyScheduleGenerator(Employees) .Generate(forNextMonth: true); // TODO add a bulk insert method, perhaps schedules.Select(schedule => schedule.ToPersistedModel()).ToList() .ForEach(schedule => _scheduleRepository.Add(schedule)); Console.WriteLine("Generated schedules for next month"); await Task.CompletedTask; } else { Console.WriteLine("Not generating schedules for next month until the 23rd"); await Task.CompletedTask; } }
public void GeneratesValidSchedulesToCoverAllWorkingDaysInMonth() { var monthlyScheduleGenerator = new NaiveMonthlyScheduleGenerator(People); var schedules = monthlyScheduleGenerator.Generate(); Assert.Equal(WorkdaysInMonth.Count() * 2, schedules.Count()); }
public async Task Execute() { // simplistic check, but it'll do if no one messes with the DB directly if (SchedulesForCurrentMonthAlreadyExist()) { Console.WriteLine("Schedules for current month already in place"); return; } var schedules = new NaiveMonthlyScheduleGenerator(Employees).Generate(); // TODO add a bulk insert method, perhaps schedules.Select(schedule => schedule.ToPersistedModel()).ToList() .ForEach(schedule => _scheduleRepository.Add(schedule)); Console.WriteLine("Generated schedules for current month"); await Task.CompletedTask; }