public async Task <IActionResult> Create(UserEditViewModel userVM)
        {
            if (ModelState.IsValid)
            {
                var user = new User();
                {
                    user.Id   = Guid.NewGuid();
                    user.Name = userVM.UserName;

                    if (userVM.IsAdmin == true)
                    {
                        user.Role = Roles.Admin;
                    }
                    else
                    {
                        user.Role = Roles.User;
                    }

                    user.UserCredentials = new List <UserCredential>();

                    foreach (Guid credentialId in userVM.SelectedCredential)
                    {
                        var credential = _context.Find <Credential>(credentialId);
                        user.UserCredentials.Add(new UserCredential {
                            User = user, Credential = credential
                        });
                        _context.Add(user);
                    }

                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            return(View(userVM));
        }
        public async Task <IActionResult> Edit(CredentialEditViewModel credentialVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var credential = await _db.Credentials.Include(x => x.UserCredentials).FirstOrDefaultAsync(m => m.Id == credentialVM.Id);

                    {
                        credential.Description = credentialVM.Description;
                        credential.Value       = credentialVM.Value;

                        foreach (Guid userId in credentialVM.SelectedUser)
                        {
                            var user = _db.Find <User>(userId);
                            credential.UserCredentials.Add(new UserCredential {
                                User = user, Credential = credential
                            });
                        }
                    }
                    await _db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CredentialExists(credentialVM.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Edit", new { id = credentialVM.Id }));
            }
            return(View(credentialVM));
        }