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);
        }