80 lines
3.0 KiB
C#
80 lines
3.0 KiB
C#
using System;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BeWoDatabaseTerminator.Data
|
|
{
|
|
/// <summary>
|
|
/// Stellt den JsonConverter für die Klasse 'ContractStatus' dar.
|
|
/// </summary>
|
|
public class ContractStatusCollectionJsonConverter : JsonConverter
|
|
{
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return objectType == typeof(ContractStatusCollection);
|
|
}
|
|
|
|
public override object ReadJson(JsonReader jsonReader, Type objectType, object existingValue, JsonSerializer jsonSerializer)
|
|
{
|
|
var jsonObject = JObject.Load(jsonReader);
|
|
|
|
var contractStatusCollection = new ContractStatusCollection();
|
|
|
|
var children = jsonObject.Children<JProperty>();
|
|
|
|
foreach(var jProperty in children)
|
|
{
|
|
var contractStatus = new ContractStatus
|
|
{
|
|
Tenant = jProperty.Name
|
|
};
|
|
|
|
if(jProperty.Value is JObject jObject)
|
|
{
|
|
foreach(var jProp in jObject.Children<JProperty>())
|
|
{
|
|
switch(jProp.Name)
|
|
{
|
|
case "licensetypeid":
|
|
if(int.TryParse(jProp.Value.ToString(), out var licenseTypeId))
|
|
{
|
|
contractStatus.LicenseTypeId = licenseTypeId;
|
|
}
|
|
break;
|
|
case "activate":
|
|
if(int.TryParse(jProp.Value.ToString(), out var activate))
|
|
{
|
|
contractStatus.Activate = activate;
|
|
}
|
|
break;
|
|
case "deactivate":
|
|
if(int.TryParse(jProp.Value.ToString(), out var deactivate))
|
|
{
|
|
contractStatus.Deactivate = deactivate;
|
|
}
|
|
break;
|
|
case "delete":
|
|
if(int.TryParse(jProp.Value.ToString(), out var delete))
|
|
{
|
|
contractStatus.Delete = delete;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
contractStatusCollection.ContractStatuses.Add(contractStatus.Tenant, contractStatus);
|
|
}
|
|
|
|
return contractStatusCollection;
|
|
}
|
|
|
|
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.");
|
|
}
|
|
}
|
|
}
|