示例#1
0
        public async Task <IActionResult> VerifySmsAsync(PhoneConfirmRequest model,
                                                         CancellationToken token)
        {
            var phoneCommand             = new ConfirmPhoneNumberCommand(model.Id);
            var registrationBonusCommand = new FinishRegistrationCommand(model.Id);

            try
            {
                await _commandBus.DispatchAsync(phoneCommand, token);

                await _commandBus.DispatchAsync(registrationBonusCommand, token);
            }

            catch
            {
                return(BadRequest());
            }

            return(Ok(new
            {
                model.Id
            }));
        }
示例#2
0
        private async Task <IActionResult> FinishRegistrationAsync(User user, string country, string fingerPrint,
                                                                   string userAgent, CancellationToken token)
        {
            if (TempData[HomeController.Referral] != null)
            {
                if (Base62.TryParse(TempData[HomeController.Referral].ToString(), out var base62))
                {
                    try
                    {
                        var command = new ReferringUserCommand(base62, user.Id);
                        await _commandBus.DispatchAsync(command, token);
                    }
                    catch (UserLockoutException)
                    {
                        _logger.Warning($"{user.Id} got locked referring user {TempData[HomeController.Referral]}");
                    }
                }
                else
                {
                    _logger.Error($"{user.Id} got wrong referring user {TempData[HomeController.Referral]}");
                }
                TempData.Remove(HomeController.Referral);
            }
            TempData.Clear();

            var command2 = new AddUserLocationCommand(user, country, HttpContext.GetIpAddress(), fingerPrint, userAgent);
            var registrationBonusCommand = new FinishRegistrationCommand(user.Id);
            var t1 = _commandBus.DispatchAsync(command2, token);
            var t2 = _signInManager.SignInAsync(user, false);
            var t3 = _commandBus.DispatchAsync(registrationBonusCommand, token);
            await Task.WhenAll(t1, t2, t3);

            return(Ok(new
            {
                user.Id
            }));
        }