Esempio n. 1
0
        public object AddComment(ScheduleItemAddress scheduleItemAddress, CommentInput commentInput)
        {
            if (context.Site.CommentingDisabled)
            {
                return(null);
            }

            Event evnt = eventService.GetEvent(scheduleItemAddress.ToEventAddress());

            if (evnt == null)
            {
                return(null);
            }

            ScheduleItem scheduleItem = scheduleItemService.GetScheduleItem(scheduleItemAddress);

            if (scheduleItem == null)
            {
                return(null);
            }

            ModelResult <ScheduleItemComment> addCommentResults = commentService.AddComment(scheduleItemAddress, commentInput);

            if (!addCommentResults.IsValid)
            {
                ModelState.AddModelErrors(addCommentResults.ValidationState);

                return(Item(scheduleItemAddress));
            }

            if (!context.User.IsAuthenticated)
            {
                if (commentInput.SaveAnonymousUser)
                {
                    Response.Cookies.SetAnonymousUser(commentInput.Creator);
                }
                else if (Request.Cookies.GetAnonymousUser() != null)
                {
                    Response.Cookies.ClearAnonymousUser();
                }
            }

            return(new RedirectResult(
                       addCommentResults.Item.State != EntityState.PendingApproval
                ? Url.Comment(addCommentResults.Item)
                : Url.CommentPending(addCommentResults.Item)
                       ));
        }