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 AddEditBonusResponse CreateUpdate(CreateUpdateBonus model) { var validationResult = _bonusQueries.GetValidationResult(model); if (!validationResult.IsValid) { return(ValidationErrorResponse <AddEditBonusResponse>(validationResult)); } var bonusId = _bonusCommands.AddUpdateBonus(model); return(new AddEditBonusResponse { Success = true, BonusId = bonusId }); }
public void AddBonus( BonusType bonusType, string templateName, IssuanceMode mode, BonusRewardType rewardType, decimal depositAmountFrom, decimal bonusAmount, decimal maxBonus, string bonusName, string bonusCode, string description) { var brand = _bonusRepository.Brands.Single(b => b.Id == new Guid("00000000-0000-0000-0000-000000000138")); Guid templateId; var template = _bonusRepository.Templates.SingleOrDefault(t => t.Info.Name == templateName); if (template == null) { var model = new CreateUpdateTemplate { Id = Guid.Empty, Info = new CreateUpdateTemplateInfo { Name = templateName, TemplateType = bonusType, BrandId = brand.Id, WalletTemplateId = brand.WalletTemplates.First().Id, Mode = mode } }; var identifier = _bonusManagementCommands.AddUpdateTemplate(model); templateId = identifier.Id; model = new CreateUpdateTemplate { Id = identifier.Id, Version = identifier.Version, Availability = new CreateUpdateTemplateAvailability(), Rules = new CreateUpdateTemplateRules { RewardType = rewardType, RewardTiers = new List <CreateUpdateRewardTier> { new CreateUpdateRewardTier { CurrencyCode = "RMB", BonusTiers = new List <CreateUpdateTemplateTier> { new CreateUpdateTemplateTier { From = depositAmountFrom, Reward = bonusAmount } }, RewardAmountLimit = maxBonus } } }, Wagering = new CreateUpdateTemplateWagering { HasWagering = true, Method = WageringMethod.Bonus, Multiplier = 2 }, Notification = new CreateUpdateTemplateNotification() }; _bonusManagementCommands.AddUpdateTemplate(model); } else { templateId = template.Id; } var bonus = _bonusRepository.Bonuses.SingleOrDefault(b => b.Name == bonusName); if (bonus == null) { var startDate = new DateTime(2016, 4, 26, 0, 0, 0); var endDate = new DateTime(2016, 12, 31, 0, 0, 0); var bonusId = _bonusManagementCommands.AddUpdateBonus(new CreateUpdateBonus { Id = Guid.Empty, Name = bonusName, Code = bonusCode, Description = description, TemplateId = templateId, ActiveFrom = startDate, ActiveTo = endDate, DurationStart = startDate, DurationEnd = endDate }); if (bonusType == BonusType.FirstDeposit && mode == IssuanceMode.Automatic) { return; } _bonusManagementCommands.ChangeBonusStatus(new ToggleBonusStatus { Id = bonusId, IsActive = true }); } }