/// <summary> /// Start, Stop or run selected schedules. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXScheduleActionResponse Post(GXScheduleActionRequest request) { //TODO: Check that use has access to the schedule. List <GXEventsItem> events = new List <GXEventsItem>(); List <GXAmiSchedule> list = new List <GXAmiSchedule>(); IAuthSession s = this.GetSession(false); long userId = Convert.ToInt64(s.Id); if (request.Action != Gurux.Device.ScheduleState.Run && request.Action != Gurux.Device.ScheduleState.Start && request.Action != Gurux.Device.ScheduleState.TaskStart && request.Action != Gurux.Device.ScheduleState.TaskFinish && request.Action != Gurux.Device.ScheduleState.End) { throw new ArgumentOutOfRangeException("Schedule execution failed."); } lock (Db) { foreach (ulong it in request.ScheduleIDs) { list = Db.Select <GXAmiSchedule>(q => q.Id == it); if (list.Count != 1) { throw new Exception("Unknown schedule."); } if (request.Action == Gurux.Device.ScheduleState.Run) { list[0].Status = Gurux.Device.ScheduleState.Run; } if (request.Action == Gurux.Device.ScheduleState.Start) { list[0].Status = Gurux.Device.ScheduleState.Start; } else if (request.Action == Gurux.Device.ScheduleState.TaskStart) { list[0].Status |= Gurux.Device.ScheduleState.TaskRun; } else if (request.Action == Gurux.Device.ScheduleState.TaskFinish) { list[0].Status &= ~Gurux.Device.ScheduleState.TaskRun; } else if (request.Action == Gurux.Device.ScheduleState.End) { list[0].Status = Gurux.Device.ScheduleState.None; } else { System.Diagnostics.Debug.Assert(false); } events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.State, list[0])); } } AppHost host = this.ResolveService <AppHost>(); host.SetEvents(Db, this.Request, userId, events); return(new GXScheduleActionResponse()); }
/// <summary> /// Start, Stop or run selected schedules. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXScheduleActionResponse Post(GXScheduleActionRequest request) { //TODO: Check that use has access to the schedule. List<GXEventsItem> events = new List<GXEventsItem>(); List<GXAmiSchedule> list = new List<GXAmiSchedule>(); IAuthSession s = this.GetSession(false); long userId = Convert.ToInt64(s.Id); if (request.Action != Gurux.Device.ScheduleState.Run && request.Action != Gurux.Device.ScheduleState.Start && request.Action != Gurux.Device.ScheduleState.TaskStart && request.Action != Gurux.Device.ScheduleState.TaskFinish && request.Action != Gurux.Device.ScheduleState.End) { throw new ArgumentOutOfRangeException("Schedule execution failed."); } lock (Db) { foreach (ulong it in request.ScheduleIDs) { list = Db.Select<GXAmiSchedule>(q => q.Id == it); if (list.Count != 1) { throw new Exception("Unknown schedule."); } if (request.Action == Gurux.Device.ScheduleState.Run) { list[0].Status = Gurux.Device.ScheduleState.Run; } if (request.Action == Gurux.Device.ScheduleState.Start) { list[0].Status = Gurux.Device.ScheduleState.Start; } else if (request.Action == Gurux.Device.ScheduleState.TaskStart) { list[0].Status |= Gurux.Device.ScheduleState.TaskRun; } else if (request.Action == Gurux.Device.ScheduleState.TaskFinish) { list[0].Status &= ~Gurux.Device.ScheduleState.TaskRun; } else if (request.Action == Gurux.Device.ScheduleState.End) { list[0].Status = Gurux.Device.ScheduleState.None; } else { System.Diagnostics.Debug.Assert(false); } events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.State, list[0])); } } AppHost host = this.ResolveService<AppHost>(); host.SetEvents(Db, this.Request, userId, events); return new GXScheduleActionResponse(); }