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