Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
JSON Seeder
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using Newtonsoft.Json; namespace Rextester { public class Program { public static void Main(string[] args) { var modLatihan = InitData(); modLatihan.Data.NewData("Sepenuh Masa"); modLatihan.Data.NewData("Separuh Masa"); var modLatihanStr = Convert(modLatihan); var kaidahLatihan = InitData(); kaidahLatihan.Data.NewData("E-Learning"); kaidahLatihan.Data.NewData("SLDN"); kaidahLatihan.Data.NewData("PPT / RPL"); kaidahLatihan.Data.NewData("ILT"); kaidahLatihan.Data.NewData("Study (Tahap 1/2/3/4/5)"); var kaidahLatihanStr = Convert(kaidahLatihan); Console.WriteLine(modLatihanStr); Console.WriteLine(kaidahLatihanStr); } public static String Convert(Object obj){ return JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } public static OptReq InitData(){ return new OptReq(){ Data = new Selection<Option>() }; } public static OptReq InitLimitData(){ return new OptReq(){ LimitData = new Selection<LimitOption>() }; } } public class OptReq { public Selection<Option> Data { get; set; } public List<Option> GetActiveData() { if (Data == null) { return null; } if (!Data.Data.Any()) { return null; } return Data.Data.Values.Where(x => x.IsActive).ToList(); } public Selection<LimitOption> LimitData { get; set; } public List<LimitOption> GetActiveLimitData() { if (LimitData == null) { return null; } if (!LimitData.Data.Any()) { return null; } return LimitData.Data.Values.Where(x => x.IsActive).ToList(); } } /// <summary> /// Selection class to provide list data /// </summary> public class Selection<T> { private int _id; private Dictionary<int, T> _data; private List<int> _selected; public Selection() { _id = 1; _data = new Dictionary<int, T>(); _selected = new List<int>(); } public bool Multiselect { get; set; } public Dictionary<int, T> Data { get { return _data; } } /// <summary> /// /// </summary> /// <param name="data"></param> public void Add(T data) { _data.Add(ID, data); } public int ID { get { return _id; } } public void IncID() { _id++; } public List<int> Selected { get { return Multiselect ? _selected : _selected.Take(1).ToList(); } } public bool AddSelected(int id) { if (!_data.ContainsKey(id)) { return false; } if (_selected.Contains(id)) { return false; } _selected.Add(id); return true; } public bool AddMultiSelected(List<int> ids) { var filtered = _data.Keys.Where(x => ids.Contains(x)); if (!filtered.Any()) { return false; } _selected = _selected.Concat(filtered).Distinct().ToList(); return true; } public bool RemoveSelected(int id) { if (_selected.Contains(id)) { return false; } var idx = _selected.IndexOf(id); _selected.RemoveAt(idx); return true; } } public class Option { public int ID { get; set; } public string Name { get; set; } public bool IsActive { get; set; } } /// <summary> /// LimitOption to provide list limit data /// </summary> public class LimitOption : Option { public int Value { get; set; } public LimitType Type { get; set; } /// <summary> /// Validate input value with requirement value /// </summary> /// <param name="value"></param> /// <returns></returns> public bool Validate(int input) { bool retval = false; switch (Type) { case LimitType.GT: retval = input > Value; break; case LimitType.LT: retval = input < Value; break; case LimitType.GTE: retval = input >= Value; break; case LimitType.LTE: retval = input <= Value; break; default: retval = false; break; } return retval; } } // selection type public enum ReqPointType { Default, // single selection Select, // multiselect list MultiSelect, // True false only Boolean, // Using to limit checking Limit } /// <summary> /// Limit type /// </summary> [Flags] public enum LimitType { UNRELATED, // Less LT = 1, // Less than EQ = 2, LTE = LT | EQ, //3 // Great than GT = 4, // Great than equal GTE = GT | EQ //5 } public static class CodeHelper { public static void NewData(this Selection<Option> selection, string name) { selection.Add(new Option() { ID = selection.ID, Name = name, IsActive = true }); selection.IncID(); } public static void NewLimitData(this Selection<Option> selection, string name, int value, LimitType tp) { selection.Add(new LimitOption() { ID = selection.ID, Name = name, IsActive = true, Type = tp, Value = value }); selection.IncID(); } } }
run
|
edit
|
history
|
help
0
DD
30272 Program Ex7_1 switch_int
Teste
Print dulicate chars in a string
Accessit SalaryCalculation
Use ConcurrentQueue and ConcurrentDictionary with TPL (Simple example)
display xml : linq
Сортировка массива
asxsdxasd sd
ArrayList list merge_collections