Exemple #1
0
        /// <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;
            }
        }
Exemple #2
0
        /// <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());
        }