void TimerEvent() { var poolRepo = new ReservationPoolRepository(_configuration); var weekRepo = new ReservationWeekRepository(_configuration); // Remove yesterday reservation poolRepo.DeleteLastDays(); // Update Pool Days // Update Pool datas UpdateWeek(poolRepo, weekRepo); }
void UpdateWeek(ReservationPoolRepository poolRepo, ReservationWeekRepository weekRepo) { var list = weekRepo.GetAll(); // 세팅이 있는만큼 반복. foreach (var setting in list) { // 14일 동안 반복 for (int i = 0; i < 14; i++) { DateTime targetDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day) .Add(TimeSpan.FromDays(i)); // 인터벌 만큼 반복 for (int j = 0; j < setting.IntervalCount; j++) { CheckingAndUpdate(setting, targetDate, poolRepo, weekRepo, j); } } } }
private void CheckingAndUpdate(ReservationWeek setting, DateTime targetDate, ReservationPoolRepository poolRepo, ReservationWeekRepository weekRepo, int interval) { var dayOfWeek = targetDate.DayOfWeek; // Checking 해당하는 요일이고, ture이면 아래로 진행 switch (dayOfWeek) { case DayOfWeek.Monday: if (setting.Monday != true) { return; } break; case DayOfWeek.Thursday: if (setting.Thursday != true) { return; } break; case DayOfWeek.Wednesday: if (setting.Wednesday != true) { return; } break; case DayOfWeek.Tuesday: if (setting.Tuesday != true) { return; } break; case DayOfWeek.Friday: if (setting.Friday != true) { return; } break; case DayOfWeek.Saturday: if (setting.Saturday != true) { return; } break; case DayOfWeek.Sunday: if (setting.Sunday != true) { return; } break; default: return; break; } // todo : // 통과하면 실행 if (!poolRepo.IsExistScadule(targetDate, setting.RoadID)) { poolRepo.Insert(targetDate, setting, interval); } }