using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace BeWo.Data.Security { /// /// Stellt den JsonConverter für die Klasse 'ContractStatus' dar. /// public class BeWoToolUserCollectionJsonConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(BeWoToolUserCollection); } public override object ReadJson(JsonReader jsonReader, Type objectType, object existingValue, JsonSerializer jsonSerializer) { var jsonObject = JObject.Load(jsonReader); var collection = new BeWoToolUserCollection(); var children = jsonObject.Children(); foreach (var jProperty in children) { if (jProperty.Name == "DATA") { if (jProperty.Value is JArray jList) { foreach (var jTk in jList.Children()) { var user = new BeWoToolUser(); collection.BeWoToolUserList.Add(user); foreach (var jProp in jTk.Children()) { switch (jProp.Name.ToLower()) { case "useroid": if (long.TryParse(jProp.Value.ToString(), out var coid)) { user.UserOid = coid; } break; case "employeeoid": if (long.TryParse(jProp.Value.ToString(), out var eoid)) { user.EmployeeOid = eoid; } break; case "status": if (int.TryParse(jProp.Value.ToString(), out var sts)) { user.Status = sts; } break; case "email": user.EMail = jProp.Value.ToString(); break; case "login": user.Login = jProp.Value.ToString(); break; case "password": user.Password = jProp.Value.ToString(); break; case "firstname": user.FirstName = jProp.Value.ToString(); break; case "lastname": user.LastName = jProp.Value.ToString(); break; case "chatcode": user.ChatCode = jProp.Value.ToString(); break; case "mobile": user.Mobile = jProp.Value.ToString(); break; case "isemployee": if (int.TryParse(jProp.Value.ToString(), out var flag)) { user.IsEmployee = flag; } break; case "category": user.Category = jProp.Value.ToString(); break; } } } } } } return collection; } public override bool CanWrite => false; public override void WriteJson(JsonWriter jsonWriter, object value, JsonSerializer jsonSerializer) { throw new NotImplementedException("Es werden nur Json-Daten vom Server verarbeitet, nicht aber zurückgeschickt."); } } }