//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 (!_services.Permissions.Authorize(StandardPermissionProvider.ManageDiscounts)) return AccessDeniedView(); if (ModelState.IsValid) { var discount = model.ToEntity(); _discountService.InsertDiscount(discount); //activity log _customerActivityService.InsertActivity("AddNewDiscount", _services.Localization.GetResource("ActivityLog.AddNewDiscount"), discount.Name); NotifySuccess(_services.Localization.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); }
private 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.GetLocalizedValue(_localizationService, "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 products foreach (var product in discount.AppliedToProducts) { if (product != null && !product.Deleted) { var appliedToProductModel = new DiscountModel.AppliedToProductModel() { ProductId = product.Id, ProductName = product.Name }; model.AppliedToProductModels.Add(appliedToProductModel); } } //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.GetLocalizedValue(_localizationService, "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 products var products = discount.AppliedToProducts.ToList(); discount.AppliedToProducts.Clear(); _discountService.UpdateDiscount(discount); //update "HasDiscountsApplied" property foreach (var product in products) _productService.UpdateHasDiscountsApplied(product); } //activity log _customerActivityService.InsertActivity("EditDiscount", _localizationService.GetResource("ActivityLog.EditDiscount"), discount.Name); NotifySuccess(_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); }