Skip to content

Commit a4e6ec8

Browse files
committed
Merge
2 parents 08c08b3 + 94b90d4 commit a4e6ec8

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/FunnelWeb.Web/Application/Extensions/MarkupExtensions.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using System.Web.Mvc;
1414
using System.Web.Mvc.Html;
1515
using System.Web.Routing;
16+
using FunnelWeb.DatabaseDeployer;
1617
using FunnelWeb.Model;
1718
using FunnelWeb.Mvc;
1819
using FunnelWeb.Settings;
@@ -228,7 +229,13 @@ public static IHtmlString HintFor<TModel>(this HtmlHelper<TModel> helper, Expres
228229

229230
public static FunnelWebSettings Settings(this HtmlHelper helper)
230231
{
231-
return DependencyResolver.Current.GetService<ISettingsProvider>().GetSettings<FunnelWebSettings>();
232+
var settingsProvider = DependencyResolver.Current.GetService<ISettingsProvider>();
233+
234+
// A database upgrade is required, lets just use the default settings
235+
if (DependencyResolver.Current.GetService<IDatabaseUpgradeDetector>().UpdateNeeded())
236+
return settingsProvider.GetDefaultSettings<FunnelWebSettings>();
237+
238+
return settingsProvider.GetSettings<FunnelWebSettings>();
232239
}
233240

234241
#endregion

src/FunnelWeb/Settings/ISettingsProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace FunnelWeb.Settings
33
public interface ISettingsProvider
44
{
55
T GetSettings<T>() where T : ISettings;
6+
T GetDefaultSettings<T>() where T : ISettings;
67
void SaveSettings<T>(T settings) where T : ISettings;
78
}
89
}

src/FunnelWeb/Settings/SettingsProvider.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@ public T GetSettings<T>() where T : ISettings
3636
return (T)settingsStore[settingsType];
3737
}
3838

39+
public T GetDefaultSettings<T>() where T : ISettings
40+
{
41+
var settings = Activator.CreateInstance<T>();
42+
settingsStore.Add(typeof(T), settings);
43+
var settingMetadata = ReadSettingMetadata<T>();
44+
45+
foreach (var setting in settingMetadata)
46+
{
47+
// Initialize with default values
48+
setting.Write(settings, setting.DefaultValue);
49+
}
50+
51+
return settings;
52+
}
53+
3954
private void LoadSettings<T>() where T : ISettings
4055
{
4156
var settings = Activator.CreateInstance<T>();

0 commit comments

Comments
 (0)