public ActionResult Create()
        {
            var role = this.GetRoleByName("Moderator");

            ForumBindingModel model = new ForumBindingModel();

            model.Moderators = this.GetUsersByRole(role.Id);

            return(this.View(model));
        }
        public ActionResult Create(ForumBindingModel model)
        {
            var role = this.GetRoleByName("Moderator");

            if (!this.ModelState.IsValid)
            {
                model.Moderators = this.GetUsersByRole(role.Id);

                return(this.View(model));
            }

            var moderatorsIds = model.Moderators
                                .Select(m => m.Id)
                                .ToArray();

            var users = this.UnitOfWork
                        .UserRepository
                        .Select(
                u => u.UserName == this.User.Identity.Name ||
                (moderatorsIds.Contains(u.Id) && u.Roles.Any(r => r.RoleId == role.Id)));

            var creator = users.FirstOrDefault(u => u.UserName == this.User.Identity.Name);

            Forum forum = new Forum()
            {
                Title       = model.Title,
                Description = model.Description,
                Date        = DateTime.Now,
                Creator     = creator
            };

            foreach (var user in users)
            {
                forum.Moderators.Add(user);
            }

            forum = this.UnitOfWork
                    .ForumRepository
                    .Add(forum);

            this.UnitOfWork.SaveChanges();

            return(this.RedirectToAction("View", "Home", new { Id = forum.ForumId }));
        }