Пример #1
0
        public void Add()
        {
            var username   = _randomMaker.NewNumber();
            var duplicated = _accountService.FirstAsync(new AccountGetFirstSchema {
                Username = username
            }).GetAwaiter().GetResult();

            while (duplicated != null)
            {
                username   = _randomMaker.NewNumber();
                duplicated = _accountService.FirstAsync(new AccountGetFirstSchema {
                    Username = username
                }).GetAwaiter().GetResult();
            }

            var account = new AccountAddSchema {
                Password   = _cryptograph.RNG("1234"),
                ProviderId = AccountProvider.Clipboardy.ToInt(),
                Username   = username,
                CreatedAt  = DateTime.Now,
                StatusId   = Status.Active.ToInt()
            };
            var accountId = _accountService.AddAsync(account).GetAwaiter().GetResult();

            Assert.IsTrue(account.StatusCode == 200);
            Assert.IsTrue(accountId > 0);
        }
Пример #2
0
        public async Task <IServiceResult> SignupAsync(SignupBindingModel signupModel)
        {
            var username   = _randomMaker.NewNumber();
            var duplicated = await FirstAsync(new AccountGetFirstSchema { Username = username });

            while (duplicated != null)
            {
                username   = _randomMaker.NewNumber();
                duplicated = await FirstAsync(new AccountGetFirstSchema { Username = username });
            }

            using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) {
                try {
                    var now = DateTime.UtcNow;

                    var account = new AccountAddSchema {
                        Password   = _cryptograph.RNG(signupModel.Password),
                        ProviderId = AccountProvider.Clipboardy.ToInt(),
                        Username   = username,
                        CreatedAt  = now,
                        StatusId   = Status.Active.ToInt()
                    };
                    var accountId = await AddAsync(account);

                    var accountDevice = new AccountDeviceAddSchema {
                        AccountId  = accountId,
                        DeviceId   = signupModel.DeviceId,
                        DeviceName = signupModel.DeviceName,
                        DeviceType = signupModel.DeviceType,
                        CreatedAt  = now,
                        StatusId   = Status.Active.ToInt()
                    };
                    var deviceId = await _accountDeviceService.AddAsync(accountDevice);

                    var accountProfile = new AccountProfileAddSchema {
                        AccountId = accountId,
                        LinkedId  = string.IsNullOrWhiteSpace(signupModel.Email) ? signupModel.Phone : signupModel.Email,
                        TypeId    = string.IsNullOrWhiteSpace(signupModel.Email) ? AccountProfileType.Phone.ToInt() : AccountProfileType.Email.ToInt(),
                        CreatedAt = now,
                        StatusId  = Status.Active.ToInt()
                    };
                    await _accountProfileService.AddAsync(accountProfile);

                    transaction.Complete();

                    var token = _jwtHandler.Bearer(new Account(accountId, deviceId, username, now).ToClaimsIdentity());
                    return(DataTransferer.Ok(token));
                }
                catch (Exception ex) {
                    var errmsg = "Something went wrong.";
                    Log.Error(ex, errmsg);
                    return(DataTransferer.InternalServerError(ex));
                }
            }
        }
Пример #3
0
        public async Task <IServiceResult> ExternalSignupAsync(ExternalUserBindingModel externalUser)
        {
            var username   = _randomMaker.NewNumber();
            var duplicated = await FirstAsync(new AccountGetFirstSchema { Username = username });

            while (duplicated != null)
            {
                username   = _randomMaker.NewNumber();
                duplicated = await FirstAsync(new AccountGetFirstSchema { Username = username });
            }

            using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) {
                try {
                    var now = DateTime.UtcNow;

                    var account = new AccountAddSchema {
                        ProviderId = externalUser.ProviderId.ToInt(),
                        Username   = username,
                        CreatedAt  = now,
                        StatusId   = Status.Active.ToInt()
                    };
                    var accountId = await AddAsync(account);

                    var accountDevice = new AccountDeviceAddSchema {
                        AccountId  = accountId,
                        DeviceId   = externalUser.DeviceId,
                        DeviceName = externalUser.DeviceName,
                        DeviceType = externalUser.DeviceType,
                        CreatedAt  = now,
                        StatusId   = Status.Active.ToInt()
                    };
                    var deviceId = await _accountDeviceService.AddAsync(accountDevice);

                    var accountProfile = new AccountProfileAddSchema {
                        AccountId = accountId,
                        TypeId    = AccountProfileType.Email.ToInt(),
                        LinkedId  = externalUser.Email,
                        CreatedAt = now,
                        StatusId  = Status.Active.ToInt()
                    };
                    await _accountProfileService.AddAsync(accountProfile);

                    transaction.Complete();
                    var token = _jwtHandler.Bearer(new Account(accountId, deviceId, username, now).ToClaimsIdentity());
                    return(DataTransferer.Ok(token));
                }
                catch (Exception ex) {
                    var errmsg = "Something went wrong.";
                    Log.Error(ex, errmsg);
                    return(null);
                }
            }
        }
Пример #4
0
        public async Task <int> AddAsync(AccountAddSchema account)
        {
            var result = await _storedProcedure.ExecuteScalarAsync <AccountAddSchema, int>(account);

            return(result);
        }