コード例 #1
0
        public void Referer_can_claim_2_different_bonus_redemptions()
        {
            var bonus = CreateBonusWithReferFriendTiers();

            bonus.Template.Info.Mode = IssuanceMode.ManualByPlayer;
            CompleteReferAFriendRequirments(PlayerId);
            bonus.IsActive = false;

            var bonus2 = CreateBonusWithReferFriendTiers();

            bonus2.Template.Info.Mode = IssuanceMode.ManualByPlayer;
            CompleteReferAFriendRequirments(PlayerId);
            bonus.IsActive = true;

            var bonusPlayer = BonusRepository.GetLockedPlayer(PlayerId);

            bonusPlayer.BonusesRedeemed.Count.Should().Be(2);
            bonusPlayer.BonusesRedeemed.All(br => br.Amount == 10).Should().BeTrue();

            BonusCommands.ClaimBonusRedemption(new ClaimBonusRedemption
            {
                PlayerId     = PlayerId,
                RedemptionId = bonusPlayer.BonusesRedeemed.ElementAt(0).Id
            });
            BonusCommands.ClaimBonusRedemption(new ClaimBonusRedemption
            {
                PlayerId     = PlayerId,
                RedemptionId = bonusPlayer.BonusesRedeemed.ElementAt(1).Id
            });
        }
コード例 #2
0
        public void Template_update_updates_bonus()
        {
            var initialBonus = CreateFirstDepositBonus(false);

            var model = new CreateUpdateTemplate
            {
                Id      = initialBonus.Template.Id,
                Version = initialBonus.Template.Version,
                Rules   = new CreateUpdateTemplateRules
                {
                    RewardTiers = new List <CreateUpdateRewardTier>
                    {
                        new CreateUpdateRewardTier
                        {
                            CurrencyCode = "CAD",
                            BonusTiers   = new List <CreateUpdateTemplateTier> {
                                new CreateUpdateTemplateTier {
                                    Reward = 25
                                }
                            }
                        }
                    },
                    RewardType = BonusRewardType.Percentage
                }
            };

            _bonusManagementCommands.AddUpdateTemplate(model);

            var updatedBonus = BonusRepository.GetCurrentVersionBonuses().Single(bonus => bonus.Id == initialBonus.Id);

            Assert.AreEqual(1, updatedBonus.Version);
            Assert.AreEqual(1, updatedBonus.Template.Version);
        }
コード例 #3
0
        public Core.Data.Bonus CreateBonus(Template bonusTemplate, bool isActive = true)
        {
            var now   = DateTimeOffset.Now.ToBrandOffset(bonusTemplate.Info.Brand.TimezoneId).Date;
            var model = new CreateUpdateBonus
            {
                Id            = Guid.Empty,
                Name          = TestDataGenerator.GetRandomString(5),
                Code          = TestDataGenerator.GetRandomString(5),
                Description   = TestDataGenerator.GetRandomString(20),
                TemplateId    = bonusTemplate.Id,
                ActiveFrom    = now,
                ActiveTo      = now.AddDays(1),
                DurationStart = now,
                DurationEnd   = now.AddDays(1)
            };
            var bonusId = BonusManagementCommands.AddUpdateBonus(model);

            if (isActive)
            {
                BonusManagementCommands.ChangeBonusStatus(new ToggleBonusStatus
                {
                    Id       = bonusId,
                    IsActive = true
                });
            }

            return(BonusRepository.GetCurrentVersionBonuses().Single(b => b.Id == bonusId));
        }
コード例 #4
0
        public void Updated_bonus_is_correctly_saved_to_DB()
        {
            var template  = CreateFirstDepositTemplate(mode: IssuanceMode.AutomaticWithCode);
            var baseBonus = CreateFirstDepositBonus(isActive: false, mode: IssuanceMode.AutomaticWithCode);

            var model = new CreateUpdateBonus
            {
                Name         = TestDataGenerator.GetRandomString(),
                Code         = TestDataGenerator.GetRandomString(),
                Description  = TestDataGenerator.GetRandomString(),
                TemplateId   = template.Id,
                Id           = baseBonus.Id,
                Version      = baseBonus.Version,
                DurationType = DurationType.None,
                ActiveFrom   = DateTimeOffset.Now.ToBrandOffset(template.Info.Brand.TimezoneId).Date,
                ActiveTo     = DateTimeOffset.Now.AddDays(1).ToBrandOffset(template.Info.Brand.TimezoneId).Date
            };

            var bonusId = _bonusManagementCommands.AddUpdateBonus(model);

            var updatedBonus = BonusRepository.GetCurrentVersionBonuses().Single(a => a.Id == bonusId);

            Assert.AreEqual(1, updatedBonus.Version);
            Assert.AreEqual(model.Code, updatedBonus.Code);
        }
コード例 #5
0
        public void Redemptions_are_not_created_if_all_reward_tiers_were_redeemed_this_month()
        {
            CreateBonusWithHighDepositTiers(false);
            MakeDeposit(PlayerId, 1000);
            MakeDeposit(PlayerId, 1000);

            BonusRepository.GetLockedPlayer(PlayerId).BonusesRedeemed.Count.Should().Be(2);
        }
コード例 #6
0
        public void Bonus_redemption_is_Pending_with_Active_rollover_after_fulfilling_qualification()
        {
            MakeDeposit(PlayerId);

            var bonusRedemption = BonusRepository.GetLockedPlayer(PlayerId).BonusesRedeemed.Single();

            bonusRedemption.ActivationState.Should().Be(ActivationStatus.Pending);
            bonusRedemption.RolloverState.Should().Be(RolloverStatus.Active);
        }
コード例 #7
0
        public void Reward_threshold_is_null_if_player_deposited_more_then_requires_last_tier()
        {
            var bonus  = CreateBonusWithHighDepositTiers(false);
            var player = BonusRepository.GetLockedPlayer(PlayerId);

            MakeDeposit(PlayerId, 1100);

            var bonusRewardThreshold = new Core.Entities.Bonus(bonus).CalculateRewardThreshold(player);

            Assert.Null(bonusRewardThreshold);
        }
コード例 #8
0
        public void Bonus_deactivation_is_saved_to_DB()
        {
            var bonus = CreateFirstDepositBonus();

            _bonusManagementCommands.ChangeBonusStatus(new ToggleBonusStatus {
                Id = bonus.Id
            });

            var updatedBonus = BonusRepository.GetCurrentVersionBonuses().Single(a => a.Id == bonus.Id);

            Assert.False(updatedBonus.IsActive);
        }
コード例 #9
0
        public void Reward_threshold_is_calculated_correctly()
        {
            var bonus  = CreateBonusWithHighDepositTiers(false);
            var player = BonusRepository.GetLockedPlayer(PlayerId);

            MakeDeposit(PlayerId, 950);

            var bonusRewardThreshold = new Core.Entities.Bonus(bonus).CalculateRewardThreshold(player);

            Assert.AreEqual(1000, bonusRewardThreshold.DepositAmountRequired);
            Assert.AreEqual(100, bonusRewardThreshold.BonusAmount);
            Assert.AreEqual(50, bonusRewardThreshold.RemainingAmount);
        }
コード例 #10
0
        public void Cannot_redeem_refer_friend_bonus_with_wager_requirement_not_met()
        {
            CreateBonusWithReferFriendTiers();
            var newPlayer = CreatePlayer(PlayerId);

            MakeDeposit(newPlayer.Id);

            PlaceAndLoseBet(90, newPlayer.Id);

            var redemption = BonusRepository.GetLockedPlayer(PlayerId).BonusesRedeemed.Single();

            redemption.ActivationState.Should().Be(ActivationStatus.Pending);
        }
コード例 #11
0
        public void Cannot_redeem_refer_friend_bonus_with_min_first_deposit_requirement_not_met()
        {
            var bonus = CreateBonusWithReferFriendTiers();

            bonus.Template.Rules.ReferFriendMinDepositAmount = 300;
            var newPlayer = CreatePlayer(PlayerId);

            MakeDeposit(newPlayer.Id);
            PlaceAndLoseBet(90, newPlayer.Id);

            var redemption = BonusRepository.GetLockedPlayer(PlayerId).BonusesRedeemed.Single();

            redemption.ActivationState.Should().Be(ActivationStatus.Pending);
        }
コード例 #12
0
        public void Playing_beyound_minimal_rollover_does_not_create_additional_bonus_redemptions()
        {
            CreateBonusWithReferFriendTiers();

            var referredPlayer = CreatePlayer(PlayerId);

            MakeDeposit(referredPlayer.Id);
            PlaceAndWinBet(200, 200, referredPlayer.Id);
            PlaceAndWinBet(200, 200, referredPlayer.Id);

            var bonusPlayer = BonusRepository.GetLockedPlayer(PlayerId);

            bonusPlayer.BonusesRedeemed.Count.Should().Be(1);
        }
コード例 #13
0
 private void InitResponsitory()
 {
     // Insert new Repository in here
     Admin             = new AdminRepository(_context);
     Bonus             = new BonusRepository(_context);
     Booking           = new BookingRepository(_context);
     Customer          = new CustomerRepository(_context);
     Driver            = new DriverRepository(_context);
     DriverAvaiability = new DriverAvaiabilityRepository(_context);
     DriverHaveBonus   = new DriverHaveBonusRepository(_context);
     TransactionWallet = new TransactionWalletRepository(_context);
     Vehicle           = new VehicleRepository(_context);
     Wallet            = new WalletRepository(_context);
 }
コード例 #14
0
        public void Can_redeem_refer_friend_bonus_of_matched_tier()
        {
            CreateBonusWithReferFriendTiers();

            var bonusPlayer = BonusRepository.GetLockedPlayer(PlayerId);

            for (var i = 1; i <= 9; i++)
            {
                CompleteReferAFriendRequirments(PlayerId);

                var referRedemption = bonusPlayer.BonusesRedeemed.ElementAt(i - 1);
                Assert.AreEqual(ActivationStatus.Activated, referRedemption.ActivationState);
                Assert.AreEqual(GetExpectedRedemptionAmount(i), referRedemption.Amount);
            }
        }
コード例 #15
0
        public async void Can_get_completed_bonus_redemptions()
        {
            var manualBonus = CreateFirstDepositBonus(mode: IssuanceMode.ManualByPlayer);

            var info           = CreateTemplateInfo(BonusType.ReloadDeposit, IssuanceMode.AutomaticWithCode);
            var reloadTemplate = CreateTemplate(info);
            var reloadBonus    = CreateBonus(reloadTemplate);

            MakeDeposit(_player.Id, bonusId: manualBonus.Id);
            MakeDeposit(_player.Id, bonusCode: reloadBonus.Code);

            manualBonus.DurationEnd = manualBonus.DurationEnd.AddDays(-2);
            BonusRepository.SaveChanges();

            var result = await ApiProxy.GetCompletedBonusesAsync(_player.Id);

            result.Should().NotBeEmpty();
            result.Count.Should().Be(2);
        }
コード例 #16
0
ファイル: CommonView.cs プロジェクト: Shaykat/HRMModule
        public virtual bool AddBonusToEmployeeList(int departmentId, Bonuses bonus, string employeeIdsList)
        {
            try
            {
                EmployeeSalaryRepository empSalRepo  = new EmployeeSalaryRepository();
                BonusRepository          bonusRepo   = new BonusRepository();
                BonusesRepository        bonusesRepo = new BonusesRepository();

                var idList = employeeIdsList.Trim().Split(',');

                var salaryBonus = from empSal in empSalRepo.GetAll()
                                  join bon in bonusRepo.GetAll() on empSal.BonusId equals bon.BonusId
                                  select new
                {
                    EmployeeId = empSal.EmployeeId,
                    BonusId    = empSal.BonusId
                };

                salaryBonus = salaryBonus.Where(item => idList.Contains(item.EmployeeId.ToString()));

                foreach (var item in salaryBonus)
                {
                    Bonuses bonusesItem = new Bonuses
                    {
                        BonusId          = item.BonusId,
                        BonusValue       = bonus.BonusValue,
                        BonusDescription = bonus.BonusDescription,
                        BonusesDate      = bonus.BonusesDate
                    };
                    bonusesRepo.Insert(bonusesItem);

                    Bonus tempBonus = bonusRepo.Get(item.BonusId);
                    tempBonus.BonusValue += bonus.BonusValue;
                    bonusRepo.Update(tempBonus, item.BonusId);
                }
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }
コード例 #17
0
ファイル: CommonView.cs プロジェクト: Shaykat/HRMModule
        public virtual bool AssignBonusToEmployee(Bonuses bonus, int EmployeeId)
        {
            try
            {
                EmployeeSalaryRepository empSalRepo  = new EmployeeSalaryRepository();
                BonusRepository          bonusRepo   = new BonusRepository();
                BonusesRepository        bonusesRepo = new BonusesRepository();


                var salaryBonus = from empSal in empSalRepo.GetAll()
                                  join bon in bonusRepo.GetAll() on empSal.BonusId equals bon.BonusId
                                  select new
                {
                    EmployeeId = empSal.EmployeeId,
                    BonusId    = empSal.BonusId
                };

                salaryBonus = salaryBonus.Where(item => item.EmployeeId == EmployeeId);

                foreach (var item in salaryBonus)
                {
                    Bonuses bonusesItem = new Bonuses
                    {
                        BonusId          = item.BonusId,
                        BonusValue       = bonus.BonusValue,
                        BonusDescription = bonus.BonusDescription,
                        BonusesDate      = bonus.BonusesDate
                    };
                    bonusesRepo.Insert(bonusesItem);

                    Bonus tempBonus = bonusRepo.Get(item.BonusId);
                    tempBonus.BonusValue += bonus.BonusValue;
                    bonusRepo.Update(tempBonus, item.BonusId);
                }
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }
コード例 #18
0
        public void Can_not_get_2_refer_a_friend_redemptions_using_1_referred()
        {
            //Getting bonus #1
            var bonus          = CreateBonusWithReferFriendTiers();
            var referredPlayer = CreatePlayer(PlayerId);

            MakeDeposit(referredPlayer.Id);
            PlaceAndWinBet(200, 200, referredPlayer.Id);
            bonus.IsActive = false;

            //Trying to get bonus #2
            bonus = CreateBonusWithReferFriendTiers();
            bonus.Template.Rules.ReferFriendWageringCondition = 2;
            MakeDeposit(referredPlayer.Id, 201);
            PlaceAndWinBet(201, 201, referredPlayer.Id);

            var bonusPlayer = BonusRepository.GetLockedPlayer(PlayerId);

            bonusPlayer.BonusesRedeemed.Count.Should().Be(1);
        }
コード例 #19
0
        public void Can_redeem_refer_friend_bonus_with_exact_matched_tier()
        {
            var referTier = new BonusTier
            {
                From   = 1,
                Reward = 10
            };
            var bonus = CreateBonusWithReferFriendTiers();

            bonus.Template.Rules.RewardTiers.Single().BonusTiers.Clear();
            bonus.Template.Rules.RewardTiers.Single().BonusTiers.Add(referTier);

            CompleteReferAFriendRequirments(PlayerId);

            var bonusPlayer     = BonusRepository.GetLockedPlayer(PlayerId);
            var referRedemption = bonusPlayer.BonusesRedeemed.SingleOrDefault(x => x.ActivationState == ActivationStatus.Activated);

            Assert.NotNull(referRedemption);
            Assert.AreEqual(referTier.Reward, referRedemption.Amount);
        }
コード例 #20
0
        public void Bet_outcome_decreases_RolloverLeft_of_bonus_redemption_that_was_created_first()
        {
            var bonus2 = CreateFirstDepositBonus();

            bonus2.Template.Rules.RewardTiers.Single().BonusTiers.Single().Reward = 100;
            bonus2.Template.Wagering.HasWagering = true;
            bonus2.Template.Wagering.Multiplier  = 3m;

            MakeDeposit(PlayerId, 400);

            var redemption1 = BonusRedemptions.First();
            var redemption2 = BonusRedemptions.Last();

            BonusRepository.GetLockedPlayer(PlayerId).Data.Wallets.First().BonusesRedeemed = new List <BonusRedemption> {
                redemption2, redemption1
            };
            PlaceAndLoseBet(50, PlayerId);

            redemption1.Contributions.SingleOrDefault(c => c.Type == ContributionType.Bet).Should().NotBeNull();
            redemption2.Contributions.Should().BeEmpty();
        }
コード例 #21
0
        public async void Can_cancel_bonus_redemption()
        {
            var player = CreatePlayer();
            var bonus  = CreateFirstDepositBonus(mode: IssuanceMode.AutomaticWithCode);

            bonus.Template.Wagering.HasWagering = true;
            bonus.Template.Wagering.Multiplier  = 2;
            BonusRepository.SaveChanges();

            MakeDeposit(player.Id, bonusCode: bonus.Code);
            var redemption = player.Wallets.SelectMany(w => w.BonusesRedeemed).Single(br => br.Bonus.Id == bonus.Id);

            var result = await ApiProxy.CancelBonusRedemptionAsync(new CancelBonusRedemption
            {
                PlayerId     = player.Id,
                RedemptionId = redemption.Id
            });

            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
        }
コード例 #22
0
        public void Referer_tiers_are_bonus_dependent()
        {
            var bonus1 = CreateBonusWithReferFriendTiers();

            CompleteReferAFriendRequirments(PlayerId);
            bonus1.IsActive = false;

            var bonus2 = CreateBonusWithReferFriendTiers();

            bonus2.Template.Rules.RewardTiers.Single().BonusTiers = new List <TierBase>
            {
                new BonusTier {
                    From = 1, Reward = 10
                }
            };
            CompleteReferAFriendRequirments(PlayerId);
            bonus1.IsActive = true;

            var bonusPlayer = BonusRepository.GetLockedPlayer(PlayerId);

            bonusPlayer.BonusesRedeemed.Count.Should().Be(2);
            bonusPlayer.BonusesRedeemed.All(br => br.Amount == 10).Should().BeTrue();
        }
コード例 #23
0
        public virtual async Task <bool> AddDepartmentWideBonus(int departmentId, Bonuses bonus)
        {
            try
            {
                EmployeeSalaryRepository empSalRepo  = new EmployeeSalaryRepository();
                BonusRepository          bonusRepo   = new BonusRepository();
                BonusesRepository        bonusesRepo = new BonusesRepository();

                var salaryBonus = from empSal in empSalRepo.GetAll().Result
                                  join bon in bonusRepo.GetAll().Result on empSal.BonusId equals bon.BonusId
                                  select new
                {
                    BonusId = empSal.BonusId
                };

                foreach (var item in salaryBonus)
                {
                    Bonuses bonusesItem = new Bonuses();
                    bonusesItem.BonusId          = item.BonusId;
                    bonusesItem.BonusValue       = bonus.BonusValue;
                    bonusesItem.BonusDescription = bonus.BonusDescription;
                    bonusesItem.BonusesDate      = bonus.BonusesDate;
                    await bonusesRepo.Insert(bonusesItem);

                    Bonus tempBonus = bonusRepo.Get(item.BonusId).Result;
                    tempBonus.BonusValue += bonus.BonusValue;
                    await bonusRepo.Update(tempBonus, item.BonusId);
                }
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }
コード例 #24
0
 public BonusController(BonusRepository bonusRepository, BonusBLL bonusBLL)
 {
     _bonusRepository = bonusRepository;
     _bonusBLL        = bonusBLL;
 }