public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } // Die Bearbeitenfunktion für Projekte steht nur Admins und Projektowner zur Verfügung var roles = _context.ProjectRoles.ToList().FindAll(i => i.ProjectId == id); ProjectRoles owner = roles.Find(o => o.ProjectRole == "Owner"); IdentityUser user = await _userManager.FindByIdAsync(owner.UserId); bool isAdmin = await _userManager.IsInRoleAsync(user, "Admin"); // Fehlermeldung, falls der User kein Admin oder Projektowner ist if (user.UserName != this.User.Identity.Name && !isAdmin) { return(RedirectToAction("ErrorMessage", new { ID = 1 })); } IvA.Models.ProjekteModel projekte = await _context.Projekte.FindAsync(id); if (projekte == null) { return(NotFound()); } return(View(projekte)); }
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)); }
public async Task <IActionResult> Edit(int id, [Bind("ProjekteId,Projektname,Projektersteller,ErstelltAm,Mitglieder,Beschreibung,Deadline,Status")] IvA.Models.ProjekteModel projekte) { if (id != projekte.ProjekteId) { return(NotFound()); } if (ModelState.IsValid && projekte.Projektersteller != null) { var owner = await _userManager.FindByNameAsync(projekte.Projektersteller); if (owner != null) { try { _context.Update(projekte); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProjekteExists(projekte.ProjekteId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", "Projekte", new { id })); } else { return(RedirectToAction("ErrorMessage", new { ID = 4 }));; } } return(View(projekte)); }