Files
BeWoPlaner/BeWoDatabaseTerminator/BeWoDatabaseTerminator/Data/ContractStatusCollectionJsonConverter.cs
Lyndon Jetten 2f8dcc87f0 BeWoDatabaseTerminator hinzugefügt
Kalender-Report für Kollegium e.V. angefangen. Noch nicht fertig!
2022-10-11 16:48:36 +02:00

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