Пример #1
0
        /// <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();
        }