예제 #1
0
 public void GrantBenefit(Visitor visitor, IVisitorHistoryRepository historyService, IPromotionCodeGenerator generator)
 {
     Require.IsTrue(IsActive, "Promotion is not active");
     if (ReceiveCondition.IsSatisfiedFor(visitor, historyService))
     {
         Benefit.ApplyFor(visitor, generator);
         DomainEventBus.Current.Raise(new PromotionGrantedForVisitor(Id, visitor.Id));
     }
 }
 public ApplyPromotionsWhenMovieWatched(
     IPromotionRepository promotionRepository,
     IVisitorHistoryRepository historyRepository,
     IPromotionCodeGenerator promotionCodeGenerator)
 {
     _promotionRepository    = promotionRepository;
     _historyRepository      = historyRepository;
     _promotionCodeGenerator = promotionCodeGenerator;
 }
예제 #3
0
 public void GrantBenefit(Visitor visitor, IVisitorHistoryRepository historyService, IPromotionCodeGenerator generator)
 {
     Require.IsTrue(IsActive, "Promotion is not active");
     if (ReceiveCondition.IsSatisfiedFor(visitor, historyService))
     {
         Benefit.ApplyFor(visitor, generator);
         DomainEventBus.Current.Raise(new PromotionGrantedForVisitor(Id, visitor.Id));
     }
 }
 public override bool IsSatisfiedFor(Visitor visitor, IVisitorHistoryRepository historyService)
 {
     return historyService.HasWatchedMovies(visitor, MoviesToWatch);
 }
 public override bool IsSatisfiedFor(Visitor visitor, IVisitorHistoryRepository historyService)
 {
     return(historyService.HasWatchedMovies(visitor, MoviesToWatch));
 }
예제 #6
0
 public override bool IsSatisfiedFor(Visitor visitor, IVisitorHistoryRepository historyService)
 {
     return historyService.HasAttendedPremiere(visitor, ValidityRange, RequiredCount);
 }
 public abstract bool IsSatisfiedFor(Visitor visitor, IVisitorHistoryRepository historyService);
예제 #8
0
 public override bool IsSatisfiedFor(Visitor visitor, IVisitorHistoryRepository historyService)
 {
     return(historyService.HasAttendedPremiere(visitor, ValidityRange, RequiredCount));
 }