public async Task <IActionResult> DeleteUserFromProject(string name, int id) { if (name != null) { IdentityUser user = await _userManager.FindByNameAsync(name); if (user != null) { List <ProjekteUserViewModel> userList = _context.ProjekteUserViewModel.ToList().FindAll(i => i.ProjekteId == id); ProjekteUserViewModel projectUser = userList.Find(n => n.UserId == user.Id); if (projectUser != null) { // Überprüfen ob die zu entfernen Person der Owner ist. Wenn ja kommt eine Fehlermeldung var projectRoles = _context.ProjectRoles.ToList().Where(x => x.ProjectId == id); var owner = projectRoles.Where(x => x.ProjectRole == "Owner").First(); var ownerUser = await _userManager.FindByIdAsync(owner.UserId); if (!ownerUser.UserName.Equals(name)) { _context.ProjekteUserViewModel.Remove(projectUser); DeleteUserFromProjectRoles(name, id); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "Projekte", new { id = id })); } else { return(RedirectToAction("ErrorMessage", new { ID = 8 })); } } } } return(NotFound("Error beim entfernen eines Nutzers")); }
public async Task <IActionResult> AddUserToProject([Bind("id,name")] AddUserModel userToProject) { // Die Methode steht nur Projektownern oder Admins zur Verfügung, sonst erscheit eine Fehlermeldung var roles = _context.ProjectRoles.ToList().FindAll(i => i.ProjectId == userToProject.id); ProjectRoles owner = roles.Find(o => o.ProjectRole == "Owner"); IdentityUser user = await _userManager.FindByIdAsync(owner.UserId); bool isAdmin = await _userManager.IsInRoleAsync(user, "Admin"); if (user.UserName != this.User.Identity.Name && !isAdmin) { return(RedirectToAction("ErrorMessage", new { ID = 7 })); } // Die Zuorndung eines Nutzers zu einem Projekt wird in der Tabelle ProjekteUserViewModel gespeichert if (userToProject.name != null) { IdentityUser newUser = await _userManager.FindByNameAsync(userToProject.name); if (newUser != null) { ProjekteUserViewModel newUserInProject = new ProjekteUserViewModel() { ProjekteId = userToProject.id, UserId = newUser.Id }; _context.Add(newUserInProject); ChangeUserProjectRole(newUser.Id, userToProject.id, "Nutzer"); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "Projekte", new { userToProject.id })); } else { return(RedirectToAction("ErrorMessage", new { ID = 6 })); } } return(NotFound("Error beim Hinzufügen eines Projekts")); }
public async Task <IActionResult> Create([Bind("Id,Projektname,Projektersteller,Mitglieder,Beschreibung,Deadline,Status")] IvA.Models.ProjekteModel projekte) { if (ModelState.IsValid) { _context.Add(projekte); //Status, Erstellungdatum, Mitglieder und Projektersteller werden automatisch gesetzt projekte.ErstelltAm = DateTime.Now; projekte.Status = "To Do"; projekte.Mitglieder = ""; projekte.Projektersteller = this.User.Identity.Name; await _context.SaveChangesAsync(); // Projektersteller als Mitglied setzen var userClaim = this.User; var loggedUser = await _userManager.GetUserAsync(userClaim); ProjekteUserViewModel firstMember = new ProjekteUserViewModel { ProjekteId = projekte.ProjekteId, UserId = loggedUser.Id }; _context.Add(firstMember); // Projektersteller zum Owner ernennen ProjectRoles owner = new ProjectRoles() { ProjectId = projekte.ProjekteId, ProjectRole = "Owner", UserId = loggedUser.Id }; _context.Add(owner); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "Projekte", new { id = projekte.ProjekteId })); } return(View(projekte)); }