public async Task <ActionResult> Delete(string id)
        {
            EfRole role = await RoleManager.FindByIdAsync(id);

            if (role != null)
            {
                try
                {
                    IdentityResult result = await RoleManager.DeleteAsync(role);

                    if (result.Succeeded)
                    {
                        _logger.Info($"Role {role.Name} was deleted.");
                        return(RedirectToAction("Index"));
                    }

                    throw new Exception(result.Errors.ToString());
                }
                catch (Exception exception)
                {
                    _logger.Error(exception.Message);
                }
            }
            return(View("Error", new[] { "Role not found" }));
        }
        /// <summary>
        /// Edits Role.
        /// </summary>
        /// <param name="id">string id of Role.</param>
        /// <returns>View of RoleEditModel.</returns>
        public async Task <ActionResult> Edit(string id)
        {
            EfRole role = await RoleManager.FindByIdAsync(id);

            string[]           membersIds = role.Users.Select(u => u.UserId).ToArray();
            IEnumerable <User> members    = UserManager.Users.Where(x => membersIds.Any(m => m == x.Id));
            IEnumerable <User> nonMembers = UserManager.Users.Except(members);

            return(View(new RoleEditModel
            {
                Role = role,
                Members = members,
                NonMembers = nonMembers
            }));
        }