public void ReturnActivationCode()
            {
                var maxId    = 10;
                var expected = $"BAC{123 + maxId - 1}";
                var charCodesGeneratorMock = new Mock <IRandomCharCodesGenerator>();

                charCodesGeneratorMock.Setup(x => x.Generate(3))
                .Returns(new[] { 66, 65, 67 });
                var ordersDataStoreMock = new Mock <IOrdersDataStore>();

                ordersDataStoreMock.Setup(x => x.GetMaxId())
                .Returns(maxId);
                var sut = new ActivationCodeGenerator(charCodesGeneratorMock.Object, ordersDataStoreMock.Object);

                var actual = sut.Generate();

                actual.Should().Be(expected);
            }
示例#2
0
        public async Task <IActionResult> Login([FromBody] LoginModel loginModel)
        {
            if (ModelState.IsValid)
            {
                var user = _userRepository.FindByPhoneNumber(loginModel.PhoneNumber);

                if (user == null)
                {
                    // register user

                    var activationCode = ActivationCodeGenerator.Generate();

                    _userRepository.Create(new User
                    {
                        ActivationCode           = activationCode,
                        CreateActivationCodeDate = DateTime.Now,
                        PhoneNumber  = loginModel.PhoneNumber,
                        SerialNumber = Guid.NewGuid().ToString()
                    });

                    var smsResponse = await _smsService
                                      .SendAsync(new List <string> {
                        loginModel.PhoneNumber
                    }, $"با سلام کد فعالسازی شما : {activationCode}");

                    if (smsResponse.IsSuccessful)
                    {
                        return(Ok(ServiceResult.Okay("کد فعالسازی برای کاربر ارسال شد")));
                    }

                    else
                    {
                        return(Ok(ServiceResult.Error($"خطا در ارسال پیامک از سمت پیامک سفید : {smsResponse.Message}")));
                    }
                }

                else
                {
                    // generate activationCode

                    var activationCode = ActivationCodeGenerator.Generate();

                    var smsResponse = await _smsService
                                      .SendAsync(new List <string> {
                        user.PhoneNumber
                    }, $"با سلام کد فعالسازی شما : {activationCode}");

                    if (smsResponse.IsSuccessful)
                    {
                        user.ActivationCode           = activationCode;
                        user.CreateActivationCodeDate = DateTime.Now;

                        // update user
                        _userRepository.Update(user);

                        return(Ok(ServiceResult.Okay("کد فعالسازی برای کاربر ارسال شد")));
                    }

                    else
                    {
                        return(Ok(ServiceResult.Error($"خطا در ارسال پیامک از سمت پیامک سفید : {smsResponse.Message}")));
                    }
                }
            }

            return(Ok(ServiceResult.Error("model is not valid")));
        }