public async Task <Guid> Handle(AddSubscriptionCommand request, CancellationToken cancellationToken) { var validator = new AddSubscriptionCommandValidator(); var validationResult = await validator.ValidateAsync(request); if (validationResult.Errors.Count > 0) { throw new Exceptions.ValidationException(validationResult); } var subscription = SubscriptionMapper.Map(request); var customer = await _customerRepository.GetByIdAsync(request.CustomerId); var subscriptionChecker = new SubscriptionChecker(); var isEligible = subscriptionChecker.CheckEligibility(customer); if (!isEligible) { throw new NotEligibleException(request.CustomerId); } await _subscriptionRepository.AddAsync(subscription); return(subscription.Id); }
static void Main(string[] args) { SubscriptionChecker subscriptionChecker = new SubscriptionChecker(); Console.ReadKey(); }