Beispiel #1
0
        public async Task <CustomerSignUpResponse> SignUpCustomerAsync(CustomerSignUpRequest userSignUpRequest)
        {
            CustomerSignUpResponse response = null;

            PhoneNumber          phoneNumber          = new PhoneNumber(userSignUpRequest.PhoneCode, userSignUpRequest.PhoneNumber);
            EmailAddress         emailAddress         = new EmailAddress(userSignUpRequest.EmailAddress);
            Password             password             = new Password(userSignUpRequest.Password);
            Customer             customer             = new Customer(emailAddress, phoneNumber, password);
            CustomerSignUpResult customerSignUpResult = await this.CustomerSignUpService.SignUpCustomerAsync(customer);

            if (customerSignUpResult.CustomerSignUpStatus == CustomerSignUpStatus.Registered)
            {
                await Task.Run(async() =>
                {
                    long otp = await GenerateOTPAsync(customerSignUpResult.CustomerId);
                    SMSService.SendSMS(string.Format(CustomerLiteral.PHONENUMBER_VERIFICATION_SMS, customer.PhoneNumber.PhoneNumberWithCode, otp)
                                       , customer.PhoneNumber.PhoneNumberWithCode);
                });
            }

            response = new CustomerSignUpResponse
            {
                CustomerId = customerSignUpResult.CustomerId
            };
            return(response);
        }
Beispiel #2
0
        public async Task SignUpCustomerAysnc_success()
        {
            // arrange
            int      customerId = 1;
            long     otp        = 965876;
            DateTime validUpTo  = DateTime.UtcNow.AddMinutes(5);
            CustomerSignUpRequest userSignUpRequest = new CustomerSignUpRequest
            {
                EmailAddress = "*****@*****.**",
                Password     = "******",
                PhoneCode    = "+91",
                PhoneNumber  = "9544856521"
            };
            CustomerSignUpResult signUpResult = new CustomerSignUpResult(customerId);

            CustomerServiceMock.Setup(service => service.SignUpCustomerAsync(It.IsAny <Customer>())).Returns(Task.FromResult <CustomerSignUpResult>(signUpResult));
            SharedUtilitiesMock.Setup(utilities => utilities.GenerateOTPHaving(6)).Returns(otp);
            CustomerRepositoryMock.Setup(repository => repository.GenerateSignUpOTPAsync(It.IsAny <CustomerOTP>())).Returns(Task.FromResult <bool>(true));
            AccountService accountService = new AccountService(CustomerServiceMock.Object,
                                                               SMSServiceMock.Object,
                                                               CustomerRepositoryMock.Object,
                                                               SharedUtilitiesMock.Object,
                                                               LoggerMock.Object);

            // act
            CustomerSignUpResponse response = await accountService.SignUpCustomerAsync(userSignUpRequest);

            // assert
            Assert.Equal(customerId, response.CustomerId);
        }
Beispiel #3
0
        public async Task <CustomerSignUpResult> AddAsync(Customer customer)
        {
            CustomerSignUpResult customerSignUpResult = null;
            var spName   = "spCustomerSignUp";
            var spParams = new DynamicParameters();

            spParams.Add("@EmailAddress", customer.EmailAddress.Value);
            spParams.Add("@PhoneCode", customer.PhoneNumber.PhoneCode);
            spParams.Add("@PhoneNumber", customer.PhoneNumber.Number);
            spParams.Add("@Password", customer.Password.Value);
            spParams.Add("@CustomerId", customer.CustomerId, null, ParameterDirection.Output);

            using (IDbConnection connection = ConnectionFactory.SQLConnection)
            {
                await connection.ExecuteAsync(spName, spParams, commandType : CommandType.StoredProcedure);

                int customerId = spParams.Get <int>("@CustomerId");
                customerSignUpResult = new CustomerSignUpResult(customerId);
                return(customerSignUpResult);
            }
        }