public async Task <IActionResult> PaketAnpassen(int id, [Bind("ArbeitsPaketId,ProjektId,PaketName,Beschreibung,Mitglieder,Zeitbudget,VerbrauchteZeit,Frist,Status")] ArbeitsPaketModel arbeitsPaket) { if (id != arbeitsPaket.ArbeitsPaketId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(arbeitsPaket); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ArbeitsPaketExists(arbeitsPaket.ArbeitsPaketId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", "Projekte", new { id = arbeitsPaket.ProjektId })); } return(View(arbeitsPaket)); }
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> PaketZeit(int id, [Bind("ArbeitsPaketId,ProjektId,PaketName,Beschreibung,Mitglieder,Zeitbudget,VerbrauchteZeit,Frist,Status")] ArbeitsPaketModel arbeitsPaket) { if (id != arbeitsPaket.ArbeitsPaketId) { return(NotFound()); } if (ModelState.IsValid) { //Die gespeicherte Arbeitszeit ist die Sume aus bisher verbrauchter Arbeitszeit + neuer verbrauchter Arbeitszeit. // Wird die Zeit korrigiert, kann sie nicht unter 0 sinken. try { var zeit = _context.ArbeitsPaket.AsNoTracking().Where(p => p.ArbeitsPaketId == id).FirstOrDefault(); arbeitsPaket.VerbrauchteZeit = arbeitsPaket.VerbrauchteZeit + zeit.VerbrauchteZeit; if (arbeitsPaket.VerbrauchteZeit < 0) { return(RedirectToAction("ErrorMessage", new { ID = 8 })); } _context.Update(arbeitsPaket); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ArbeitsPaketExists(arbeitsPaket.ArbeitsPaketId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("PaketDetails", "Projekte", new { id })); } return(View(arbeitsPaket)); }