public ActionResult Create(GroupDealViewModel model) { //if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts)) // return AccessDeniedView(); if (ModelState.IsValid) { //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { model.VendorId = _workContext.CurrentVendor.Id; } //vendors cannot edit "Show on home page" property if (_workContext.CurrentVendor != null && model.ShowOnHomePage) { model.ShowOnHomePage = false; } //var groupDeal = new ModelsMapper().CreateMap<GroupDealViewModel, GroupDeal>(model); var groupDealProduct = new ModelsMapper().CreateMap<GroupDealViewModel, Product>(model); groupDealProduct.DisplayOrder = 1; groupDealProduct.ProductType = ProductType.SimpleProduct; groupDealProduct.OrderMaximumQuantity = 10; groupDealProduct.OrderMinimumQuantity = 1; groupDealProduct.Published = true; // datetime fields groupDealProduct.CreatedOnUtc = DateTime.UtcNow; groupDealProduct.UpdatedOnUtc = DateTime.UtcNow; groupDealProduct.AvailableEndDateTimeUtc = DateTime.Parse("01/01/2016"); groupDealProduct.AvailableStartDateTimeUtc = DateTime.UtcNow; groupDealProduct.PreOrderAvailabilityStartDateTimeUtc = DateTime.UtcNow; groupDealProduct.SpecialPriceStartDateTimeUtc = DateTime.UtcNow; groupDealProduct.SpecialPriceEndDateTimeUtc = DateTime.Parse("01/01/2016"); //_groupdealService.InsertGroupDeal(groupDeal); _productService.InsertProduct(groupDealProduct); //search engine name model.SeName = groupDealProduct.ValidateSeName(model.SeName, groupDealProduct.Name, true); _urlRecordService.SaveSlug(groupDealProduct, model.SeName, 0); groupDealProduct.SetIsGroupDeal(true); _genericAttributeService.SaveAttribute(groupDealProduct, GroupDealAttributes.Active, true); _genericAttributeService.SaveAttribute(groupDealProduct, GroupDealAttributes.FinePrint, model.FinePrint); return RedirectToAction("Index", new { area = "Admin" }); } return View("CreateGroupdeal", model); }
public ActionResult Edit(GroupDealViewModel model, bool continueEditing) { var groupDeal = _productService.GetProductById(model.Id); if (groupDeal == null || groupDeal.Deleted) //No product found with the specified id return RedirectToAction("Index", new { area = "Admin" }); //a vendor should have access only to his products if (_workContext.CurrentVendor != null && groupDeal.VendorId != _workContext.CurrentVendor.Id) return RedirectToAction("Index", new { area = "Admin" }); if (ModelState.IsValid) { //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { model.VendorId = _workContext.CurrentVendor.Id; } //vendors cannot edit "Show on home page" property if (_workContext.CurrentVendor != null && model.ShowOnHomePage != groupDeal.ShowOnHomePage) { model.ShowOnHomePage = groupDeal.ShowOnHomePage; } var prevStockQuantity = groupDeal.GetTotalStockQuantity(); //groupdeal //groupdeal = model.ToEntity(groupdeal); model.CreatedOn = groupDeal.CreatedOnUtc; groupDeal = new ModelsMapper().CreateMap<GroupDealViewModel, Product>(model, groupDeal); groupDeal.UpdatedOnUtc = DateTime.UtcNow; _productService.UpdateProduct(groupDeal); //search engine name model.SeName = groupDeal.ValidateSeName(model.SeName, "groupdeal.Name", true); _urlRecordService.SaveSlug(groupDeal, model.SeName, 0); ////locales //UpdateLocales(groupdeal, model); ////tags //SaveProductTags(groupdeal, ParseProductTags(model.ProductTags)); ////warehouses //SaveProductWarehouseInventory(groupdeal, model); ////ACL (customer roles) //SaveProductAcl(groupdeal, model); ////Stores //SaveStoreMappings(groupdeal, model); ////picture seo names //UpdatePictureSeoNames(groupdeal); ////discounts //var allDiscounts = _discountService.GetAllDiscounts(DiscountType.AssignedToSkus, showHidden: true); //foreach (var discount in allDiscounts) //{ // if (model.SelectedDiscountIds != null && model.SelectedDiscountIds.Contains(discount.Id)) // { // //new discount // if (groupdeal.AppliedDiscounts.Count(d => d.Id == discount.Id) == 0) // groupdeal.AppliedDiscounts.Add(discount); // } // else // { // //remove discount // if (groupdeal.AppliedDiscounts.Count(d => d.Id == discount.Id) > 0) // groupdeal.AppliedDiscounts.Remove(discount); // } //} //_productService.UpdateProduct(groupdeal); //_productService.UpdateHasDiscountsApplied(groupdeal); ////back in stock notifications //if (groupdeal.ManageInventoryMethod == ManageInventoryMethod.ManageStock && // groupdeal.BackorderMode == BackorderMode.NoBackorders && // groupdeal.AllowBackInStockSubscriptions && // groupdeal.GetTotalStockQuantity() > 0 && // prevStockQuantity <= 0 && // groupdeal.Published && // !groupdeal.Deleted) //{ // _backInStockSubscriptionService.SendNotificationsToSubscribers(groupdeal); //} ////activity log //_customerActivityService.InsertActivity("EditProduct", _localizationService.GetResource("ActivityLog.EditProduct"), groupdeal.Name); //SuccessNotification(_localizationService.GetResource("Admin.Catalog.Products.Updated")); if (continueEditing) { //selected tab //SaveSelectedTabIndex(); return RedirectToAction("Edit", new { id = groupDeal.Id, area = "Admin" }); } return RedirectToAction("Index", new { area = "Admin" }); } //If we got this far, something failed, redisplay form //PrepareProductModel(model, groupdeal, false, true); //PrepareAclModel(model, groupdeal, true); //PrepareStoresMappingModel(model, groupdeal, true); return View("EditGroupDeal", model); }