public Promotion(ValidityRange validityRange, ReceiveCondition receiveCondition, Benefit benefit) { Id = Guid.NewGuid(); ValidityRange = validityRange; ReceiveCondition = receiveCondition; Benefit = benefit; }
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 void SetBenefit(Benefit benefit) { Require.NotNull(benefit, "benefit"); Require.IsNotIn(State, DraftState.WaitingForApproval, DraftState.Accepted); Benefit = benefit; CheckCompletion(); }