Exemple #1
0
        public RegisterUserResponse RegisterUser(RegisterCustomerRequest request)
        {
            var ct = request.NewCustomer;

            ct.Salt = Convert.ToBase64String(Security.GenerateNewSalt());

            DL_Customer CustormerToSave =

                Context.Customers.Add(ct);
            int result = 0;

            try
            {
                result = Context.SaveChanges();
            }
            catch (Exception e)
            {
                return(new RegisterUserResponse {
                    CallResult = 1, Message = REGISTER_CUSTOMER_SAVE_FAILED + "\n" + e.Message, MessageType = MessageType.Error
                });
            }

            if (result != 0)
            {
                return(new RegisterUserResponse {
                    CallResult = 1, Message = REGISTER_CUSTOMER_SAVE_FAILED, MessageType = MessageType.Error
                });
            }

            return(new RegisterUserResponse {
                CallResult = 0
            });
        }
        public async Task <OperationResult <UserDataResponse> > Handle(RegisterCustomerRequest message, CancellationToken cancellationToken)
        {
            var customerEntity = _mapper.Map <CustomerEntity>(message);

            using (var context = _companyContextFactory())
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var username = message.Username.ToUpper();
                        var isUnique = !await context.Users.AnyAsync(x => username == x.Username.ToUpper(), cancellationToken)
                                       .ConfigureAwait(false);

                        if (!isUnique)
                        {
                            return(OperationResultBuilder.CreateFailure <UserDataResponse>(Resources.Exception_Registration_Username_Already_Taken));
                        }

                        var userEntity = context.Users.Add(customerEntity);
                        await context.SaveChangesAsync(cancellationToken)
                        .ConfigureAwait(false);

                        transaction.Commit();

                        var response = _mapper.Map <UserDataResponse>(userEntity);

                        return(OperationResultBuilder.CreateSuccess(response));
                    }
                    catch (TaskCanceledException)
                    {
                        transaction.Rollback();
                        return(OperationResultBuilder.CreateFailure <UserDataResponse>(Resources.Exception_Registration_Canceled));
                    }
                }
        }
Exemple #3
0
        public static Customer Register(RegisterCustomerRequest request)
        {
            var customer = new Customer();

            customer.Id             = Guid.NewGuid();
            customer.User           = new User();
            customer.User.Id        = request.UserId;
            customer.User.Username  = request.EmailAddress;
            customer.User.Password  = request.Password;
            customer.User.Role      = request.CustomerRole;
            customer.User.CreatedBy = request.ApplicationUser;
            customer.User.CreatedOn = DateTime.Now;
            customer.User.Deleted   = false;
            customer.FamilyName     = request.FamilyName;
            customer.GivenName      = request.GivenName;
            customer.Address1       = request.Address1;
            customer.Address2       = request.Address2;
            customer.Address3       = request.Address3;
            customer.Address4       = request.Address4;
            customer.PostCode       = request.PostCode;
            customer.CreatedBy      = request.ApplicationUser;
            customer.CreatedOn      = DateTime.Now;
            customer.Deleted        = false;
            return(customer);
        }
Exemple #4
0
        public void RegisterUserFailure()
        {
            //ARRANGE
            var MockCustomer = new MOCK_DL_Customer();

            MockCustomer.fail = true;

            var customer = Common.GetCustomer();
            var request  = new RegisterCustomerRequest {
                NewCustomer = customer, UserName = Common.USERNAME, Password = Common.PASSWORD
            };

            var MockSecurity = new Mock <ISecurityMethods>();

            MockSecurity.Setup(x => x.GenerateNewSalt()).Returns(Common.SALT);
            MockSecurity.Setup(x => x.GetPasswordHash(It.IsAny <byte[]>(), It.IsAny <String>())).Returns(Common.PASSWORD_HASH);

            //create service object with mocks
            var svc = new BB.Implementation.BBService();

            svc.MockCustomer = MockCustomer;
            svc.MockSecurity = MockSecurity.Object;

            var s = svc.MockSecurity.GetPasswordHash(null, "");

            //ACT
            var response = svc.RegisterUser(request);

            //ASSERT
            Assert.AreEqual(1, response.CallResult);
            Assert.IsFalse(String.IsNullOrEmpty(response.Message));
            Assert.IsTrue(response.Message.StartsWith(BBService.REGISTER_CUSTOMER_SAVE_FAILED));
            Assert.IsTrue(response.Message.EndsWith(MOCK_DL_Customer.ERR_SAVE_FAILED));
        }
Exemple #5
0
        public async Task <OperationResult <UserDataResponse> > CreateCustomerAsync(
            RegisterCustomerRequest request,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var response = await _mediator.Send(request, cancellationToken)
                           .ConfigureAwait(false);

            return(response);
        }
Exemple #6
0
        public void InvalidRequestFails()
        {
            var request            = new RegisterCustomerRequest();
            var validationMessages = Customer.ValidateRegister(request);

            Assert.AreEqual(4, validationMessages.Count);
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("ApplicationUser not supplied")));
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("CustomerRole not supplied")));
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("Email not supplied")));
            Assert.IsTrue(validationMessages.Any(x => x.Text.Equals("Post code not supplied")));
        }
Exemple #7
0
        public async Task <IActionResult> Register([FromBody] RegisterCustomerRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var command = _mapper.Map <RegisterCustomerCommand>(request);

            return(Response(await _mediator.Send(command)));
        }
        private async Task <ResponseMessage> SendRegisterCustomerRequest(CustomerRegisteredEvent request)
        {
            var customerRequest = new RegisterCustomerRequest(request.Id, request.Name, request.Email, request.Cpf);

            using var scope = _serviceProvider.CreateScope();
            var mediator      = scope.ServiceProvider.GetRequiredService <IMediator>();
            var requestResult = await mediator.Send(customerRequest);

            return(new ResponseMessage {
                ValidationResult = requestResult.ValidationResult
            });
        }
Exemple #9
0
        public static ValidationMessageCollection ValidateRegister(RegisterCustomerRequest request)
        {
            var validationMessages = new ValidationMessageCollection();

            //Only a selection of fields validated for demo purposes.

            var rxPostCode =
                new Regex(
                    @"^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$");

            if (string.IsNullOrEmpty(request.PostCode))
            {
                validationMessages.AddError("PostCode", "Post code not supplied");
            }
            else
            {
                if (!rxPostCode.IsMatch(request.PostCode))
                {
                    validationMessages.AddError("PostCode", "Post code is not valid.");
                }
            }

            if (string.IsNullOrEmpty(request.EmailAddress))
            {
                validationMessages.AddError("EmailAddress", "Email not supplied");
            }
            else if (request.EmailAddress.Length > 50)
            {
                validationMessages.AddError("EmailAddress", "Email must be 50 characters or less.");
            }
            else
            {
                var rxNonStrictEmail = new Regex(@"[A-Za-z0-9\.-_\+]+@[A-Za-z0-9\.-_\+]+");
                if (!rxNonStrictEmail.IsMatch(request.EmailAddress))
                {
                    validationMessages.AddError("EmailAddress", "Email is not valid.");
                }
            }

            if (request.ApplicationUser == null)
            {
                validationMessages.AddError("ApplicationUser", "ApplicationUser not supplied");
            }

            if (request.CustomerRole == null)
            {
                validationMessages.AddError("CustomerRole", "CustomerRole not supplied");
            }

            return(validationMessages);
        }
Exemple #10
0
        public IActionResult RegisterCustomer([FromForm] RegisterCustomerRequest request)
        {
            var customerID = _customerService.RegisterCustomer(request);

            if (customerID.HasValue)
            {
                return(Ok(new
                {
                    CustomerID = customerID
                }));
            }

            return(BadRequest());
        }
        public int?RegisterCustomer(RegisterCustomerRequest request)
        {
            try
            {
                var passwordHash = ComputeHash(request.Password);
                var customerID   = _customersDA.InsertCustomer(request, passwordHash);

                return(customerID);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #12
0
        public RegisterUserResponse RegisterUser(RegisterCustomerRequest request)
        {
            var ct = request.NewCustomer;

            //convert Customer to DLCustomer
            ADL_Customer CustomerToSave;

            if (MockCustomer == null)
            {
                CustomerToSave = GetMappingObject().MapCustomertoDLCustomer(ct);
            }
            else
            {
                CustomerToSave = MockCustomer;
            }

            ISecurityMethods security;

            if (MockSecurity == null)
            {
                security = new SecurityMethods();
            }
            else
            {
                security = MockSecurity;
            }

            //Add additional fields
            byte[] Salt = security.GenerateNewSalt();
            CustomerToSave.Salt = Salt;
            CustomerToSave.PasswordNeedsChanging = false;
            CustomerToSave.UserName     = request.UserName;
            CustomerToSave.PasswordHash = security.GetPasswordHash(Salt, request.Password);

            try
            {
                CustomerToSave.Save();
            }
            catch (Exception e)
            {
                return(new RegisterUserResponse {
                    CallResult = 1, Message = REGISTER_CUSTOMER_SAVE_FAILED + "\n" + e.Message, MessageType = MessageType.Error
                });
            }

            return(new RegisterUserResponse {
                CallResult = 0
            });
        }
        public RegisterCustomerRequest Map(RegisterViewModel viewModel)
        {
            var request = new RegisterCustomerRequest();

            request.ApplicationUser = _userRepository.GetById(UserIds.Application);
            request.CustomerRole    = _roleRepository.GetById(RoleIds.Customer);
            request.EmailAddress    = viewModel.EmailAddress;
            request.Password        = viewModel.Password;
            request.FamilyName      = viewModel.FamilyName;
            request.GivenName       = viewModel.GivenName;
            request.Address1        = viewModel.Address1;
            request.Address2        = viewModel.Address2;
            request.Address3        = viewModel.Address3;
            request.Address4        = viewModel.Address4;
            request.PostCode        = viewModel.PostCode;
            return(request);
        }
        public RegisterCustomerRequest GetRequest()
        {
            var request = new RegisterCustomerRequest();

            request.UserId          = Guid.NewGuid();
            request.ApplicationUser = new User()
            {
                Id = Guid.NewGuid()
            };
            request.CustomerRole = new Role()
            {
                Id = Guid.NewGuid()
            };
            request.EmailAddress = "*****@*****.**";
            request.FamilyName   = "Silver";
            request.GivenName    = "Silvia";
            request.Address1     = "1 Silver Lane";
            request.Address2     = "Silverville";
            request.Address3     = "Silvershire";
            request.PostCode     = "M1 1AA";
            return(request);
        }
Exemple #15
0
        public void RegisterUserHappyPath()
        {
            //ARRANGE
            var MockCustomer = new MOCK_DL_Customer();

            var customer = Common.GetCustomer();
            var request  = new RegisterCustomerRequest {
                NewCustomer = customer, UserName = Common.USERNAME, Password = Common.PASSWORD
            };

            var MockSecurity = new Mock <ISecurityMethods>();

            MockSecurity.Setup(x => x.GenerateNewSalt()).Returns(Common.SALT);
            MockSecurity.Setup(x => x.GetPasswordHash(It.IsAny <byte[]>(), It.IsAny <String>())).Returns(Common.PASSWORD_HASH);

            //create service object with mocks
            var svc = new BB.Implementation.BBService();

            svc.MockCustomer = MockCustomer;
            svc.MockSecurity = MockSecurity.Object;

            var s = svc.MockSecurity.GetPasswordHash(null, "");

            //ACT
            var response = svc.RegisterUser(request);

            //ASSERT
            Assert.AreEqual(0, response.CallResult);
            Assert.IsTrue(String.IsNullOrEmpty(response.Message));

            //check what was returned
            Assert.AreEqual(Common.SALT, MockCustomer.Salt);
            Assert.IsFalse(MockCustomer.PasswordNeedsChanging);
            Assert.AreEqual(Common.USERNAME, MockCustomer.UserName);
            Assert.AreEqual(Common.PASSWORD_HASH, MockCustomer.PasswordHash);
        }
Exemple #16
0
        public int?InsertCustomer(RegisterCustomerRequest customer, string passwordHash)
        {
            try
            {
                using (var connection = OpenConnection())
                {
                    var result = connection.QueryFirstOrDefault <int?>(ScriptProvider.Get("InsertCustomer"),
                                                                       new
                    {
                        FirstName     = customer.FirstName,
                        LastName      = customer.LastName,
                        CustomerLogin = customer.Login,
                        PasswordHash  = passwordHash,
                        CustomerType  = customer.Type
                    });

                    return(result);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public async Task <IActionResult> RegisterCustomer([FromBody] RegisterCustomerRequest request)
        {
            var customer = await _mediator.Send(new RegisterCustomerCommand(request.Email, request.Name));

            return(Created(string.Empty, customer));
        }
 Task <RegisterUserResponse> IManageOrders.RegisterUserAsync(RegisterCustomerRequest request)
 {
     throw new NotImplementedException();
 }
    public async Task <IActionResult> Register([FromBody] RegisterCustomerRequest request)
    {
        var command = _mapper.Map <RegisterCustomerCommand>(request);

        return(await Response(command));
    }
Exemple #20
0
 public async Task CreateCustomer([FromBody] RegisterCustomerRequest request)
 => await _mediator.Send(new RegisterCustomerCommand(request.Id, request.FirstName, request.LastName, request.BirthDate, request.Email, request.Phone));