public void ApplyEvent(MembershipPointsEarnedEvent simpleEvent) { var point = MembershipPoint.New(simpleEvent.Amount, simpleEvent.PointsType, simpleEvent.EarnedAt); Points.Add(point); Version++; // domain rule. if the new points are in between 200 - 300, and it is a membership type level 1, we upgrade the membership. // if the points above 300 then it would be membership type level 3 if (TotalPoints > 200 && TotalPoints < 300 && Type == MembershipType.Level1) { UpgradeMembership(); } if (TotalPoints > 300) { // convert membership type to lvl 3 if (Type == MembershipType.Level1) { UpgradeMembership(); UpgradeMembership(); } else if (Type == MembershipType.Level2) { UpgradeMembership(); } } }
public static MembershipPoint New(double amount, MembershipPointsType type, DateTime earnedAt) { var newPoint = new MembershipPoint(amount, type, earnedAt); return(newPoint); }