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);
        }