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; }
public override void ApplyFor(Visitor visitor, IPromotionCodeGenerator generator) { generator.GeneratePremierePromoCodeFor(visitor); }
public override void ApplyFor(Visitor visitor, IPromotionCodeGenerator generator) { generator.GenerateDiscountFor(visitor, Discount); }
public override void ApplyFor(Visitor visitor, IPromotionCodeGenerator generator) { generator.GenerateFreeEntryPromoCodeForVisitor(visitor, Movie); }
public abstract void ApplyFor(Visitor visitor, IPromotionCodeGenerator generator);