/// <summary>
        /// Adds a cancelled message to the display
        /// </summary>
        /// <param name="display"></param>
        /// <param name="header"></param>
        /// <param name="message"></param>
        /// <param name="headerArea"></param>
        /// <param name="headerAlias"></param>
        /// <param name="headerParams"></param>
        protected void AddCancelMessage(INotificationModel display, string message)
        {
            // if there's already a default event message, don't add our default one
            IEventMessagesFactory messages = EventMessages;

            if (messages?.GetOrDefault()?.GetAll().Any(x => x.IsDefaultEventMessage) == true)
            {
                return;
            }

            display.AddWarningNotification(LocalizedTextService.Localize("speechBubbles", "operationCancelledHeader"), message);
        }
        /// <summary>
        /// Adds a cancelled message to the display
        /// </summary>
        /// <param name="display"></param>
        /// <param name="messageArea"></param>
        /// <param name="messageAlias"></param>
        /// <param name="messageParams"></param>
        protected void AddCancelMessage(
            INotificationModel?display,
            string messageArea     = "speechBubbles",
            string messageAlias    = "operationCancelledText",
            string[]?messageParams = null)
        {
            // if there's already a default event message, don't add our default one
            IEventMessagesFactory messages = EventMessages;

            if (messages != null && (messages.GetOrDefault()?.GetAll().Any(x => x.IsDefaultEventMessage) ?? false))
            {
                return;
            }

            display?.AddWarningNotification(
                LocalizedTextService.Localize("speechBubbles", "operationCancelledHeader"),
                LocalizedTextService.Localize(messageArea, messageAlias, messageParams));
        }
        public void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.HttpContext.Response == null)
            {
                return;
            }

            if (context.HttpContext.Request.Method.Equals(HttpMethod.Get.ToString(), StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            if (!_umbracoContextAccessor.TryGetUmbracoContext(out _))
            {
                return;
            }

            if (!(context.Result is ObjectResult obj))
            {
                return;
            }

            if (obj.Value is not INotificationModel notifications)
            {
                return;
            }

            EventMessages?msgs = _eventMessagesFactory.GetOrDefault();

            if (msgs == null)
            {
                return;
            }

            foreach (EventMessage eventMessage in msgs.GetAll())
            {
                NotificationStyle msgType;
                switch (eventMessage.MessageType)
                {
                case EventMessageType.Default:
                    msgType = NotificationStyle.Save;
                    break;

                case EventMessageType.Info:
                    msgType = NotificationStyle.Info;
                    break;

                case EventMessageType.Error:
                    msgType = NotificationStyle.Error;
                    break;

                case EventMessageType.Success:
                    msgType = NotificationStyle.Success;
                    break;

                case EventMessageType.Warning:
                    msgType = NotificationStyle.Warning;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                notifications.Notifications?.Add(new BackOfficeNotification
                {
                    Message          = eventMessage.Message,
                    Header           = eventMessage.Category,
                    NotificationType = msgType
                });
            }
        }