예제 #1
0
        public void MakeClaimable()
        {
            var bonus  = new Bonus(Data.Bonus);
            var player = new Player(Data.Player);

            bonus.Data.Statistic.TotalRedeemedAmount -= Data.Amount;
            Data.Amount = bonus.CalculateReward(player, Data.Parameters);
            bonus.Data.Statistic.TotalRedeemedAmount += Data.Amount;

            Data.ActivationState = ActivationStatus.Claimable;
            Data.UpdatedOn       = SystemTime.Now.ToBrandOffset(Data.Bonus.Template.Info.Brand.TimezoneId);

            Events.Add(new RedemptionIsClaimable
            {
                AggregateId = Data.Id
            });
        }
예제 #2
0
        public BonusRedemption(Player player, Bonus bonus, RedemptionParams redemptionParams)
        {
            var bonusReward = bonus.CalculateReward(player, redemptionParams);

            Data = new Data.BonusRedemption
            {
                Amount    = bonusReward,
                Player    = player.Data,
                Bonus     = bonus.Data,
                CreatedOn = SystemTime.Now.ToBrandOffset(bonus.Data.Template.Info.Brand.TimezoneId)
            };
            if (redemptionParams != null)
            {
                Data.Parameters = redemptionParams;
            }

            bonus.Data.Statistic.TotalRedeemedAmount += bonusReward;
            bonus.Data.Statistic.TotalRedemptionCount++;

            Events = new List <IDomainEvent>();
            var redeemedEvent = new BonusRedeemed
            {
                AggregateId  = Data.Id,
                BonusId      = bonus.Data.Id,
                PlayerId     = player.Data.Id,
                BonusName    = bonus.Data.Name,
                PlayerName   = player.Data.Name,
                Amount       = bonusReward,
                CurrencyCode = player.Data.CurrencyCode,
                IssuedByCs   = Data.Parameters.IsIssuedByCs
            };

            if (Data.Parameters.IsIssuedByCs == false)
            {
                redeemedEvent.EventCreatedBy = Data.Player.Name;
            }

            Events.Add(redeemedEvent);
        }