public async Task CanLoadDiscountRequirementRules() { var rules = await _discountPluginManager.LoadAllPluginsAsync(); rules.Should().NotBeNull(); rules.Any().Should().BeTrue(); }
/// <summary> /// Prepare discount model /// </summary> /// <param name="model">Discount model</param> /// <param name="discount">Discount</param> /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the discount model /// </returns> public virtual async Task <DiscountModel> PrepareDiscountModelAsync(DiscountModel model, Discount discount, bool excludeProperties = false) { if (discount != null) { //fill in model values from the entity model ??= discount.ToModel <DiscountModel>(); //prepare available discount requirement rules var discountRules = await _discountPluginManager.LoadAllPluginsAsync(); foreach (var discountRule in discountRules) { model.AvailableDiscountRequirementRules.Add(new SelectListItem { Text = discountRule.PluginDescriptor.FriendlyName, Value = discountRule.PluginDescriptor.SystemName }); } model.AvailableDiscountRequirementRules.Insert(0, new SelectListItem { Text = await _localizationService.GetResourceAsync("Admin.Promotions.Discounts.Requirements.DiscountRequirementType.AddGroup"), Value = "AddGroup" }); model.AvailableDiscountRequirementRules.Insert(0, new SelectListItem { Text = await _localizationService.GetResourceAsync("Admin.Promotions.Discounts.Requirements.DiscountRequirementType.Select"), Value = string.Empty }); //prepare available requirement groups var requirementGroups = (await _discountService.GetAllDiscountRequirementsAsync(discount.Id)).Where(requirement => requirement.IsGroup); model.AvailableRequirementGroups = requirementGroups.Select(requirement => new SelectListItem { Value = requirement.Id.ToString(), Text = requirement.DiscountRequirementRuleSystemName }).ToList(); //prepare nested search models PrepareDiscountUsageHistorySearchModel(model.DiscountUsageHistorySearchModel, discount); PrepareDiscountProductSearchModel(model.DiscountProductSearchModel, discount); PrepareDiscountCategorySearchModel(model.DiscountCategorySearchModel, discount); PrepareDiscountManufacturerSearchModel(model.DiscountManufacturerSearchModel, discount); } model.PrimaryStoreCurrencyCode = (await _currencyService.GetCurrencyByIdAsync(_currencySettings.PrimaryStoreCurrencyId)).CurrencyCode; //get URL of discount with coupon code if (model.RequiresCouponCode && !string.IsNullOrEmpty(model.CouponCode)) { model.DiscountUrl = QueryHelpers.AddQueryString((_webHelper.GetStoreLocation()).TrimEnd('/'), NopDiscountDefaults.DiscountCouponQueryParameter, model.CouponCode); } //set default values for the new model if (discount == null) { model.LimitationTimes = 1; } return(model); }