internal bool LogEmail(int?editionId, string recipients, string body, string actorUserEmail, string actionName, ActionType?actionType = ActionType.NotificationEmailSend)
        {
            if (string.IsNullOrWhiteSpace(recipients))
            {
                return(false);
            }

            EditionEntity edition = null;

            if (editionId.HasValue)
            {
                edition = EditionServices.GetEditionById(editionId.Value);
            }

            foreach (var recipient in recipients.Split(','))
            {
                var additionalInfo = "Recipient: " + recipient + " | Body: " + body;
                additionalInfo = additionalInfo.StripHtml().Substr(500);

                var emailLog = CreateEmailLogFunc(edition, actionType.GetValueOrDefault(), actorUserEmail, actionName, additionalInfo);
                LogServices.CreateLog(emailLog);
            }

            return(true);
        }
        public IHttpActionResult Get(int id)
        {
            var edition = _editionServices.GetEditionById(id);

            if (edition == null)
            {
                return(NotFound());
            }
            return(Ok(edition));
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var request = filterContext.RequestContext.HttpContext.Request;

            var ip  = request.UserHostAddress;
            var url = request.RawUrl;

            if (!(filterContext.Controller is GlobalController controller))
            {
                return;
            }

            var actionAttr = filterContext.ActionDescriptor.GetCustomAttributes(typeof(CedActionAttribute), false).Cast <CedActionAttribute>().SingleOrDefault();

            if (actionAttr == null)
            {
                return;
            }

            if (!actionAttr.Loggable)
            {
                return;
            }

            var        actionTypeAttr = actionAttr.ActionType.GetAttribute <ActionTypeAttribute>();
            EntityType?entityType     = null;

            if (actionTypeAttr != null)
            {
                entityType = actionTypeAttr.EntityType;
            }

            int?   entityId   = null;
            string entityName = null;
            int?   eventId    = null;
            string eventName  = null;

            if (filterContext.RouteData.Values["id"] != null)
            {
                entityId = Convert.ToInt32(filterContext.RouteData.Values["id"]);
            }

            if (entityId == null)
            {
                if (filterContext.RequestContext.HttpContext.Request.Params["EditionId"] != null)
                {
                    entityId = Convert.ToInt32(filterContext.RequestContext.HttpContext.Request.Params["EditionId"]);
                }

                if (!string.IsNullOrWhiteSpace(filterContext.RequestContext.HttpContext.Request.Params["EventId"]))
                {
                    eventId = Convert.ToInt32(filterContext.RequestContext.HttpContext.Request.Params["EventId"]);
                }
            }

            if (entityId.HasValue)
            {
                if (entityType == EntityType.Edition)
                {
                    var edition = _editionServices.GetEditionById(entityId.Value, Constants.ValidEventTypesForCed);
                    if (edition != null)
                    {
                        entityId   = edition.EditionId;
                        entityName = edition.EditionName;
                        eventId    = edition.EventId;
                        eventName  = edition.Event.MasterName;
                    }
                }
                else if (entityType == EntityType.Event)
                {
                    var @event = _eventServices.GetEventById(entityId.Value, Constants.ValidEventTypesForCed);
                    if (@event != null)
                    {
                        entityId   = @event.EventId;
                        entityName = @event.MasterName;
                        eventId    = @event.EventId;
                        eventName  = @event.MasterName;
                    }
                }
            }

            var log = new LogEntity
            {
                Ip             = ip,
                Url            = url,
                ActorUserId    = controller.CurrentCedUser?.CurrentUser.UserId ?? 0,
                ActorUserEmail = controller.CurrentCedUser?.CurrentUser.Email,
                Controller     = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                Action         = filterContext.ActionDescriptor.ActionName,
                MethodType     = request.HttpMethod,
                ActionType     = actionAttr.ActionType,
                EntityType     = entityType,
                EntityId       = entityId,
                EntityName     = entityName,
                EventId        = eventId,
                EventName      = eventName,
                IsImpersonated = controller.CurrentCedUser?.IsImpersonated ?? false
            };

            filterContext.Controller.TempData["Log"] = log;
        }