Skip to content

Commit 5737232

Browse files
committed
(Providers) Work in progress
* Combined most discount rule plugins in a single plugin: SmartStore.DiscountRules * Moved both exchange rate provider to the core and deleted correponding plugin projects
1 parent a54ed57 commit 5737232

131 files changed

Lines changed: 2304 additions & 3531 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Libraries/SmartStore.Core/Plugins/Providers/ProviderMetadata.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,20 @@ public class ProviderMetadata
1919
public string SystemName { get; set; }
2020

2121
/// <summary>
22-
/// Gets or sets the resource root key for user data (e.g. DisplayOrder)
22+
/// Gets or sets the resource key pattern for user data (e.g. FriendlyName)
2323
/// </summary>
24-
public string ResourceRootKey { get; set; }
24+
/// <example>
25+
/// Plugins.{1}.{0} > 0 = provider system name, 1 = propertyname
26+
/// </example>
27+
public string ResourceKeyPattern { get; set; }
28+
29+
/// <summary>
30+
/// Gets or sets the setting key pattern for user data (e.g. DisplayOrder)
31+
/// </summary>
32+
/// <example>
33+
/// Plugins.{0}.{1} > 0 = provider system name, 1 = propertyname
34+
/// </example>
35+
public string SettingKeyPattern { get; set; }
2536

2637
/// <summary>
2738
/// Gets or sets the provider friendly name

src/Libraries/SmartStore.Data/Migrations/201406262150229_Providers.Designer.cs

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
namespace SmartStore.Data.Migrations
2+
{
3+
using System;
4+
using System.Data.Entity.Migrations;
5+
using SmartStore.Data.Setup;
6+
7+
public partial class Providers : DbMigration, ILocaleResourcesProvider, IDataSeeder<SmartObjectContext>
8+
{
9+
public override void Up()
10+
{
11+
}
12+
13+
public override void Down()
14+
{
15+
}
16+
17+
public bool RollbackOnFailure
18+
{
19+
get { return false; }
20+
}
21+
22+
public void Seed(SmartObjectContext context)
23+
{
24+
context.MigrateLocaleResources(MigrateLocaleResources);
25+
}
26+
27+
public void MigrateLocaleResources(LocaleResourcesBuilder builder)
28+
{
29+
builder.AddOrUpdate("Providers.FriendlyName.CurrencyExchange.ECB",
30+
"ECB exchange rate provider",
31+
"EZB-Wechselkursdienst");
32+
33+
builder.AddOrUpdate("Providers.CurrencyExchange.ECB.SetCurrencyToEURO",
34+
"You can use ECB (European central bank) exchange rate provider only when exchange rate currency code is set to EURO",
35+
"Der EZB-Wechselkursdienst kann nur genutzt werden, wenn der Wechselkurs-Währungscode auf EUR gesetzt ist.");
36+
37+
builder.AddOrUpdate("Providers.FriendlyName.CurrencyExchange.MoneyConverter",
38+
"Money converter exchange rate provider",
39+
"Money Converter Wechselkursdienst");
40+
}
41+
}
42+
}

src/Libraries/SmartStore.Data/Migrations/201406262150229_Providers.resx

Lines changed: 126 additions & 0 deletions
Large diffs are not rendered by default.

src/Libraries/SmartStore.Data/SmartStore.Data.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@
171171
<Compile Include="Migrations\201406122329031_ContentDeliveryNetwork.Designer.cs">
172172
<DependentUpon>201406122329031_ContentDeliveryNetwork.cs</DependentUpon>
173173
</Compile>
174+
<Compile Include="Migrations\201406262150229_Providers.cs" />
175+
<Compile Include="Migrations\201406262150229_Providers.Designer.cs">
176+
<DependentUpon>201406262150229_Providers.cs</DependentUpon>
177+
</Compile>
174178
<Compile Include="Setup\Builder\SettingsBuilder.cs" />
175179
<Compile Include="Setup\Builder\SettingsMigrator.cs" />
176180
<Compile Include="Setup\DbMigrationContext.cs" />
@@ -354,6 +358,9 @@
354358
<EmbeddedResource Include="Migrations\201406122329031_ContentDeliveryNetwork.resx">
355359
<DependentUpon>201406122329031_ContentDeliveryNetwork.cs</DependentUpon>
356360
</EmbeddedResource>
361+
<EmbeddedResource Include="Migrations\201406262150229_Providers.resx">
362+
<DependentUpon>201406262150229_Providers.cs</DependentUpon>
363+
</EmbeddedResource>
357364
<EmbeddedResource Include="Sql\Indexes.sql" />
358365
<EmbeddedResource Include="Sql\StoredProcedures.sql" />
359366
</ItemGroup>

src/Libraries/SmartStore.Services/Directory/CurrencyService.cs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public partial class CurrencyService : ICurrencyService
3232
private readonly CurrencySettings _currencySettings;
3333
private readonly IPluginFinder _pluginFinder;
3434
private readonly IEventPublisher _eventPublisher;
35+
private readonly IProviderManager _providerManager;
3536

3637
#endregion
3738

@@ -51,14 +52,16 @@ public CurrencyService(ICacheManager cacheManager,
5152
IStoreMappingService storeMappingService,
5253
CurrencySettings currencySettings,
5354
IPluginFinder pluginFinder,
54-
IEventPublisher eventPublisher)
55+
IEventPublisher eventPublisher,
56+
IProviderManager providerManager)
5557
{
5658
this._cacheManager = cacheManager;
5759
this._currencyRepository = currencyRepository;
5860
this._storeMappingService = storeMappingService;
5961
this._currencySettings = currencySettings;
6062
this._pluginFinder = pluginFinder;
6163
this._eventPublisher = eventPublisher;
64+
this._providerManager = providerManager;
6265
}
6366

6467
#endregion
@@ -73,7 +76,11 @@ public CurrencyService(ICacheManager cacheManager,
7376
public virtual IList<ExchangeRate> GetCurrencyLiveRates(string exchangeRateCurrencyCode)
7477
{
7578
var exchangeRateProvider = LoadActiveExchangeRateProvider();
76-
return exchangeRateProvider.GetCurrencyLiveRates(exchangeRateCurrencyCode);
79+
if (exchangeRateProvider != null)
80+
{
81+
return exchangeRateProvider.Value.GetCurrencyLiveRates(exchangeRateCurrencyCode);
82+
}
83+
return new List<ExchangeRate>();
7784
}
7885

7986
/// <summary>
@@ -295,38 +302,28 @@ public virtual decimal ConvertFromPrimaryStoreCurrency(decimal amount, Currency
295302
/// Load active exchange rate provider
296303
/// </summary>
297304
/// <returns>Active exchange rate provider</returns>
298-
public virtual IExchangeRateProvider LoadActiveExchangeRateProvider()
305+
public virtual Provider<IExchangeRateProvider> LoadActiveExchangeRateProvider()
299306
{
300-
var exchangeRateProvider = LoadExchangeRateProviderBySystemName(_currencySettings.ActiveExchangeRateProviderSystemName);
301-
if (exchangeRateProvider == null)
302-
exchangeRateProvider = LoadAllExchangeRateProviders().FirstOrDefault();
303-
return exchangeRateProvider;
307+
return LoadExchangeRateProviderBySystemName(_currencySettings.ActiveExchangeRateProviderSystemName) ?? LoadAllExchangeRateProviders().FirstOrDefault();
304308
}
305309

306310
/// <summary>
307311
/// Load exchange rate provider by system name
308312
/// </summary>
309313
/// <param name="systemName">System name</param>
310314
/// <returns>Found exchange rate provider</returns>
311-
public virtual IExchangeRateProvider LoadExchangeRateProviderBySystemName(string systemName)
315+
public virtual Provider<IExchangeRateProvider> LoadExchangeRateProviderBySystemName(string systemName)
312316
{
313-
var descriptor = _pluginFinder.GetPluginDescriptorBySystemName<IExchangeRateProvider>(systemName);
314-
if (descriptor != null)
315-
return descriptor.Instance<IExchangeRateProvider>();
316-
317-
return null;
317+
return _providerManager.GetProvider<IExchangeRateProvider>(systemName);
318318
}
319319

320320
/// <summary>
321321
/// Load all exchange rate providers
322322
/// </summary>
323323
/// <returns>Exchange rate providers</returns>
324-
public virtual IList<IExchangeRateProvider> LoadAllExchangeRateProviders()
324+
public virtual IEnumerable<Provider<IExchangeRateProvider>> LoadAllExchangeRateProviders()
325325
{
326-
var exchangeRateProviders = _pluginFinder.GetPlugins<IExchangeRateProvider>();
327-
return exchangeRateProviders
328-
.OrderBy(tp => tp.PluginDescriptor)
329-
.ToList();
326+
return _providerManager.GetAllProviders<IExchangeRateProvider>();
330327
}
331328
#endregion
332329
}

src/Plugins/ExchangeRate.EcbExchange/EcbExchangeRateProvider.cs renamed to src/Libraries/SmartStore.Services/Directory/EcbExchangeRateProvider.cs

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
using System.Globalization;
44
using System.Net;
55
using System.Xml;
6-
using SmartStore.Core;
76
using SmartStore.Core.Plugins;
8-
using SmartStore.Core.Domain.Localization;
9-
using SmartStore.Services.Directory;
107
using SmartStore.Services.Localization;
118

12-
namespace SmartStore.Plugin.ExchangeRate.EcbExchange
9+
namespace SmartStore.Services.Directory
1310
{
14-
public class EcbExchangeRateProvider : BasePlugin, IExchangeRateProvider
11+
[SystemName("CurrencyExchange.ECB")]
12+
[FriendlyName("ECB exchange rate provider")]
13+
[DisplayOrder(0)]
14+
public class EcbExchangeRateProvider : IExchangeRateProvider
1515
{
16-
private readonly ILocalizationService _localizationService;
16+
private readonly ILocalizationService _localizationService;
1717

1818
public EcbExchangeRateProvider(ILocalizationService localizationService)
1919
{
@@ -29,7 +29,7 @@ public EcbExchangeRateProvider(ILocalizationService localizationService)
2929
{
3030
if (String.IsNullOrEmpty(exchangeRateCurrencyCode) ||
3131
exchangeRateCurrencyCode.ToLower() != "eur")
32-
throw new SmartException(_localizationService.GetResource("Plugins.ExchangeRate.EcbExchange.SetCurrencyToEURO"));
32+
throw new SmartException(_localizationService.GetResource("Providers.ExchangeRate.EcbExchange.SetCurrencyToEURO"));
3333

3434
var exchangeRates = new List<SmartStore.Core.Domain.Directory.ExchangeRate>();
3535

@@ -62,19 +62,5 @@ public EcbExchangeRateProvider(ILocalizationService localizationService)
6262
return exchangeRates;
6363
}
6464

65-
public override void Install()
66-
{
67-
//locales
68-
_localizationService.ImportPluginResourcesFromXml(this.PluginDescriptor);
69-
base.Install();
70-
}
71-
72-
public override void Uninstall()
73-
{
74-
//locales
75-
_localizationService.DeleteLocaleStringResources(this.PluginDescriptor.ResourceRootKey);
76-
_localizationService.DeleteLocaleStringResources("Plugins.FriendlyName.CurrencyExchange.ECB", false);
77-
base.Uninstall();
78-
}
7965
}
8066
}

src/Libraries/SmartStore.Services/Directory/ICurrencyService.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections.Generic;
22
using SmartStore.Core.Domain.Directory;
3+
using SmartStore.Core.Plugins;
34

45
namespace SmartStore.Services.Directory
56
{
@@ -112,19 +113,19 @@ public partial interface ICurrencyService
112113
/// Load active exchange rate provider
113114
/// </summary>
114115
/// <returns>Active exchange rate provider</returns>
115-
IExchangeRateProvider LoadActiveExchangeRateProvider();
116+
Provider<IExchangeRateProvider> LoadActiveExchangeRateProvider();
116117

117118
/// <summary>
118119
/// Load exchange rate provider by system name
119120
/// </summary>
120121
/// <param name="systemName">System name</param>
121122
/// <returns>Found exchange rate provider</returns>
122-
IExchangeRateProvider LoadExchangeRateProviderBySystemName(string systemName);
123+
Provider<IExchangeRateProvider> LoadExchangeRateProviderBySystemName(string systemName);
123124

124125
/// <summary>
125126
/// Load all exchange rate providers
126127
/// </summary>
127128
/// <returns>Exchange rate providers</returns>
128-
IList<IExchangeRateProvider> LoadAllExchangeRateProviders();
129+
IEnumerable<Provider<IExchangeRateProvider>> LoadAllExchangeRateProviders();
129130
}
130131
}

src/Libraries/SmartStore.Services/Directory/IExchangeRateProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace SmartStore.Services.Directory
77
/// <summary>
88
/// Exchange rate provider interface
99
/// </summary>
10-
public partial interface IExchangeRateProvider : IPlugin
10+
public partial interface IExchangeRateProvider : IProvider
1111
{
1212
/// <summary>
1313
/// Gets currency live rates

0 commit comments

Comments
 (0)