init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,504 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue