private void DeliveryMethodSaveNamesAndDescriptions(DeliveryMethodCarrier newCarrier, DeliveryMethodCarrier delivery)
        {
            var displayNames = delivery.Translations.ToDictionary(x => x.LanguageID, x => x.DisplayName);

            foreach (var item in displayNames)
            {
                var translationCarrier = delivery.Translations.FirstOrDefault(x => x.LanguageID == item.Key);
                if (translationCarrier == null)
                {
                    translationCarrier = new DeliveryMethodTranslationCarrier(newCarrier.ID, item.Key, null, null);
                    newCarrier.Translations.Add(translationCarrier);
                }
                translationCarrier.DisplayName = item.Value;
                newCarrier.Translations.Add(translationCarrier);
            }
        }
        private void CreateDeliveryMethod(DeliveryMethodCarrier delivery, StructureInfo structureInfo)
        {
            var delMethod = ModuleECommerce.Instance.DeliveryMethods.Get(delivery.ID, _securityToken);

            if (delMethod == null)
            {
                var carrier = new DeliveryMethodCarrier();
                carrier.Name = delivery.Name;
                carrier.DeliveryProviderID = delivery.DeliveryProviderID;
                carrier.ImageID            = Guid.Empty;
                carrier.ID = delivery.ID;
                DeliveryMethodSaveNamesAndDescriptions(carrier, delivery);
                carrier.Costs        = UpdateDeliveryCurrency(delivery.Costs, structureInfo);
                carrier.Translations = UpdateLanguageId(delivery.Translations, structureInfo);
                ModuleECommerce.Instance.DeliveryMethods.Create(carrier, _securityToken);
            }
        }
        public void GetDisplayNameBasedOnChannelsLanguage()
        {
            var methodId = Guid.NewGuid();

            using (Solution.Instance.SystemToken.Use())
            {
                var language = IoC.Resolve <LanguageService>().Get("en-US");

                var method = ModuleECommerce.Instance.DeliveryMethods.Get("Standard", Solution.Instance.SystemToken)?.GetAsCarrier();
                if (method == null)
                {
                    method      = new DeliveryMethodCarrier();
                    method.ID   = methodId;
                    method.Name = "Standard";
                    method.Translations.Add(new DeliveryMethodTranslationCarrier
                    {
                        LanguageID  = language.SystemId,
                        DisplayName = "DisplayName"
                    });

                    ModuleECommerce.Instance.DeliveryMethods.Create(method, Solution.Instance.SystemToken);
                }

                var channelFieldTemplate = IoC.Resolve <FieldTemplateService>().Get <ChannelFieldTemplate>("Default");
                if (channelFieldTemplate == null)
                {
                    channelFieldTemplate = new ChannelFieldTemplate("Default");
                    IoC.Resolve <FieldTemplateService>().Create(channelFieldTemplate);
                }

                var channel = IoC.Resolve <ChannelService>().Get("Default");
                if (channel == null)
                {
                    channel    = new Channel(channelFieldTemplate.SystemId);
                    channel.Id = "Default";
                    channel.WebsiteLanguageSystemId = language.SystemId;
                    IoC.Resolve <ChannelService>().Create(channel);
                }

                var sut    = IoC.Resolve <IDeliveryMethodService>();
                var result = sut.GetPaymentInfoDescription(methodId, channel.SystemId);

                Assert.Equal("DisplayName", result);
            }
        }