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