public async Task <IActionResult> PaketErstellen([Bind("ArbeitsPaketId,PaketName,Beschreibung,Mitglieder,Zeitbudget,Frist,Status")] ArbeitsPaketModel arbeitsPaket, ProjekteArbeitsPaketeViewModel ProPaViewMo, int pId) { if (ModelState.IsValid) { // EInem Arbeitspaket wird die ProjektID anhand der in der URL übergebenen ID zugeordnet var ProId = RouteData.Values["id"]; arbeitsPaket.Status = "To do"; arbeitsPaket.ProjektId = Int32.Parse((string)ProId); //Deadline eines spezifischen Projektes auswählen var Projects = _context.Projekte.ToList(); var Deadline = (from p in Projects where p.ProjekteId == Int32.Parse((string)ProId) select p.Deadline).FirstOrDefault(); //Fehlermeldung, wenn die Frist eines Arbeitspaketes später als die Deadline des zugeordneten Projektes gewählt wird if (arbeitsPaket.Frist >= Deadline) { return(RedirectToAction("ErrorMessage", new { ID = 3 }));; } //Fehlermeldung, wenn das Zeitbudget eines Arbeitspaketes negativ gewählt wird if (arbeitsPaket.Zeitbudget < 0) { int ErrorID = 5; return(RedirectToAction("ErrorMessage", new { ID = ErrorID }));; } //Angabe über ein erstelltes Arbeitspaket persitent in der Tabele ArbeitsPaket speichern _context.Add(arbeitsPaket); await _context.SaveChangesAsync(); // Einem neuen Arbeitspaket wird die passende ProjektID zugeordnet, ProjektID und ArbeitsPaketID werden als Zuordnung in der Tabelle ProjekteArbeitsPaketViewModel gespeichert List <ArbeitsPaketModel> Pakete = _context.ArbeitsPaket.ToList(); ProPaViewMo.ProjekteId = Int32.Parse((string)ProId); ProPaViewMo.ArbeitsPaketId = arbeitsPaket.ArbeitsPaketId; _context.Add(ProPaViewMo); // Ersteller des Pakets wird als erstes Mitglied eingetragen var currentUser = this.User; string currentUserId = _userManager.GetUserId(currentUser); PaketeUserViewModel newMember = new PaketeUserViewModel { ArbeitsPaketId = arbeitsPaket.ArbeitsPaketId, UserId = currentUserId }; _context.Add(newMember); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "Projekte", new { id = ProId })); } //RoutingID wird an die View übergeben, um auf die Projektdetailansicht zurückzugelangen int RoutingID = Int32.Parse((string)RouteData.Values["id"]); ViewBag.RoutingID = RoutingID; return(View(arbeitsPaket)); }
public async Task <IActionResult> DeleteUserFromPackage(string name, int id) { if (name != null) { IdentityUser user = await _userManager.FindByNameAsync(name); if (user != null) { List <PaketeUserViewModel> userList = _context.PaketeUserViewModel.ToList().FindAll(i => i.ArbeitsPaketId == id); PaketeUserViewModel packageUser = userList.Find(n => n.UserId == user.Id); if (packageUser != null) { _context.PaketeUserViewModel.Remove(packageUser); await _context.SaveChangesAsync(); return(RedirectToAction("PaketDetails", "Projekte", new { id })); } } } return(NotFound("Error beim entfernen eines Nutzers")); }
public async Task <IActionResult> AddUserToPackage(int id, string name) { if (name != null) { IdentityUser newUser = await _userManager.FindByNameAsync(name); if (newUser != null) { PaketeUserViewModel newMember = new PaketeUserViewModel { ArbeitsPaketId = id, UserId = newUser.Id }; _context.Add(newMember); await _context.SaveChangesAsync(); return(RedirectToAction("PaketDetails", "Projekte", new { id })); } } return(NotFound("Fehler beim Hinzufügen")); }