public async Task <IActionResult> DeleteUserFromProject(string name, int id)
        {
            if (name != null)
            {
                IdentityUser user = await _userManager.FindByNameAsync(name);

                if (user != null)
                {
                    List <ProjekteUserViewModel> userList    = _context.ProjekteUserViewModel.ToList().FindAll(i => i.ProjekteId == id);
                    ProjekteUserViewModel        projectUser = userList.Find(n => n.UserId == user.Id);
                    if (projectUser != null)
                    {
                        // Überprüfen ob die zu entfernen Person der Owner ist. Wenn ja kommt eine Fehlermeldung
                        var projectRoles = _context.ProjectRoles.ToList().Where(x => x.ProjectId == id);
                        var owner        = projectRoles.Where(x => x.ProjectRole == "Owner").First();
                        var ownerUser    = await _userManager.FindByIdAsync(owner.UserId);

                        if (!ownerUser.UserName.Equals(name))
                        {
                            _context.ProjekteUserViewModel.Remove(projectUser);
                            DeleteUserFromProjectRoles(name, id);
                            await _context.SaveChangesAsync();

                            return(RedirectToAction("Details", "Projekte", new { id = id }));
                        }
                        else
                        {
                            return(RedirectToAction("ErrorMessage", new { ID = 8 }));
                        }
                    }
                }
            }
            return(NotFound("Error beim entfernen eines Nutzers"));
        }
        public async Task <IActionResult> AddUserToProject([Bind("id,name")] AddUserModel userToProject)
        {
            // Die Methode steht nur Projektownern oder Admins zur Verfügung, sonst erscheit eine Fehlermeldung
            var          roles = _context.ProjectRoles.ToList().FindAll(i => i.ProjectId == userToProject.id);
            ProjectRoles owner = roles.Find(o => o.ProjectRole == "Owner");
            IdentityUser user  = await _userManager.FindByIdAsync(owner.UserId);

            bool isAdmin = await _userManager.IsInRoleAsync(user, "Admin");

            if (user.UserName != this.User.Identity.Name && !isAdmin)
            {
                return(RedirectToAction("ErrorMessage", new { ID = 7 }));
            }

            // Die Zuorndung eines Nutzers zu einem Projekt wird in der Tabelle ProjekteUserViewModel gespeichert
            if (userToProject.name != null)
            {
                IdentityUser newUser = await _userManager.FindByNameAsync(userToProject.name);

                if (newUser != null)
                {
                    ProjekteUserViewModel newUserInProject = new ProjekteUserViewModel()
                    {
                        ProjekteId = userToProject.id,
                        UserId     = newUser.Id
                    };
                    _context.Add(newUserInProject);

                    ChangeUserProjectRole(newUser.Id, userToProject.id, "Nutzer");

                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Details", "Projekte", new { userToProject.id }));
                }
                else
                {
                    return(RedirectToAction("ErrorMessage", new { ID = 6 }));
                }
            }
            return(NotFound("Error beim Hinzufügen eines Projekts"));
        }
        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));
        }