示例#1
0
        public async Task <Tuple <bool, string> > AddEntityAsync(APIShoppingUser entity)
        {
            try
            {
                var users = _dbContext.Users.ToList();
                if (users.FirstOrDefault(u => u.Email == entity.Email) == null)
                {
                    ShoppingUserEntity newUser = new ShoppingUserEntity()
                    {
                        Email          = entity.Email,
                        UserName       = entity.UserName,
                        PasswordHash   = entity.Password,
                        FirstName      = entity.FirstName,
                        LastName       = entity.LastName,
                        HomeStoreId    = entity.HomeStoreId,
                        TimeOfCreation = DateTimeOffset.UtcNow
                    };

                    await _dbContext.ShoppingUsers.AddAsync(newUser);

                    await _dbContext.SaveChangesAsync();

                    return(Tuple.Create(true, ""));
                }
                else
                {
                    return(Tuple.Create(false, "Already have a user in database with that email"));
                }
            }
            catch (Exception ex)
            {
                return(Tuple.Create(false, "Unable to add user"));;
            }
        }
        public async Task <IActionResult> RegisterShoppingUser([FromBody] APIShoppingUser user, CancellationToken ct)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { error = "Model state is not valid" }));
            }

            StoreEntity store = await _storeRepository.GetEntityAsync(user.HomeStoreId, ct);

            var shoppingUser = new ShoppingUserEntity
            {
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                UserName    = user.UserName,
                Email       = user.Email,
                HomeStoreId = user.HomeStoreId
            };

            //var result = await _shoppingUserManager.CreateAsync(shoppingUser, user.Password);
            //await _shoppingUserManager.AddToRoleAsync(shoppingUser, "Shopping");

            var result = await _baseUserManager.CreateAsync(shoppingUser, user.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            result = await _baseUserManager.AddToRoleAsync(shoppingUser, "Shopping");

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }
            //await _baseSignInManager.SignInAsync(shoppingUser, isPersistent: false);

            result = await _baseUserManager.UpdateAsync(shoppingUser);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }
            return(Ok(CreateToken(shoppingUser)));
        }