//create public ActionResult Create() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageDiscounts)) return AccessDeniedView(); var model = new DiscountModel(); PrepareDiscountModel(model, null); //default values model.LimitationTimes = 1; return View(model); }
public ActionResult Create(DiscountModel model, bool continueEditing) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageDiscounts)) return AccessDeniedView(); if (ModelState.IsValid) { var discount = model.ToEntity(); _discountService.InsertDiscount(discount); //activity log _customerActivityService.InsertActivity("AddNewDiscount", _localizationService.GetResource("ActivityLog.AddNewDiscount"), discount.Name); SuccessNotification(_localizationService.GetResource("Admin.Promotions.Discounts.Added")); return continueEditing ? RedirectToAction("Edit", new { id = discount.Id }) : RedirectToAction("List"); } //If we got this far, something failed, redisplay form PrepareDiscountModel(model, null); return View(model); }
protected void PrepareDiscountModel(DiscountModel model, Discount discount) { if (model == null) throw new ArgumentNullException("model"); model.PrimaryStoreCurrencyCode = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId).CurrencyCode; model.AvailableDiscountRequirementRules.Add(new SelectListItem() { Text = _localizationService.GetResource("Admin.Promotions.Discounts.Requirements.DiscountRequirementType.Select"), Value = "" }); var discountRules = _discountService.LoadAllDiscountRequirementRules(); foreach (var discountRule in discountRules) model.AvailableDiscountRequirementRules.Add(new SelectListItem() { Text = discountRule.PluginDescriptor.FriendlyName, Value = discountRule.PluginDescriptor.SystemName }); if (discount != null) { //applied to categories foreach (var category in discount.AppliedToCategories) { if (category != null && !category.Deleted) { model.AppliedToCategoryModels.Add(new DiscountModel.AppliedToCategoryModel() { CategoryId = category.Id, Name = category.Name }); } } //applied to product variants foreach (var pv in discount.AppliedToProductVariants) { if (pv != null && !pv.Deleted) { var appliedToProductVariantModel = new DiscountModel.AppliedToProductVariantModel() { ProductVariantId = pv.Id, FullProductName = pv.FullProductName }; model.AppliedToProductVariantModels.Add(appliedToProductVariantModel); } } //requirements foreach (var dr in discount.DiscountRequirements.OrderBy(dr=>dr.Id)) { var drr = _discountService.LoadDiscountRequirementRuleBySystemName(dr.DiscountRequirementRuleSystemName); if (drr != null) { model.DiscountRequirementMetaInfos.Add(new DiscountModel.DiscountRequirementMetaInfo() { DiscountRequirementId = dr.Id, RuleName = drr.PluginDescriptor.FriendlyName, ConfigurationUrl = GetRequirementUrlInternal(drr, discount, dr.Id) }); } } } }
public ActionResult Edit(DiscountModel model, bool continueEditing) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageDiscounts)) return AccessDeniedView(); var discount = _discountService.GetDiscountById(model.Id); if (discount == null) //No discount found with the specified id return RedirectToAction("List"); if (ModelState.IsValid) { var prevDiscountType = discount.DiscountType; discount = model.ToEntity(discount); _discountService.UpdateDiscount(discount); //clean up old references (if changed) and update "HasDiscountsApplied" properties if (prevDiscountType == DiscountType.AssignedToCategories && discount.DiscountType != DiscountType.AssignedToCategories) { //applied to categories var categories = discount.AppliedToCategories.ToList(); discount.AppliedToCategories.Clear(); _discountService.UpdateDiscount(discount); //update "HasDiscountsApplied" property foreach (var category in categories) _categoryService.UpdateHasDiscountsApplied(category); } if (prevDiscountType == DiscountType.AssignedToSkus && discount.DiscountType != DiscountType.AssignedToSkus) { //applied to product variants var productVariants = discount.AppliedToProductVariants.ToList(); discount.AppliedToProductVariants.Clear(); _discountService.UpdateDiscount(discount); //update "HasDiscountsApplied" property foreach (var pv in productVariants) _productService.UpdateHasDiscountsApplied(pv); } //activity log _customerActivityService.InsertActivity("EditDiscount", _localizationService.GetResource("ActivityLog.EditDiscount"), discount.Name); SuccessNotification(_localizationService.GetResource("Admin.Promotions.Discounts.Updated")); return continueEditing ? RedirectToAction("Edit", discount.Id) : RedirectToAction("List"); } //If we got this far, something failed, redisplay form PrepareDiscountModel(model, discount); return View(model); }