, .
(, #, ) ( .) , LocalViewModel, .
LocaleConfigController , , LocaleConfigViewModel, , .
, , , LocaleConfigViewModel. LocaleConfigViewModel ILocaleConfigService ISystemConfigService. , ( ).
, locale - , - , , . , , - , .
, ( .) , , , , , .
, : , - - , LocaleConfigViewModel .
, LocaleConfigViewModel ( ISystemConfigService), .
class LocaleViewModel
{
public int Id;
public string Language;
public string Region;
public bool Enabled;
public bool Deleted;
}
class LocaleConfigViewModel
{
public bool UseVisitorBrowserLocale;
public LocaleViewModel DefaultLocale;
public List<LocaleViewModel> Locales;
}
class LocaleConfigController : ILocaleConfigController
{
ILocaleConfigService localeConfig;
ISystemConfigService systemConfig;
public void Save(LocaleConfigViewModel model)
{
foreach (var locale in model.Locales)
{
if (locale.Deleted)
{
localeConfig.DeleteLocale(locale);
continue;
}
localeConfig.UpdateLocale(locale);
}
systemConfig.DefaultLocaleId = model.DefaultLocale.Id;
systemConfig.UseVisitorBrowserLocale = model.UseVisitorBrowserLocale;
}
public LocaleConfigViewModel GetCurrentView()
{
var model = new LocaleConfigViewModel();
model.Locales = localeConfig.Locales;
model.DefaultLocale = model.Locales.FirstOrDefault(l => l.Id == systemConfig.DefaultLocaleId);
model.UseVisitorBrowserLocale = systemConfig.UseVisitorBrowserLocale;
return model;
}
}
interface ILocaleConfigController
{
void Save(LocaleConfigViewModel model);
LocaleConfigViewModel GetCurrentView();
}
interface ILocaleConfigService
{
void DeleteLocale(LocaleViewModel locale);
void UpdateLocale(LocaleViewModel locale);
List<LocaleViewModel> Locales { get; }
}
interface ISystemConfigService
{
int DefaultLocaleId { get; set; }
bool UseVisitorBrowserLocale { get; set; }
}