コード例 #1
0
 public static Customer CreateRegistered(
     string email,
     string name,
     ICustomerUniquenessChecker customerUniquenessChecker)
 {
     return(new Customer(email, name));
 }
 public RegisterCustomerCommandHandler(
     ICustomerRepository customerRepository,
     ICustomerUniquenessChecker customerUniquenessChecker)
 {
     this._customerRepository   = customerRepository;
     _customerUniquenessChecker = customerUniquenessChecker;
 }
コード例 #3
0
        public static async Task <Customer> CreateNew(
            string email,
            string name,
            ICustomerUniquenessChecker customerUniquenessChecker)
        {
            if (!EmailValidator.IsValid(email))
            {
                throw new BusinessRuleValidationException($"This emailaddress is not valid: {email}");
            }

            if (!NameValidator.IsValid(name))
            {
                throw new BusinessRuleValidationException($"This name is not valid: {name}");
            }

            var customer = new Customer(email, name);
            var isUnique = await customerUniquenessChecker.IsUnique(customer).ConfigureAwait(false);

            if (!isUnique)
            {
                throw new BusinessRuleValidationException("Customer with this email already exists.");
            }

            return(customer);
        }
コード例 #4
0
 public CustomerEmailMustBeUniqueRule(
     ICustomerUniquenessChecker customerUniquenessChecker,
     string email)
 {
     _customerUniquenessChecker = customerUniquenessChecker;
     _email = email;
 }
コード例 #5
0
 public RegisterCustomerCommandHandler(ICustomerRepository customerRepository,
                                       ICustomerUniquenessChecker customerUniquenessChecker,
                                       IUnitOfWork unitOfWork)
 {
     this._customerRepository   = customerRepository;
     _customerUniquenessChecker = customerUniquenessChecker;
     _unitOfWork = unitOfWork;
 }
        public static Customer Create()
        {
            ICustomerUniquenessChecker customerUniquenessChecker = Substitute.For <ICustomerUniquenessChecker>();
            string email = "*****@*****.**";

            customerUniquenessChecker.IsUnique(email).Returns(true);

            return(Customer.CreateRegistered(email, "Name", customerUniquenessChecker));
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: vitek0585/DesignPatterns
 public RegisterCustomerCommandHandler(
     ICustomerRepository customerRepository,
     ICustomerUniquenessChecker customerUniquenessChecker,
     IEventBus eventBus)
 {
     this._customerRepository   = customerRepository;
     _customerUniquenessChecker = customerUniquenessChecker;
     _eventBus = eventBus;
 }
コード例 #8
0
 public GetCustomerDetailsQueryHandler(
     ICustomerRepository customerRepository,
     ICustomerUniquenessChecker customerUniquenessChecker,
     IUnitOfWork unitOfWork)
 {
     this._customerRepository   = customerRepository;
     _customerUniquenessChecker = customerUniquenessChecker;
     _unitOfWork = unitOfWork;
 }
コード例 #9
0
        public static Customer CreateRegistered(
            string email,
            string name,
            ICustomerUniquenessChecker customerUniquenessChecker)
        {
            CheckRule(new CustomerEmailMustBeUniqueRule(customerUniquenessChecker, email));

            return(new Customer(email, name));
        }
コード例 #10
0
ファイル: Customer.cs プロジェクト: davidcotrina/EcommerceDDD
        public static Customer CreateCustomer(string email, string name,
                                              ICustomerUniquenessChecker customerUniquenessChecker)
        {
            if (!customerUniquenessChecker.IsUserUnique(email))
            {
                throw new BusinessRuleException("This e-mail is already in use.");
            }

            return(new Customer(email, name));
        }
コード例 #11
0
 public RegisterCustomerCommandHandler(
     UserManager <ApplicationUser> userManager,
     IEcommerceUnitOfWork unitOfWork,
     ICustomerUniquenessChecker uniquenessChecker,
     IHttpContextAccessor httpContextAccessor)
 {
     _userManager         = userManager;
     _unitOfWork          = unitOfWork;
     _uniquenessChecker   = uniquenessChecker;
     _httpContextAccessor = httpContextAccessor;
 }
コード例 #12
0
ファイル: Customer.cs プロジェクト: jianba/NetCoreExamples
        //客户创建
        public static Customer CreateRegistered(string email, string name, ICustomerUniquenessChecker customerUniquenessChecker)
        {
            var isUnique = customerUniquenessChecker.IsUnique(email);

            if (!isUnique)
            {
                throw new BusinessRuleValidationException("Customer with this email already existes.");
            }

            return(new Customer(email, name));
        }
コード例 #13
0
 public RegisterCustomerCommandHandler(
     ICustomerRepository customerRepository,
     ICustomerUniquenessChecker customerUniquenessChecker,
     IPasswordHashCalculator passwordHashCalculator,
     IUnitOfWork unitOfWork)
 {
     _customerRepository        = customerRepository;
     _customerUniquenessChecker = customerUniquenessChecker;
     _passwordHashCalculator    = passwordHashCalculator;
     _unitOfWork = unitOfWork;
 }
コード例 #14
0
        public void GivenCustomerEmailIsUnique_WhenCustomerIsRegistering_IsSuccessful()
        {
            // Arrange
            ICustomerUniquenessChecker customerUniquenessChecker = Substitute.For <ICustomerUniquenessChecker>();
            const string email = "*****@*****.**";

            customerUniquenessChecker.IsUnique(email).Returns(true);

            // Act
            Customer customer = Customer.CreateRegistered(email, "Sample name", customerUniquenessChecker);

            // Assert
            AssertPublishedDomainEvent <CustomerRegisteredEvent>(customer);
        }
コード例 #15
0
        public Customer(string email, string name, ICustomerUniquenessChecker customerUniquenessChecker)
        {
            this.Email = email;
            this.Name  = name;

            var isUnique = customerUniquenessChecker.IsUnique(this);

            if (!isUnique)
            {
                throw new BusinessRuleValidationException("Customer with this email already exists.");
            }

            this.AddDomainEvent(new CustomerRegisteredEvent(this));
        }
コード例 #16
0
        public void GivenCustomerEmailIsNotUnique_WhenCustomerIsRegistering_BreaksCustomerEmailMustBeUniqueRule()
        {
            // Arrange
            ICustomerUniquenessChecker customerUniquenessChecker = Substitute.For <ICustomerUniquenessChecker>();
            const string email = "*****@*****.**";

            customerUniquenessChecker.IsUnique(email).Returns(false);

            // Assert
            AssertBrokenRule <CustomerEmailMustBeUniqueRule>(() =>
            {
                // Act
                Customer.CreateRegistered(email, "Sample name", customerUniquenessChecker);
            });
        }
コード例 #17
0
ファイル: Customer.cs プロジェクト: falberthen/EcommerceDDD
    public static async Task <Customer> CreateNew(string email, string name,
                                                  ICustomerUniquenessChecker customerUniquenessChecker)
    {
        if (string.IsNullOrWhiteSpace(name))
        {
            throw new ArgumentException("Customer name cannot be null or whitespace.", nameof(name));
        }

        if (!await customerUniquenessChecker.IsUserUnique(email))
        {
            throw new BusinessRuleException("This e-mail is already in use.");
        }

        var customerId = new CustomerId(Guid.NewGuid());

        return(new Customer(customerId, email, name));
    }
コード例 #18
0
ファイル: Customer.cs プロジェクト: ramil89/Registration
        public Customer(
            string login,
            string password,
            int provinceId,
            int countryId,
            ICustomerUniquenessChecker customerUniquenessChecker,
            IPasswordHashCalculator passwordHashCalculator)
        {
            Id           = Guid.NewGuid();
            Login        = login;
            ProvinceId   = provinceId;
            CountryId    = countryId;
            PasswordHash = passwordHashCalculator.Calculate(password);

            if (!customerUniquenessChecker.IsUnique(this))
            {
                throw new BusinessRuleValidationException("Customer with this login already exists.");
            }

            AddDomainEvent(new CustomerRegisteredEvent(this));
        }
コード例 #19
0
 public Customer(object email, object name, ICustomerUniquenessChecker customerUniquenessChecker)
 {
     this.email = email;
     this.name  = name;
     _customerUniquenessChecker = customerUniquenessChecker;
 }