示例#1
0
        public IAddCustomerResponse AddCustomer(IAddCustomerRequest request)
        {
            var isCustomerAdded = this.repository.AddCustomer(request.FirstName, request.SurName, request.Email, request.DateOfBirth, request.CompanyId);
            var response        = new AddCustomerResponse(request)
            {
                IsCustomerAdded = isCustomerAdded
            };

            return(response);
        }
示例#2
0
        public IAddCustomerResponse AddCustomer(IAddCustomerRequest request)
        {
            var response = new AddCustomerResponse(request);
            var company  = this.companyRepository.GetById(request.CompanyId);

            var customer = new Customer
            {
                Company      = company,
                DateOfBirth  = request.DateOfBirth,
                EmailAddress = request.Email,
                Firstname    = request.FirstName,
                Surname      = request.SurName
            };

            if (company.Name == "VeryImportantClient")
            {
                // Skip credit check
                customer.HasCreditLimit = false;
            }
            else if (company.Name == "ImportantClient")
            {
                // Do credit check and double credit limit
                customer.HasCreditLimit = true;
                using (var customerCreditService = new CustomerCreditServiceClient())
                {
                    var creditLimit = customerCreditService.GetCreditLimit(customer.Firstname, customer.Surname, customer.DateOfBirth);
                    creditLimit          = creditLimit * 2;
                    customer.CreditLimit = creditLimit;
                }
            }
            else
            {
                // Do credit check
                customer.HasCreditLimit = true;
                using (var customerCreditService = new CustomerCreditServiceClient())
                {
                    var creditLimit = customerCreditService.GetCreditLimit(customer.Firstname, customer.Surname, customer.DateOfBirth);
                    customer.CreditLimit = creditLimit;
                }
            }

            if (customer.HasCreditLimit && customer.CreditLimit < 500)
            {
                response.IsCustomerAdded = false;
                return(response);
            }

            CustomerDataAccess.AddCustomer(customer);

            response.IsCustomerAdded = true;
            return(response);
        }
示例#3
0
        public IAddCustomerResponse AddCustomer(IAddCustomerRequest request)
        {
            if (null == request)
            {
                throw new ArgumentNullException(nameof(IAddCustomerRequest));
            }

            if (string.IsNullOrWhiteSpace(request.FirstName))
            {
                throw new ArgumentOutOfRangeException(nameof(request.FirstName));
            }

            if (string.IsNullOrWhiteSpace(request.SurName))
            {
                throw new ArgumentOutOfRangeException(nameof(request.SurName));
            }

            if (string.IsNullOrWhiteSpace(request.SurName))
            {
                throw new ArgumentOutOfRangeException(nameof(request.SurName));
            }

            if (string.IsNullOrWhiteSpace(request.Email))
            {
                throw new ArgumentOutOfRangeException(nameof(request.SurName));
            }

            var now = DateTime.Now;
            var dob = request.DateOfBirth;
            int age = now.Year - dob.Year;

            if (now.Month < dob.Month || (now.Month == dob.Month && now.Day < dob.Day))
            {
                age--;
            }

            if (age < 21)
            {
                throw new ArgumentOutOfRangeException(nameof(request.DateOfBirth));
            }

            return(this.service.AddCustomer(request));
        }
 public AddCustomerResponse(IAddCustomerRequest request)
 {
     this.OriginalRequest = request;
 }