示例#1
0
        public async Task HandleAsync(SubscribeToTheNewsletter command, CancellationToken cancellationToken = default)
        {
            var subscriber = Subscriber.Subscribe(command.Id, command.Email);
            var discount   = _discountCodeGenerator.GenerateCodeForSubscriber(_identityProvider.Next(), subscriber.Id);
            await _newsletterRepository.Add(subscriber, cancellationToken);

            await _discountRepository.Add(discount, cancellationToken);

            await _emailService.SendEmailWithDiscountCode(discount.GetCode(), cancellationToken);
        }