Beispiel #1
0
 public IActionResult EditProject(Guid ProjectId)
 {
     var project = Context.DocumentationProjects.FirstOrDefault(Curr => Curr.Id == ProjectId);
     if (project == null)
     {
         return HttpNotFound();
     }
     var usersWithAccess = Context.UserProjects.Where(Assignment => Assignment.ProjectId == project.Id).Select(Assignment => Assignment.User.Email).ToList();
     var usersWithoutAccess = Context.Users.Select(CurrentUser => CurrentUser.Email).Where(CurrentUser => !usersWithAccess.Contains(CurrentUser)).ToList();
     var model = new EditProjectViewModel();
     model.ProjectName = project.Name;
     model.IsPublic = project.IsPublic;
     model.PathToIndexPage = project.PathToIndex;
     model.UsersWithAccess = usersWithAccess;
     model.AvailableUsers = usersWithoutAccess;
     model.ApiKey = project.ApiKey;
     return View(model);
 }
Beispiel #2
0
 public IActionResult EditProject(Guid ProjectId, EditProjectViewModel model, List<string> SelectedUsers)
 {
     if (!ModelState.IsValid)
     {
         return View(model);
     }
     var databaseProject = Context.DocumentationProjects.FirstOrDefault(Project => Project.Id == ProjectId);
     if (databaseProject == null)
     {
         return HttpNotFound();
     }
     databaseProject.ApiKey = model.ApiKey;
     databaseProject.IsPublic = model.IsPublic;
     databaseProject.Name = model.ProjectName;
     databaseProject.PathToIndex = model.PathToIndexPage;
     Context.SaveChanges();
     var selectedUsersIds = Context.Users.Where(User => SelectedUsers.Contains(User.Email)).Select(User => User.Id).ToList();
     // Add missing users
     var usersToAdd = selectedUsersIds.Where(CurrentId => Context.UserProjects.All(Assignment => Assignment.UserId != CurrentId));
     foreach (var newUserId in usersToAdd)
     {
         Context.UserProjects.Add(new UserProjectAccess {UserId = newUserId, ProjectId = databaseProject.Id});
     }
     // Remove users that no longer have access
     var usersToRemove = Context.UserProjects.Where(Assignment => Assignment.ProjectId == databaseProject.Id).Where(Assignment => !selectedUsersIds.Contains(Assignment.UserId));
     Context.UserProjects.RemoveRange(usersToRemove);
     Context.SaveChanges();
     var usersWithAccess = Context.UserProjects.Where(Assignment => Assignment.ProjectId == databaseProject.Id).Select(Assignment => Assignment.User.Email).ToList();
     var usersWithoutAccess = Context.Users.Select(CurrentUser => CurrentUser.Email).Where(CurrentUser => !usersWithAccess.Contains(CurrentUser)).ToList();
     model.UsersWithAccess = usersWithAccess;
     model.AvailableUsers = usersWithoutAccess;
     ViewBag.SuccessMessage = $"Changed project {databaseProject.Name}.";
     return View(model);
 }