public async Task <RepositoryResponse <AccessTokenViewModel> > Register([FromBody] BEUserViewModel model)
        {
            RepositoryResponse <AccessTokenViewModel> result = new RepositoryResponse <AccessTokenViewModel>();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName  = model.Username,
                    Email     = model.Email,
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    JoinDate  = DateTime.UtcNow
                };
                var createResult = await _userManager.CreateAsync(user, password : model.Password).ConfigureAwait(false);

                if (createResult.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    user = await _userManager.FindByEmailAsync(model.Email).ConfigureAwait(false);

                    model.Id = user.Id;
                    model.CreatedDateTime = DateTime.UtcNow;
                    // Save to cms db context

                    await model.SaveModelAsync();

                    if (_userManager.Users.Count() == 1)
                    {
                        await _userManager.AddToRoleAsync(user, "SuperAdmin");
                    }
                    var token = await GenerateAccessTokenAsync(user, true);

                    if (token != null)
                    {
                        result.IsSucceed = true;
                        result.Data      = token;
                        _logger.LogInformation("User logged in.");
                        return(result);
                    }
                    else
                    {
                        return(result);
                    }
                }
                else
                {
                    foreach (var error in createResult.Errors)
                    {
                        result.Errors.Add(error.Description);
                    }
                    return(result);
                }
            }

            return(result);
        }
        public async Task <JObject> Details(string viewType, string id = null)
        {
            switch (viewType)
            {
            case "be":
                if (!string.IsNullOrEmpty(id))
                {
                    var beResult = await BEUserViewModel.Repository.GetSingleModelAsync(
                        model => model.Id == id).ConfigureAwait(false);

                    beResult.Data.Specificulture = _lang;
                    return(JObject.FromObject(beResult));
                }
                else
                {
                    var model = new SiocCmsUser()
                    {
                        Status = (int)SWStatus.Preview
                    };

                    RepositoryResponse <BEUserViewModel> result = new RepositoryResponse <BEUserViewModel>()
                    {
                        IsSucceed = true,
                        Data      = await BEUserViewModel.InitViewAsync(model)
                    };
                    result.Data.Specificulture = _lang;
                    return(JObject.FromObject(result));
                }

            default:
                if (!string.IsNullOrEmpty(id))
                {
                    var beResult = await InfoUserViewModel.Repository.GetSingleModelAsync(
                        model => model.Id == id).ConfigureAwait(false);

                    beResult.Data.Specificulture = _lang;
                    return(JObject.FromObject(beResult));
                }
                else
                {
                    var model = new SiocCmsUser()
                    {
                        Status = (int)SWStatus.Preview
                    };

                    RepositoryResponse <InfoUserViewModel> result = new RepositoryResponse <InfoUserViewModel>()
                    {
                        IsSucceed = true,
                        Data      = await InfoUserViewModel.InitViewAsync(model)
                    };
                    result.Data.Specificulture = _lang;
                    return(JObject.FromObject(result));
                }
            }
        }