Exemple #1
0
        /// <summary>
        /// Get the tracker of the shipment
        /// </summary>
        /// <param name="shipment">Shipment</param>
        /// <returns>Shipment tracker</returns>
        public virtual async Task <IShipmentTracker> GetShipmentTrackerAsync(Shipment shipment)
        {
            var order = await _orderRepository.GetByIdAsync(shipment.OrderId, cache => default);

            if (!order.PickupInStore)
            {
                var shippingRateComputationMethod = await _shippingPluginManager
                                                    .LoadPluginBySystemNameAsync(order.ShippingRateComputationMethodSystemName);

                return(shippingRateComputationMethod?.ShipmentTracker);
            }

            var pickupPointProvider = await _pickupPluginManager
                                      .LoadPluginBySystemNameAsync(order.ShippingRateComputationMethodSystemName);

            return(pickupPointProvider?.ShipmentTracker);
        }
        public virtual async Task <IActionResult> PickupPointProviderUpdate(PickupPointProviderModel model)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            var pickupPointProvider = await _pickupPluginManager.LoadPluginBySystemNameAsync(model.SystemName);

            if (_pickupPluginManager.IsPluginActive(pickupPointProvider))
            {
                if (!model.IsActive)
                {
                    //mark as disabled
                    _shippingSettings.ActivePickupPointProviderSystemNames.Remove(pickupPointProvider.PluginDescriptor.SystemName);
                    await _settingService.SaveSettingAsync(_shippingSettings);
                }
            }
            else
            {
                if (model.IsActive)
                {
                    //mark as active
                    _shippingSettings.ActivePickupPointProviderSystemNames.Add(pickupPointProvider.PluginDescriptor.SystemName);
                    await _settingService.SaveSettingAsync(_shippingSettings);
                }
            }

            var pluginDescriptor = pickupPointProvider.PluginDescriptor;

            pluginDescriptor.DisplayOrder = model.DisplayOrder;

            //update the description file
            pluginDescriptor.Save();

            //raise event
            await _eventPublisher.PublishAsync(new PluginUpdatedEvent(pluginDescriptor));

            return(new NullJsonResult());
        }