예제 #1
0
 /// <summary>
 /// Handle product details model prepared event
 /// </summary>
 /// <param name="eventMessage">Event message</param>
 public void HandleEvent(ModelPreparedEvent <BaseNopModel> eventMessage)
 {
     if (eventMessage?.Model is ProductDetailsModel productDetailsModel)
     {
         _facebookPixelService.PrepareViewContentScript(productDetailsModel);
     }
 }
예제 #2
0
 /// <summary>
 /// Handle product details model prepared event
 /// </summary>
 /// <param name="eventMessage">Event message</param>
 public async Task HandleEventAsync(ModelPreparedEvent <BaseNopModel> eventMessage)
 {
     if (eventMessage?.Model is ProductDetailsModel productDetailsModel)
     {
         await _facebookPixelService.PrepareViewContentScriptAsync(productDetailsModel);
     }
 }
예제 #3
0
 public void HandleEvent(ModelPreparedEvent <BaseNopModel> eventMessage)
 {
     if (eventMessage.Model is ProductModel)
     {
         _newProductsService.UpdateProductModel((ProductModel)eventMessage.Model);
     }
 }
예제 #4
0
        /// <summary>
        /// Handle model prepared event
        /// </summary>
        /// <param name="eventMessage">Event message</param>
        /// <returns>A task that represents the asynchronous operation</returns>
        public async Task HandleEventAsync(ModelPreparedEvent <BaseNopModel> eventMessage)
        {
            var customerModel   = eventMessage.Model as CustomerInfoModel;
            var navigationModel = eventMessage.Model as CustomerNavigationModel;

            if (customerModel is null && navigationModel is null)
            {
                return;
            }

            //ensure that Avalara tax provider is active for the passed customer, since it's the event from the public area
            var customer = await _workContext.GetCurrentCustomerAsync();

            if (!await _taxPluginManager.IsPluginActiveAsync(AvalaraTaxDefaults.SystemName, customer))
            {
                return;
            }

            if (!_avalaraTaxSettings.EnableCertificates)
            {
                return;
            }

            if (navigationModel is not null)
            {
                //ACL
                if (_avalaraTaxSettings.CustomerRoleIds.Any())
                {
                    var customerRoleIds = await _customerService.GetCustomerRoleIdsAsync(customer);

                    if (!customerRoleIds.Intersect(_avalaraTaxSettings.CustomerRoleIds).Any())
                    {
                        return;
                    }
                }

                var infoItem = navigationModel.CustomerNavigationItems.FirstOrDefault(item => item.Tab == CustomerNavigationEnum.Info);
                var position = navigationModel.CustomerNavigationItems.IndexOf(infoItem) + 1;
                navigationModel.CustomerNavigationItems.Insert(position, new CustomerNavigationItemModel
                {
                    RouteName = AvalaraTaxDefaults.ExemptionCertificatesRouteName,
                    ItemClass = AvalaraTaxDefaults.ExemptionCertificatesMenuClassName,

                    //since we can neither extend enum nor use the default value (e.g. null or 0), we set the least used element
                    //Tab = AvalaraTaxDefaults.ExemptionCertificatesMenuTab,
                    Tab   = CustomerNavigationEnum.ForumSubscriptions,
                    Title = await _localizationService.GetResourceAsync("Plugins.Tax.Avalara.ExemptionCertificates")
                });
            }

            if (customerModel is not null && !_avalaraTaxSettings.AllowEditCustomer)
            {
                await _avalaraTaxManager.CreateOrUpdateCustomerAsync(customer);
            }
        }