コード例 #1
0
        /// <summary>
        /// Error(s) are removed.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXErrorDeleteResponse Post(GXErrorDeleteRequest request)
        {
            IAuthSession s  = this.GetSession(false);
            int          id = Convert.ToInt32(s.Id);

            if (id == 0)
            {
                throw new ArgumentException("Remove failed. Invalid session ID.");
            }
            if (!GuruxAMI.Server.GXBasicAuthProvider.CanUserEdit(s))
            {
                throw new ArgumentException("Remove not allowed.");
            }
            List <GXEventsItem>     events    = new List <GXEventsItem>();
            List <GXAmiDeviceError> errors    = new List <GXAmiDeviceError>();
            List <GXAmiSystemError> sysErrors = new List <GXAmiSystemError>();
            bool    superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
            AppHost host       = this.ResolveService <AppHost>();

            lock (Db)
            {
                //Remove system errors.
                if (request.System || request.SystemErrorIDs != null)
                {
                    foreach (uint it in request.SystemErrorIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        sysErrors.AddRange(Db.Select <GXAmiSystemError>(p => p.Id == it));
                    }
                    foreach (GXAmiSystemError it in sysErrors)
                    {
                        events.Add(new GXEventsItem(ActionTargets.SystemError, Actions.Remove, it));
                    }
                    Db.DeleteByIds <GXAmiSystemError>(sysErrors);
                }
                else
                {
                    //Remove device errors by ID.
                    if (request.DeviceErrorIDs != null)
                    {
                        foreach (uint it in request.DeviceErrorIDs)
                        {
                            if (it == 0)
                            {
                                throw new ArgumentException("ID is required");
                            }
                            errors.AddRange(Db.Select <GXAmiDeviceError>(p => p.Id == it));
                        }
                    }
                    //Remove device errors.
                    if (request.DeviceID != 0)
                    {
                        errors.AddRange(Db.Select <GXAmiDeviceError>(p => p.TargetDeviceID == request.DeviceID));
                    }
                    if (errors.Count == 0)
                    {
                        //Remove all log items.
                        if (superAdmin)
                        {
                            errors.AddRange(Db.Select <GXAmiDeviceError>());
                        }
                    }
                    foreach (GXAmiDeviceError it in errors)
                    {
                        events.Add(new GXEventsItem(ActionTargets.DeviceError, Actions.Remove, it));
                    }
                    Db.DeleteByIds <GXAmiDeviceError>(errors);
                }
                host.SetEvents(Db, this.Request, id, events);
                return(new GXErrorDeleteResponse());
            }
        }
コード例 #2
0
        /// <summary>
        /// Error(s) are removed.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXErrorDeleteResponse Post(GXErrorDeleteRequest request)
		{
            IAuthSession s = this.GetSession(false);
            int id = Convert.ToInt32(s.Id);
            if (id == 0)
            {
                throw new ArgumentException("Remove failed. Invalid session ID.");
            }
            if (!GuruxAMI.Server.GXBasicAuthProvider.CanUserEdit(s))
            {
                throw new ArgumentException("Remove not allowed.");
            }
            List<GXEventsItem> events = new List<GXEventsItem>();
            List<GXAmiDeviceError> errors = new List<GXAmiDeviceError>();
            List<GXAmiSystemError> sysErrors = new List<GXAmiSystemError>();
            bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
            AppHost host = this.ResolveService<AppHost>();
            lock (Db)
            {
                //Remove system errors.
                if (request.System || request.SystemErrorIDs != null)
                {
                    foreach (uint it in request.SystemErrorIDs)
                    {
                        if (it == 0)
                        {
                            throw new ArgumentException("ID is required");
                        }
                        sysErrors.AddRange(Db.Select<GXAmiSystemError>(p => p.Id == it));
                    }
                    foreach (GXAmiSystemError it in sysErrors)
                    {
                        events.Add(new GXEventsItem(ActionTargets.SystemError, Actions.Remove, it));
                    }
                    Db.DeleteByIds<GXAmiSystemError>(sysErrors);
                }
                else
                {
                    //Remove device errors by ID.
                    if (request.DeviceErrorIDs != null)
                    {
                        foreach (uint it in request.DeviceErrorIDs)
                        {
                            if (it == 0)
                            {
                                throw new ArgumentException("ID is required");
                            }
                            errors.AddRange(Db.Select<GXAmiDeviceError>(p => p.Id == it));
                        }
                    }
                    //Remove device errors.
                    if (request.DeviceID != 0)
                    {
                        errors.AddRange(Db.Select<GXAmiDeviceError>(p => p.TargetDeviceID == request.DeviceID));
                    }
                    if (errors.Count == 0)
                    {
                        //Remove all log items.
                        if (superAdmin)
                        {
                            errors.AddRange(Db.Select<GXAmiDeviceError>());
                        }
                    }
                    foreach (GXAmiDeviceError it in errors)
                    {
                        events.Add(new GXEventsItem(ActionTargets.DeviceError, Actions.Remove, it));
                    }
                    Db.DeleteByIds<GXAmiDeviceError>(errors);
                }
                host.SetEvents(Db, this.Request, id, events);
                return new GXErrorDeleteResponse();
            }
		}