504 lines
25 KiB
C#
504 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text.RegularExpressions;
|
|
using System.Web.Mvc;
|
|
using System.Xml.Linq;
|
|
using Kreta.BusinessLogic.Caching;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.FeatureToggle;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.DataAccessManual.Util;
|
|
using Kreta.Enums;
|
|
using Kreta.Framework;
|
|
using Kreta.Framework.Util;
|
|
using Kreta.KretaServer.SystemSettings;
|
|
using Kreta.KretaServer.SystemSettings.SettingsTypes;
|
|
using Kreta.Resources;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Kreta.BusinessLogic.Helpers.SystemSettings
|
|
{
|
|
public class SystemSettingsHelper : LogicBase
|
|
{
|
|
public SystemSettingsHelper(IConnectionType connectionType) : base(connectionType) { }
|
|
|
|
public SortedList<int, SystemSettingGroup> GetSystemSettings(bool isVegyes, List<OktNevelesiKategoriaEnum> feladatKategoriak, bool isSzirIntezmeny)
|
|
{
|
|
var letiltottakListaja = new List<RendszerBeallitasTipusEnum>
|
|
{
|
|
RendszerBeallitasTipusEnum.A_felhasznalok_nem_valtoztathatjak_meg_a_jelszavukat_az_elektronikus_ellenorzoben,
|
|
RendszerBeallitasTipusEnum.A_tanulok_ertekeleseinel_az_ertekelesek_sulyszamainak_megjelenitese,
|
|
RendszerBeallitasTipusEnum.A_haladasi_naplo_csak_az_alabbiak_szerint_toltheto_ki_utolag_naplozni_,
|
|
RendszerBeallitasTipusEnum.A_haladasi_naploba_orankent_csak_egy_tanora_rogzitheto,
|
|
RendszerBeallitasTipusEnum.Szakszeru_helyettesites_eseten_az_elszamolt_oraszam,
|
|
RendszerBeallitasTipusEnum.Nem_szakszeru_felugyelet_helyettesites_eseten_az_elszamolt_oraszam,
|
|
RendszerBeallitasTipusEnum.Oraosszevonasos_helyettesites_eseten_az_elszamolt_oraszam,
|
|
RendszerBeallitasTipusEnum.Lehet_e_helyettesites_tulora,
|
|
RendszerBeallitasTipusEnum.Osztalyfonok_szamara_tiltott_a_mulasztasi_adatok_modositasa,
|
|
RendszerBeallitasTipusEnum.Ertesites_Tanev_rendi_valtoztatasrol_esetek,
|
|
RendszerBeallitasTipusEnum.Ertesites_Tanev_rendi_valtoztatasrol_idopont,
|
|
RendszerBeallitasTipusEnum.Erdemjegy_beiras_ertesites_kesleltetese,
|
|
RendszerBeallitasTipusEnum.Ertesites_hianyzo_orabeirasrol_kesleltetese,
|
|
RendszerBeallitasTipusEnum.Ertesites_bukasra_allo_tanulokrol,
|
|
RendszerBeallitasTipusEnum.Ertesites_bukasra_allo_vegzos_tanulokrol,
|
|
RendszerBeallitasTipusEnum.Ertesites_nyilt_naprol,
|
|
RendszerBeallitasTipusEnum.Ertesites_oralatogatasrol,
|
|
RendszerBeallitasTipusEnum.Adminisztrator_ertesitese_orarendi_tanulo_utkozesrol,
|
|
RendszerBeallitasTipusEnum.Osztalyfonok_ertekeles_osszes_targybol,
|
|
RendszerBeallitasTipusEnum.Ertekeles_datumanak_minimuma,
|
|
};
|
|
|
|
var szirIntezmenyLetiltottGroupNevek = new List<string>
|
|
{
|
|
StringResourcesUtil.GetString(5307), // Hozzáférés generálás beállítások
|
|
StringResourcesUtil.GetString(3404), // Az elektronikus napló korlátozásainak beállításai
|
|
StringResourcesUtil.GetString(3405), // Tanulói adatok kezelése
|
|
StringResourcesUtil.GetString(3406), // Értékelések és feljegyzések beállításai
|
|
StringResourcesUtil.GetString(3407) // Mulasztások, igazolások beállításai
|
|
};
|
|
|
|
var csoportvezetoAdatModositas = SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Csoportvezeto_Tanulo_Adat_Modositas, IntezmenyAzonosito, TanevId);
|
|
if (!csoportvezetoAdatModositas)
|
|
{
|
|
letiltottakListaja.Add(RendszerBeallitasTipusEnum.Csoportvezeto_Tanora_Celu_Csoportok);
|
|
}
|
|
|
|
if (isSzirIntezmeny)
|
|
{
|
|
letiltottakListaja.Add(RendszerBeallitasTipusEnum.Csokkentett_gondviselok_kezelese);
|
|
}
|
|
|
|
var settingsInfo = SystemSettingsManager.GetSystemSettings(IntezmenyAzonosito, TanevId);
|
|
SortedList<int, SystemSettingGroup> settings = GetSystemSettingsTemplate();
|
|
|
|
if (!isVegyes)
|
|
{
|
|
var item = settingsInfo.FirstOrDefault(x => x.BeallitasTipus == RendszerBeallitasTipusEnum.Default_Feladat_Kategoria);
|
|
settingsInfo.Remove(item);
|
|
}
|
|
|
|
foreach (var group in settings.Values)
|
|
{
|
|
if (isSzirIntezmeny && szirIntezmenyLetiltottGroupNevek.Contains(group.Title))
|
|
{
|
|
group.Enabled = false;
|
|
}
|
|
|
|
foreach (var setting in group.Childs.Values)
|
|
{
|
|
var settingData = settingsInfo.FirstOrDefault(s => s.BeallitasTipus == setting.SettingType);
|
|
|
|
if (settingData == null)
|
|
continue;
|
|
|
|
setting.ControlType = settingData.Type;
|
|
|
|
if (setting.SettingType == RendszerBeallitasTipusEnum.Default_Feladat_Kategoria)
|
|
{
|
|
setting.Control = GetEllatottFeladatok(feladatKategoriak);
|
|
}
|
|
else if (setting.SettingType == RendszerBeallitasTipusEnum.lezart_osztalynaplok)
|
|
{
|
|
setting.Control = GetOsztalyok();
|
|
}
|
|
else
|
|
{
|
|
setting.Control = DeserializeControlObject(settingData.Json, setting.ControlType);
|
|
}
|
|
|
|
if (letiltottakListaja.Contains(setting.SettingType) || settingData.IsDisabled)
|
|
{
|
|
setting.Disabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return settings;
|
|
}
|
|
|
|
private SettingsDropDownList GetEllatottFeladatok(List<OktNevelesiKategoriaEnum> feladatKategoriak)
|
|
{
|
|
var list = new List<SelectListItem>();
|
|
|
|
var systemSettingsValue = GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Default_Feladat_Kategoria);
|
|
var itemList = feladatKategoriak;
|
|
|
|
foreach (var item in itemList)
|
|
{
|
|
var sl = new SelectListItem()
|
|
{
|
|
Value = item.AsInt().ToString(),
|
|
Text = item.GetDisplayName(TanevId),
|
|
Selected = systemSettingsValue == item.AsInt()
|
|
};
|
|
list.Add(sl);
|
|
}
|
|
|
|
var mindenItem = new SelectListItem()
|
|
{
|
|
Value = "0",
|
|
Text = CommonResource.Minden,
|
|
Selected = systemSettingsValue == 0
|
|
};
|
|
|
|
list.Add(mindenItem);
|
|
|
|
return new SettingsDropDownList() { Options = list, Id = RendszerBeallitasTipusEnum.Default_Feladat_Kategoria.ToString() };
|
|
}
|
|
|
|
private SettingsMultiSelect GetOsztalyok()
|
|
{
|
|
var options = new List<SelectListItem>();
|
|
|
|
var systemSettingsValue = GetSystemSettingValue<List<string>>(RendszerBeallitasTipusEnum.lezart_osztalynaplok);
|
|
|
|
var numberOrderRegex = new Regex(Constants.RegularExpressions.AkarhanySzammalKezdodo);
|
|
|
|
var osztalyok = new OsztalyHelper(ConnectionType).GetOsztalyCoList().OrderBy(x =>
|
|
{
|
|
var m = numberOrderRegex.Match(string.Join("", x.Nev.Take(9)));
|
|
return m.Value != "" ? int.Parse(m.Value) : int.MaxValue;
|
|
}).ThenBy(x => x.Nev).ToList();
|
|
|
|
foreach (var osztaly in osztalyok)
|
|
{
|
|
var sli = new SelectListItem
|
|
{
|
|
Text = osztaly.Nev,
|
|
Value = osztaly.Id.ToString(),
|
|
Selected = systemSettingsValue.Contains(osztaly.Id.ToString()),
|
|
};
|
|
options.Add(sli);
|
|
}
|
|
|
|
return new SettingsMultiSelect() { Id = RendszerBeallitasTipusEnum.lezart_osztalynaplok.ToString(), Options = options };
|
|
}
|
|
|
|
private object DeserializeControlObject(string json, SystemSettingsControlTypeEnum controlType)
|
|
{
|
|
Type typeinfo = null;
|
|
switch (controlType)
|
|
{
|
|
case SystemSettingsControlTypeEnum.CheckBox:
|
|
typeinfo = typeof(SettingsCheckBox);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.CheckBoxGroup:
|
|
typeinfo = typeof(SettingsCheckBoxGroup);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.DatePicker:
|
|
typeinfo = typeof(SettingsDatePicker);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.TimePicker:
|
|
typeinfo = typeof(SettingsTimePicker);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.NumericTextBox:
|
|
typeinfo = typeof(SettingsNumericTextBox);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.DropDownList:
|
|
typeinfo = typeof(SettingsDropDownList);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.RadioButtonGroup:
|
|
typeinfo = typeof(SettingsRadioButtonGroup);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.TrueFalse:
|
|
typeinfo = typeof(SettingsSwitchButton);
|
|
break;
|
|
case SystemSettingsControlTypeEnum.MultiSelect:
|
|
typeinfo = typeof(SettingsMultiSelect);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var settings = new JsonSerializerSettings() { Culture = new CultureInfo(Constants.General.HungarianCulture) { NumberFormat = { NumberDecimalSeparator = Constants.General.NumberDecimalSeparator } } };
|
|
settings.Converters.Add(new SystemSettingDateConverter());
|
|
var ret = JsonConvert.DeserializeObject(json, typeinfo, settings);
|
|
if (controlType == SystemSettingsControlTypeEnum.DatePicker)
|
|
{
|
|
var (kezdoNap, utolsoNap) = GetTanevElsoEsUtolsoNapja();
|
|
((SettingsDatePicker)ret).Min = kezdoNap;
|
|
((SettingsDatePicker)ret).Max = utolsoNap;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
private SortedList<int, SystemSettingGroup> GetSystemSettingsTemplate()
|
|
{
|
|
var SystemSettingsTemplatePath = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "SystemSettingsTemplate.xml", SearchOption.AllDirectories);
|
|
if (SystemSettingsTemplatePath.Length == 0)
|
|
throw new Exception("SystemSettingsTemplate.xml file is missing!");
|
|
|
|
XDocument settingsXml = XDocument.Load(SystemSettingsTemplatePath[0]);
|
|
var settings = new SortedList<int, SystemSettingGroup>();
|
|
|
|
foreach (var groupNode in settingsXml.Root.Descendants("Csoport"))
|
|
{
|
|
var group = new SystemSettingGroup
|
|
{
|
|
Order = (int)groupNode.Attribute("Order"),
|
|
Title = StringResourcesUtil.GetString(SDAConvert.ToInt32(groupNode.Attribute("CsoportId").Value))
|
|
};
|
|
|
|
foreach (var settingNode in groupNode.Descendants("Beallitas"))
|
|
{
|
|
var order = SDAConvert.ToInt32(settingNode.Attribute("Order").Value);
|
|
group.Childs.Add(order, new SystemSettingControlInfo
|
|
{
|
|
Order = order,
|
|
SettingType = settingNode.Attribute("RendszerBeallitasTipus").Value.EnumParse<RendszerBeallitasTipusEnum>(),
|
|
Title = StringResourcesUtil.GetString(SDAConvert.ToInt32(settingNode.Attribute("CimkeId").Value)),
|
|
Description = StringResourcesUtil.GetString(SDAConvert.ToInt32(settingNode.Attribute("LeirasId").Value))
|
|
});
|
|
}
|
|
|
|
settings.Add(group.Order, group);
|
|
}
|
|
|
|
return settings;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Visszaadja a rendszer beállítás Control objectett.
|
|
/// </summary>
|
|
/// <typeparam name="T">SystemSettingControlType</typeparam>
|
|
/// <param name="beallitasTipus"></param>
|
|
/// <returns></returns>
|
|
private string GetSystemSettingControlObjectJson(RendszerBeallitasTipusEnum beallitasTipus)
|
|
{
|
|
var setting = SystemSettingsManager.GetSystemSetting(beallitasTipus, IntezmenyAzonosito, TanevId);
|
|
return setting.Json;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Visszaadja az adotr rendszerbeállítás értékét.
|
|
/// </summary>
|
|
/// <typeparam name="T">Enum, String, int, bool, List<int>, List<string> List<Enum></typeparam>
|
|
/// <param name="beallitasTipus"></param>
|
|
/// <returns>
|
|
/// Az adott beállítás értéke a megadott típusba vagy a megadott tipus alap értéke ha nincs érték PL: CheckBoxGroup.
|
|
/// </returns>
|
|
public T GetSystemSettingValue<T>(RendszerBeallitasTipusEnum beallitasTipus)
|
|
{
|
|
return SystemSettingsManager.GetSystemSettingValue<T>(beallitasTipus, IntezmenyAzonosito, TanevId);
|
|
}
|
|
|
|
public bool ResetSystemSettings(List<int> exceptSystemSettings)
|
|
{
|
|
return SystemSettingsManager.ResetSystemSettings(IntezmenyAzonosito, IntezmenyId, TanevId, exceptSystemSettings);
|
|
}
|
|
|
|
public void SetSystemSettings(Dictionary<RendszerBeallitasTipusEnum, dynamic> newSettings, int? kovTanevId)
|
|
{
|
|
Dal.CustomConnection.Run(ConnectionType, h =>
|
|
{
|
|
var oraSorszamozasValtozas = false;
|
|
|
|
UpdateOsszefuggoSzakGyakosOrakErvenyessegiIdo(h, newSettings);
|
|
|
|
var settings = SystemSettingsManager.GetSystemSettings(IntezmenyAzonosito, TanevId).Where(x => !x.IsDisabled);
|
|
foreach (var item in settings)
|
|
{
|
|
if (item != null && newSettings.ContainsKey(item.BeallitasTipus))
|
|
{
|
|
if (item.BeallitasTipus == RendszerBeallitasTipusEnum.lezart_osztalynaplok)
|
|
{
|
|
var settingsOsztalyIdList = (List<string>)newSettings[item.BeallitasTipus].ToObject<List<string>>();
|
|
item.Json = JsonConvert.SerializeObject(GetOsztalyok());
|
|
}
|
|
|
|
if (item.BeallitasTipus == RendszerBeallitasTipusEnum.Ertekelesek_megjelenese_az_ellenorzo_modulban)
|
|
{
|
|
TantargyiAtlagCache tantargyiAtlagCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile<TantargyiAtlagCache>();
|
|
var cacheEnabledAndNotNull = DependencyResolver.Current.GetService<IFeatureContext>().IsEnabled(Constants.FeatureName.MobileEllenorzoApiCache) && tantargyiAtlagCache != null;
|
|
if (cacheEnabledAndNotNull)
|
|
{
|
|
tantargyiAtlagCache.ClearTantargyiAtlagRegion(IntezmenyAzonosito);
|
|
}
|
|
}
|
|
|
|
SystemSettingsManager.SetSystemSettings(item.BeallitasTipus, IntezmenyAzonosito, TanevId, CreateNewSettingsControlObject(item.Type, newSettings[item.BeallitasTipus], item.Json), kovTanevId);
|
|
|
|
if (item.BeallitasTipus == RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere)
|
|
{
|
|
var oldVal = GetSystemSettingControlObjectJson(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
|
|
if (!string.Equals(oldVal, item.Json, StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
var adatszotarDal = h.AdatszotarDAL();
|
|
adatszotarDal.GenerateNaptariNapok(IntezmenyId, TanevId);
|
|
|
|
if (kovTanevId.IsEntityId())
|
|
{
|
|
if (h.TanevDal().Get(kovTanevId.Value).IsKivalaszthato)
|
|
{
|
|
adatszotarDal.GenerateNaptariNapok(IntezmenyId, kovTanevId.Value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!oraSorszamozasValtozas && (item.BeallitasTipus == RendszerBeallitasTipusEnum.TanitasiOra_sorszamozas_mod || item.BeallitasTipus == RendszerBeallitasTipusEnum.tanitasiOra_sorszamozas_csoportbontas))
|
|
{
|
|
var oldVal = GetSystemSettingControlObjectJson(item.BeallitasTipus);
|
|
|
|
if (!string.Equals(oldVal, item.Json, StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
oraSorszamozasValtozas = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (oraSorszamozasValtozas)
|
|
{
|
|
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).UpdateTanitasiOraEvesSorszamTeljesTanev();
|
|
}
|
|
});
|
|
}
|
|
|
|
public (DateTime kezdoNap, DateTime utolsoNap) GetTanevElsoEsUtolsoNapja()
|
|
{
|
|
var tanevHelper = new TanevHelper(ConnectionType);
|
|
var tanev = tanevHelper.GetTanevInfo();
|
|
return (kezdoNap: tanev.KezdoNap, utolsoNap: tanev.UtolsoNap);
|
|
}
|
|
|
|
public DateTime GetIgazolasokNaplozarasDatuma()
|
|
{
|
|
var naplozaras = new OrarendHelper(ConnectionType).GetNaplozarasDate(startDate: null);
|
|
var igazolasNaplozarasNapokSzama = GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.igazolasok_naplozarasa);
|
|
return naplozaras.AddDays(-igazolasNaplozarasNapokSzama);
|
|
}
|
|
|
|
private void UpdateOsszefuggoSzakGyakosOrakErvenyessegiIdo(IDalHandler h, Dictionary<RendszerBeallitasTipusEnum, dynamic> newSettings)
|
|
{
|
|
var szakGyakKezdoDatum = GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
|
|
var szakGyakVegDatum = GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
|
|
|
|
DateTime? newSzakGyakKezdoDatum = SDAConvert.ToDateTime(newSettings.SingleOrDefault(x => x.Key == RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum).Value);
|
|
DateTime? newSzakGyakVegDatum = SDAConvert.ToDateTime(newSettings.SingleOrDefault(x => x.Key == RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum).Value);
|
|
|
|
if (newSzakGyakVegDatum.HasValue && newSzakGyakKezdoDatum.HasValue && (szakGyakKezdoDatum != newSzakGyakKezdoDatum || szakGyakVegDatum != newSzakGyakVegDatum))
|
|
{
|
|
UpdateNaptariNapok(h, newSzakGyakKezdoDatum.Value, newSzakGyakVegDatum.Value);
|
|
var helper = new OrarendiOraHelper(new DalHandlerConnectionType(ConnectionType, h));
|
|
|
|
if (szakGyakKezdoDatum != newSzakGyakKezdoDatum)
|
|
{
|
|
helper.UpdateOsszefuggoSzakGyakosOrakErvenyessegKezdete(newSzakGyakKezdoDatum.Value);
|
|
}
|
|
|
|
if (szakGyakVegDatum != newSzakGyakVegDatum)
|
|
{
|
|
helper.UpdateOsszefuggoSzakGyakosOrakErvenyessegVege(newSzakGyakVegDatum.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateNaptariNapok(IDalHandler h, DateTime newSzakGyakKezdoDatum, DateTime newSzakGyakVegDatum)
|
|
{
|
|
h.NaptariNap().UpdateNaptariNapokForOsszefuggoSzakGyak(newSzakGyakKezdoDatum, newSzakGyakVegDatum, TanevId);
|
|
}
|
|
|
|
private object CreateNewSettingsControlObject(SystemSettingsControlTypeEnum type, dynamic newValue, string settingObject)
|
|
{
|
|
if (newValue == null || (newValue.GetType() == typeof(string) && string.IsNullOrWhiteSpace(newValue)))
|
|
{
|
|
throw new ArgumentNullException("System setting new value is null");
|
|
}
|
|
switch (type)
|
|
{
|
|
case SystemSettingsControlTypeEnum.CheckBox:
|
|
throw new NotImplementedException();
|
|
case SystemSettingsControlTypeEnum.CheckBoxGroup:
|
|
var checkBoxGroup = JsonConvert.DeserializeObject<SettingsCheckBoxGroup>(settingObject);
|
|
checkBoxGroup.Options.ForEach(x => x.Selected = false);
|
|
|
|
var values = newValue.ToObject<List<string>>(); // a newValue egy Newtonsoft.Json.Linq.JArray
|
|
foreach (var item in checkBoxGroup.Options)
|
|
{
|
|
if (values.Contains(item.Value))
|
|
{
|
|
item.Selected = true;
|
|
}
|
|
}
|
|
|
|
return checkBoxGroup;
|
|
case SystemSettingsControlTypeEnum.DatePicker:
|
|
var datePicker = JsonConvert.DeserializeObject<SettingsDatePicker>(settingObject, new SystemSettingDateConverter());
|
|
DateTime newDate;
|
|
|
|
if (DateTime.TryParse(newValue, out newDate))
|
|
{
|
|
datePicker.Date = newDate;
|
|
}
|
|
return datePicker;
|
|
case SystemSettingsControlTypeEnum.TimePicker:
|
|
var timePicker = JsonConvert.DeserializeObject<SettingsTimePicker>(settingObject);
|
|
TimeSpan newTime;
|
|
|
|
if (TimeSpan.TryParse(newValue, out newTime))
|
|
{
|
|
timePicker.Time = newTime;
|
|
}
|
|
return timePicker;
|
|
case SystemSettingsControlTypeEnum.NumericTextBox:
|
|
var settings = new JsonSerializerSettings() { Culture = new CultureInfo(Constants.General.HungarianCulture) { NumberFormat = { NumberDecimalSeparator = Constants.General.NumberDecimalSeparator } } };
|
|
var numericTextBox = JsonConvert.DeserializeObject<SettingsNumericTextBox>(settingObject, settings);
|
|
double newDouble;
|
|
|
|
if (double.TryParse(newValue, out newDouble))
|
|
{
|
|
numericTextBox.Value = newDouble;
|
|
}
|
|
return numericTextBox;
|
|
case SystemSettingsControlTypeEnum.DropDownList:
|
|
var dropDownList = JsonConvert.DeserializeObject<SettingsDropDownList>(settingObject);
|
|
if (dropDownList.Options.Any(x => x.Value.Equals(newValue)))
|
|
{
|
|
dropDownList.Options.ForEach(x => x.Selected = false);
|
|
dropDownList.Options.First(x => x.Value.Equals(newValue)).Selected = true;
|
|
dropDownList.Options.First(x => x.Value.Equals(newValue)).Value = newValue;
|
|
return dropDownList;
|
|
}
|
|
throw new InvalidDataException("Wrong Value The given value is not in the settings list!");
|
|
case SystemSettingsControlTypeEnum.RadioButtonGroup:
|
|
var radioButtonGroup = JsonConvert.DeserializeObject<SettingsRadioButtonGroup>(settingObject);
|
|
if (radioButtonGroup.Options.Any(x => x.Value.Equals(newValue)))
|
|
{
|
|
radioButtonGroup.Options.ForEach(x => x.Selected = false);
|
|
radioButtonGroup.Options.First(x => x.Value.Equals(newValue)).Selected = true;
|
|
radioButtonGroup.Options.First(x => x.Value.Equals(newValue)).Value = newValue;
|
|
return radioButtonGroup;
|
|
}
|
|
return settingObject;
|
|
case SystemSettingsControlTypeEnum.TrueFalse:
|
|
var switchButton = JsonConvert.DeserializeObject<SettingsSwitchButton>(settingObject);
|
|
switchButton.Value = newValue;
|
|
return switchButton;
|
|
case SystemSettingsControlTypeEnum.MultiSelect:
|
|
var multiSelect = JsonConvert.DeserializeObject<SettingsMultiSelect>(settingObject);
|
|
multiSelect.Options.ForEach(x => x.Selected = false);
|
|
|
|
var multiSelectValues = newValue.ToObject<List<string>>(); // a newValue egy Newtonsoft.Json.Linq.JArray
|
|
foreach (var item in multiSelect.Options)
|
|
{
|
|
if (multiSelectValues.Contains(item.Value))
|
|
{
|
|
item.Selected = true;
|
|
}
|
|
}
|
|
|
|
return multiSelect;
|
|
default:
|
|
return settingObject;
|
|
}
|
|
}
|
|
}
|
|
}
|