public void CreateOrUpdateAccount(ClaimsIdentity claimsIdentity, AccountDto accountInfo)
        {
            var loginData = _loginDataParser.Parse(claimsIdentity);
            var customizationModes = CustomizationModes.None;

            var userAccount = _userAccountService.GetByEmail(loginData.Email);
            if (userAccount == null)
            {
                var claims = new List<Claim>
                {
                    new Claim(CustomClaims.CustomizationModes, ((int)customizationModes).ToString(CultureInfo.InvariantCulture))
                };

                userAccount = _userAccountService.CreateAccount(accountInfo.Email, Guid.NewGuid().ToString(), accountInfo.Email, claims: claims);
            }
            else
            {
                var modesString = userAccount.Claims.First(x => x.Type == CustomClaims.CustomizationModes).Value;
                customizationModes = BuildModes(modesString, accountInfo);

                var claims = new List<Claim>
                {
                    new Claim(CustomClaims.CustomizationModes, ((int) customizationModes).ToString(CultureInfo.InvariantCulture))
                };

                _userAccountService.UpdateClaims(userAccount.ID, claims);
            }

            _userAccountService.AddOrUpdateLinkedAccount(userAccount, loginData.ProviderName, loginData.ProviderKey, claimsIdentity.Claims);
        }
        public dynamic CreateAccount([ParameterRequired] CreateAccountViewModel account)
        {
            var accountInfo = new AccountDto()
            {
                Email = account.Email,
                Name = account.Name,
                CustomizationEnabled = account.CustomizationEnabled
            };

            _accountManagementService.CreateOrUpdateAccount((ClaimsIdentity)User.Identity, accountInfo);

            return Request.CreateResponse(HttpStatusCode.OK);
        }
        private CustomizationModes BuildModes(string currentModes, AccountDto accountInfo)
        {
            var customizationModes = (CustomizationModes)int.Parse(currentModes);

            if (accountInfo.CustomizationEnabled)
            {
                customizationModes |= CustomizationModes.General;
            }
            else
            {
                customizationModes &= ~CustomizationModes.General;
            }

            return customizationModes;
        }