public async Task <SaveShopperResult> Handle(CreateShopperCommand command, CancellationToken cancellationToken) { var result = new SaveShopperResult(); if (await _userRepository.AnyAsync(x => x.Email.ToLower() == command.Email.ToLower())) { Notifications.Handle("E-mail em uso"); } if (await _shopperRepository.AnyAsync(x => x.Cpf.Number.Equals(command.Cpf.Number))) { Notifications.Handle("CPF em uso"); } if (Notifications.HasNotifications()) { return(null); } var user = User.New(command.Email, _passwordHasherService.Hash(command.Password), command.Name, EUserType.Shopper); command.Cpf.Type = EIdentiticationType.Cpf; var shopper = Shopper.New(user, command.Cpf); await _shopperRepository.AddAsync(shopper); if (!await CommitAsync()) { return(null); } await _shopperAddressRepository.AddAsync(ShopperAddress.New(shopper.Id, EAddressType.Home, command.Address, "registro")); if (!await CommitAsync()) { return(null); } result.Id = shopper.Id; return(result); }