public async Task <IdentityResult> RegisterUserAsync(RegisterViewModel model)
        {
            using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                IsolationLevel = IsolationLevel.RepeatableRead
            }, TransactionScopeAsyncFlowOption.Enabled))
            {
                var result = IdentityResult.Failed();
                try
                {
                    var user = new IdentityUser
                    {
                        UserCode = IdentityGenerator.RandomUserNumeral20(),
                        UserName = model.UserName
                    };
                    if (model.IdentityType != IdentityTypes.UserName)
                    {
                        user.UserName = IdentityGenerator.RandomUserName();
                    }
                    result = await UserManager.CreateAsync(user, model.Password);

                    if (!result.Succeeded)
                    {
                        return(result);
                    }
                    switch (model.IdentityType)
                    {
                    case IdentityTypes.PhoneNumber:
                        break;

                    case IdentityTypes.Email:
                        break;

                    default:
                        break;
                    }
                    ////var role = await RoleManager.FindByIdAsync("0");
                    //result = await UserManager.AddAccountAttributeAsync(user.Id, new Microsoft.AspNet.Identity.Framework.ExternalAttributeInfo { AccountType = 0 });
                    //if (!result.Succeeded)
                    //{
                    //    return result;
                    //}
                    scope.Complete();
                }
                catch (Exception ex)
                {
                    result = IdentityResult.Failed(ex.Message);
                }
                finally
                {
                }
                return(result);
            }
        }