/// <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()); } }
/// <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(); } }