public ScheduleDto AddSchedule(AddScheduleCommand cmd) { var factory = new ScheduleFactory(); Schedule schedule = null; if (!Enum.TryParse(typeof(ScheduleType), cmd.ScheduleType, out var scheduleType)) { throw new ArgumentException($"Invalid schedule type: '{cmd.ScheduleType}'", nameof(cmd.ScheduleType)); } switch (scheduleType) { case ScheduleType.DateTime: schedule = factory.CreateDateTimeSchedule(cmd.Name, cmd.Description, cmd.StartDate, cmd.StartTime, cmd.Duration, cmd.EnabledUntil, cmd.IsEnabled); break; case ScheduleType.DaysOfMonth: schedule = factory.CreateDayOfMonthSchedule(cmd.Name, cmd.Description, cmd.StartDate, cmd.Days, cmd.StartTime, cmd.Duration, cmd.EnabledUntil, cmd.IsEnabled); break; case ScheduleType.DaysOfWeek: schedule = factory.CreateDayOfWeekSchedule(cmd.Name, cmd.Description, cmd.StartDate, cmd.Days, cmd.StartTime, cmd.Duration, cmd.EnabledUntil, cmd.IsEnabled); break; case ScheduleType.EvenDays: schedule = factory.CreateEvenDaysSchedule(cmd.Name, cmd.Description, cmd.StartDate, cmd.StartTime, cmd.Duration, cmd.EnabledUntil, cmd.IsEnabled); break; case ScheduleType.OddDays: factory.CreateOddDaysSchedule(cmd.Name, cmd.Description, cmd.StartDate, cmd.StartTime, cmd.Duration, cmd.EnabledUntil, cmd.IsEnabled); break; } foreach (var id in cmd.ZoneIds) { var zone = zoneRepository.Find(id); if (zone == null) { throw new Exception($"Zone with id '{id}' does not exist"); } schedule.AttachZone(id); } scheduleRepository.Add(schedule); AddToScheduler(schedule); return(new ScheduleDto(schedule.Id, schedule.Name, schedule.Description, schedule.ScheduleType.ToString(), schedule.StartTime, schedule.StartDate, schedule.Days, schedule.IsEnabled, schedule.Duration, schedule.EnabledUntil, schedule.ZoneIds)); }
public async Task Execute(IJobExecutionContext context) { var scheduleId = (Guid)context.JobDetail.JobDataMap.Get("scheduleId"); var schedule = scheduleRepository.Find(scheduleId); var zones = zoneRepository.Find(schedule.ZoneIds); foreach (var zone in zones) { controlService.Start(zone.Channel); } await Task.Delay(schedule.Duration); foreach (var zone in zones) { controlService.Stop(zone.Channel); } }
// // GET: /Zones/Details/5 public ViewResult Details(System.Guid id) { return(View(zoneRepository.Find(id))); }
public ZoneDto GetZone(Guid id) { var zone = zoneRepository.Find(id); return(new ZoneDto(zone.Id, zone.Name, zone.Description, zone.Channel, zone.IsEnabled, controlService.IsStarted(zone.Channel))); }
// GET: /Zones/Details/5 public ViewResult Details(long id) { return(View(zoneRepository.Find(id))); }