예제 #1
0
        public async Task SignUp(CommandArgs commandArgs, string username)
        {
            using (var unitOfWork = new CommandUnitOfWork(commandArgs))
            {
                var newCustomer = await this.CustomerRegistrationService.SignUp(username);

                unitOfWork.RaiseEvent(new NewCustomerSignupEvent(newCustomer));

                unitOfWork.RaiseEvent(new LogEvent($"New customer [{newCustomer.Username}] signed up"));

                unitOfWork.Commit();
            }
        }
예제 #2
0
        public async Task HireCar(CommandArgs commandArgs, string carname, string customerUsername)
        {
            using (var unitOfWork = new CommandUnitOfWork(commandArgs))
            {
                var customer = await this.CustomerService.GetCustomer(customerUsername);

                var car = await this.CarService.GetCar(carname);

                this.RentalService.Hire(car, customer);

                unitOfWork.RaiseEvent(new LogEvent($"Customer [{customer.Username}] has hired {car.Make} {car.Model}"));

                unitOfWork.Commit();
            }
        }
예제 #3
0
        public async Task VerifyCustomer(CommandArgs commandArgs, string customerUsername, string verificationCode)
        {
            using (var unitOfWork = new CommandUnitOfWork(commandArgs))
            {
                var customer = await this.CustomerService.GetCustomer(customerUsername);

                if (await this.CustomerRegistrationService.VerifyCode(customer, verificationCode))
                {
                    unitOfWork.RaiseEvent(new VerifiedCustomerEvent(customer));
                }
                else
                {
                    unitOfWork.RaiseEvent(new LogEvent($"Incorrect verificiation code [{verificationCode}] given for customer [{customer.Username}]"));
                }

                unitOfWork.Commit();
            }
        }