/// <summary> /// /// </summary> public RouteRegistry(List <Route> InRoutes = null, TagRegistry InTagRegistry = null) { TagRegistry = InTagRegistry; TagRegistry.TagDeleted += (Guid Id) => { bool TagsRemoved = false; for (int i = 0; i < Routes.Count; i++) { Route route = Routes[i]; if (route.SourceTagId == Id || route.DestinationTagId == Id) { RouteDeleted?.Invoke(route.Id); Routes.RemoveAt(i); i--; TagsRemoved = true; } } if (TagsRemoved) { RoutesUpdated?.Invoke(); } }; if (InRoutes != null) { Routes = InRoutes; } }
/// <summary> /// /// </summary> /// <param name="TagId"></param> public void DeleteRoute(Guid TagId) { Route Tag = GetRouteById(TagId); if (Tag == null) { return; } Routes.Remove(Tag); RouteDeleted?.Invoke(TagId); RoutesUpdated?.Invoke(); }
public async Task <IActionResult> DeleteAsync(int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!_entityIndex.Exists(ResourceType.Route, id)) { return(NotFound()); } var status = _entityIndex.Status(ResourceType.Route, id).GetValueOrDefault(); if (!UserPermissions.IsAllowedToDelete(User.Identity, status, _entityIndex.Owner(ResourceType.Route, id))) { return(Forbid()); } if (status == ContentStatus.Published) { return(BadRequest(ErrorMessages.CannotBeDeleted(ResourceType.Route, id))); } if (_referencesIndex.IsUsed(ResourceType.Route, id)) { return(BadRequest(ErrorMessages.ResourceInUse)); } // validation passed, emit event var ev = new RouteDeleted { Id = id, UserId = User.Identity.GetUserIdentity(), Timestamp = DateTimeOffset.Now }; await _eventStore.AppendEventAsync(ev); return(NoContent()); }