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 })); }