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.");
}
}
}