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"));
        }