Esempio n. 1
0
        public virtual ActionResult Destination(int destinationId, CatalogPagingFilteringModel command)
        {
            var destination = _destinationService.GetDestinationById(destinationId);

            if (destination == null || destination.Deleted)
            {
                return(InvokeHttp404());
            }

            var notAvailable =
                //published?
                !destination.Published ||
                //ACL (access control list)
                !_aclService.Authorize(destination) ||
                //Store mapping
                !_storeMappingService.Authorize(destination);

            //Check whether the current user has a "Manage categories" permission (usually a store owner)
            //We should allows him (her) to use "Preview" functionality
            if (notAvailable && !_permissionService.Authorize(StandardPermissionProvider.ManageDestinations))
            {
                return(InvokeHttp404());
            }

            //'Continue shopping' URL
            _genericAttributeService.SaveAttribute(_workContext.CurrentCustomer,
                                                   SystemCustomerAttributeNames.LastContinueShoppingPage,
                                                   _webHelper.GetThisPageUrl(false),
                                                   _storeContext.CurrentStore.Id);

            //display "edit" (manage) link
            if (_permissionService.Authorize(StandardPermissionProvider.AccessAdminPanel) && _permissionService.Authorize(StandardPermissionProvider.ManageDestinations))
            {
                DisplayEditLink(Url.Action("Edit", "Destination", new { id = destination.Id, area = "Admin" }));
            }

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

            //model
            var model = _catalogModelFactory.PrepareDestinationModel(destination, command);

            //template
            var templateViewPath = _catalogModelFactory.PrepareDestinationTemplateViewPath(destination.DestinationTemplateId);

            return(View(templateViewPath, model));
        }