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 }); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); }
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); } }
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); } }
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); }
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); }
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(); }
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(); }
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(); }
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); } }
public BonusController(BonusRepository bonusRepository, BonusBLL bonusBLL) { _bonusRepository = bonusRepository; _bonusBLL = bonusBLL; }