public ActionResult NewPost(string type, string id, string groupId)
        {
            try
            {
                var ownerType = (ForumOwnerTypeEnum)Enum.Parse(typeof(ForumOwnerTypeEnum), type);

                Guid memId = RDN.Library.Classes.Account.User.GetMemberId();
                if (ownerType != ForumOwnerTypeEnum.main)
                    if (!MemberCache.IsMemberApartOfForum(memId, new Guid(id)))
                        return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                Models.Forum.NewPost post = new Models.Forum.NewPost();

                post.ForumId = new Guid(id);
                post.ForumType = ownerType;

                if (ownerType != ForumOwnerTypeEnum.main)
                    post.IsManagerOrBetter = MemberCache.IsSecretaryOrBetterOfLeague(memId);
                if (!String.IsNullOrEmpty(groupId))
                {
                    post.GroupId = Convert.ToInt64(groupId);
                    var groups = MemberCache.GetGroupsApartOf(memId);
                    var g = groups.Where(x => x.Id == post.GroupId).FirstOrDefault();
                    if (g != null)
                        post.GroupName = g.GroupName;
                    else
                        post.GroupName = "Forum";
                    post.ForumCategories = new SelectList(Forum.GetCategoriesOfForum(new Guid(id), post.GroupId), "CategoryId", "CategoryName");
                    if (!post.IsManagerOrBetter)
                        post.IsManagerOrBetter = MemberCache.IsModeratorOrBetterOfLeagueGroup(memId, post.GroupId);
                }
                else
                {
                    post.ForumCategories = new SelectList(Forum.GetCategoriesOfForum(new Guid(id), post.GroupId), "CategoryId", "CategoryName");
                    post.GroupName = "Forum";
                }
                var settings = Forum.GetForumSettings(post.ForumId, post.GroupId);
                post.BroadcastMessage = settings.BroadCastPostsDefault;
                return View(post);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult EditPost(string forumId, string messageId)
        {
            try
            {
                Guid memId = RDN.Library.Classes.Account.User.GetMemberId();

                if (!MemberCache.IsMemberApartOfForum(memId, new Guid(forumId)) && !MemberCache.IsAdministrator(memId))
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                Models.Forum.NewPost post = new Models.Forum.NewPost();
                var topic = Forum.GetForumMessage(new Guid(forumId), Convert.ToInt64(messageId));
                //not the owner of the message
                if (topic.Member.MemberId != RDN.Library.Classes.Account.User.GetMemberId())
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));

                post.Message = topic.MessageHTML;
                post.MessageMarkDown = topic.MessageMarkDown;
                post.TopicId = topic.TopicId;
                post.ForumId = topic.ForumId;
                post.ForumType = ForumOwnerTypeEnum.league;
                return View(post);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult QuotePost(string forumId, string topicId, string messageId)
        {
            try
            {
                Guid memId = RDN.Library.Classes.Account.User.GetMemberId();

                if (!MemberCache.IsMemberApartOfForum(memId, new Guid(forumId)) && !MemberCache.IsAdministrator(memId))
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);


                Models.Forum.NewPost post = new Models.Forum.NewPost();
                var topic = ForumTopicCache.GetTopic(new Guid(forumId), Convert.ToInt64(topicId));
                var isWatching = topic.Watchers.Where(x => x.MemberId == memId).FirstOrDefault();
                if (isWatching != null)
                    topic.IsWatching = true;
                else
                    topic.IsWatching = false;


                var message = topic.Messages.Where(x => x.MessageId == Convert.ToInt64(messageId)).FirstOrDefault();

                post.Messages = topic.Messages.OrderByDescending(x => x.Created).ToList();

                string s = "[quote]";
                string y = "[/quote]";
                post.Message = s + message.MessagePlain + y;
                post.MessageMarkDown = s + message.MessageMarkDown + y;
                post.TopicId = topic.TopicId;
                post.ForumId = topic.ForumId;
                post.ForumType = ForumOwnerTypeEnum.league;
                return View(post);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }
        public ActionResult ReplyMessage(string forumId, string topicId)
        {
            try
            {
                Guid memId = RDN.Library.Classes.Account.User.GetMemberId();

                if (!MemberCache.IsMemberApartOfForum(memId, new Guid(forumId)) && new Guid(forumId) != ServerConfig.DEFAULT_RDN_FORUM_ID)
                    return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));

                var league = MemberCache.GetLeagueOfMember(memId);
                if (league != null)
                    SetCulture(league.CultureSelected);


                Models.Forum.NewPost post = new Models.Forum.NewPost();
                var topic = ForumTopicCache.GetTopic(new Guid(forumId), Convert.ToInt64(topicId));
                var isWatching = topic.Watchers.Where(x => x.MemberId == memId).FirstOrDefault();
                if (isWatching != null)
                    topic.IsWatching = true;
                else
                    topic.IsWatching = false;
                post.Messages = topic.Messages.OrderByDescending(x => x.Created).ToList();
                post.ForumId = topic.ForumId;
                post.ForumType = topic.ForumType;
                post.TopicId = topic.TopicId;
                post.TopicTitle = topic.TopicTitle;
                post.BroadcastMessage = topic.BroadcastForumTopic;
                return View(post);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww));
        }