Ejemplo n.º 1
0
        public async Task <ValidationResult> Handle(RegisterCustomerCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                return(request.ValidationResult);
            }

            var customerExistis = await _repository.GetCustomerByEmail(request.Email);

            if (customerExistis != null)
            {
                AddValidationError("Already exists a customer with the given e-mail.");
                return(validationResult);
            }

            var customer = new Models.Customer(request.Id, request.Name, request.Email);

            await _repository.AddCustomer(customer);

            customer.AddEvent(new CustomerRegisteredEvent(request.Id, request.Name, request.Email));

            return(await DataPersistence(_repository.UnitOfWork));
        }