Beispiel #1
0
        public virtual ActionResult Edit(DestinationModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageDestinations))
            {
                return(AccessDeniedView());
            }

            var destination = _destinationService.GetDestinationById(model.Id);

            if (destination == null || destination.Deleted)
            {
                //No destination found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                int prevPictureId = destination.PictureId;
                destination = model.ToEntity(destination);
                destination.UpdatedOnUtc = DateTime.UtcNow;
                _destinationService.UpdateDestination(destination);
                //search engine name
                model.SeName = destination.ValidateSeName(model.SeName, destination.Name, true);
                _urlRecordService.SaveSlug(destination, model.SeName, 0);
                //locales
                UpdateLocales(destination, model);
                //discounts
                var allDiscounts = _discountService.GetAllDiscounts(DiscountType.AssignedToDestinations, showHidden: true);
                foreach (var discount in allDiscounts)
                {
                    if (model.SelectedDiscountIds != null && model.SelectedDiscountIds.Contains(discount.Id))
                    {
                        //new discount
                        if (destination.AppliedDiscounts.Count(d => d.Id == discount.Id) == 0)
                        {
                            destination.AppliedDiscounts.Add(discount);
                        }
                    }
                    else
                    {
                        //remove discount
                        if (destination.AppliedDiscounts.Count(d => d.Id == discount.Id) > 0)
                        {
                            destination.AppliedDiscounts.Remove(discount);
                        }
                    }
                }
                _destinationService.UpdateDestination(destination);
                //delete an old picture (if deleted or updated)
                if (prevPictureId > 0 && prevPictureId != destination.PictureId)
                {
                    var prevPicture = _pictureService.GetPictureById(prevPictureId);
                    if (prevPicture != null)
                    {
                        _pictureService.DeletePicture(prevPicture);
                    }
                }
                //update picture seo file name
                UpdatePictureSeoNames(destination);
                //ACL
                SaveDestinationAcl(destination, model);
                //Stores
                SaveStoreMappings(destination, model);

                //activity log
                _customerActivityService.InsertActivity("EditDestination", _localizationService.GetResource("ActivityLog.EditDestination"), destination.Name);

                SuccessNotification(_localizationService.GetResource("Admin.Catalog.Destinations.Updated"));

                if (continueEditing)
                {
                    //selected tab
                    SaveSelectedTabName();

                    return(RedirectToAction("Edit", new { id = destination.Id }));
                }
                return(RedirectToAction("List"));
            }


            //If we got this far, something failed, redisplay form
            //templates
            PrepareTemplatesModel(model);
            //discounts
            PrepareDiscountModel(model, destination, true);
            //ACL
            PrepareAclModel(model, destination, true);
            //Stores
            PrepareStoresMappingModel(model, destination, true);

            return(View(model));
        }
Beispiel #2
0
        public virtual ActionResult Create(DestinationModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageDestinations))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var destination = model.ToEntity();
                destination.CreatedOnUtc = DateTime.UtcNow;
                destination.UpdatedOnUtc = DateTime.UtcNow;
                _destinationService.InsertDestination(destination);
                //search engine name
                model.SeName = destination.ValidateSeName(model.SeName, destination.Name, true);
                _urlRecordService.SaveSlug(destination, model.SeName, 0);
                //locales
                UpdateLocales(destination, model);
                //discounts
                var allDiscounts = _discountService.GetAllDiscounts(DiscountType.AssignedToDestinations, showHidden: true);
                foreach (var discount in allDiscounts)
                {
                    if (model.SelectedDiscountIds != null && model.SelectedDiscountIds.Contains(discount.Id))
                    {
                        destination.AppliedDiscounts.Add(discount);
                    }
                }
                _destinationService.UpdateDestination(destination);
                //update picture seo file name
                UpdatePictureSeoNames(destination);
                //ACL (customer roles)
                SaveDestinationAcl(destination, model);
                //Stores
                SaveStoreMappings(destination, model);

                //activity log
                _customerActivityService.InsertActivity("AddNewDestination", _localizationService.GetResource("ActivityLog.AddNewDestination"), destination.Name);

                SuccessNotification(_localizationService.GetResource("Admin.Catalog.Destinations.Added"));

                if (continueEditing)
                {
                    //selected tab
                    SaveSelectedTabName();

                    return(RedirectToAction("Edit", new { id = destination.Id }));
                }
                return(RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            //templates
            PrepareTemplatesModel(model);
            //discounts
            PrepareDiscountModel(model, null, true);
            //ACL
            PrepareAclModel(model, null, true);
            //Stores
            PrepareStoresMappingModel(model, null, true);

            return(View(model));
        }