//
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using HeronTrack.Ingestion.Common.EventCatalog;
//
// var position = Position.FromJson(jsonString);
namespace HeronTrack.Ingestion.Common.EventCatalog
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class Position
{
[JsonProperty("accuracyMeters", Required = Required.AllowNull)]
public double? AccuracyMeters { get; set; }
[JsonProperty("accuracyPercentage", Required = Required.AllowNull)]
public double? AccuracyPercentage { get; set; }
[JsonProperty("batteryLevel", Required = Required.AllowNull)]
public double? BatteryLevel { get; set; }
[JsonProperty("bleType")]
public string BleType { get; set; }
[JsonProperty("companyId")]
public string CompanyId { get; set; }
[JsonProperty("correlationId", Required = Required.Always)]
public string CorrelationId { get; set; }
[JsonProperty("currentChampion")]
public CurrentChampion CurrentChampion { get; set; }
[JsonProperty("dataSource", Required = Required.Always)]
public DataSource DataSource { get; set; }
[JsonProperty("date", Required = Required.Always)]
public DateTimeOffset Date { get; set; }
[JsonProperty("fillingStatus", Required = Required.AllowNull)]
public double? FillingStatus { get; set; }
[JsonProperty("gatewayIdentifier", Required = Required.AllowNull)]
public string GatewayIdentifier { get; set; }
[JsonProperty("inMotion")]
public bool? InMotion { get; set; }
[JsonProperty("isStrong")]
public bool? IsStrong { get; set; }
[JsonProperty("latitude", Required = Required.Always)]
public double Latitude { get; set; }
[JsonProperty("longitude", Required = Required.Always)]
public double Longitude { get; set; }
[JsonProperty("magnetClosed", Required = Required.AllowNull)]
public bool? MagnetClosed { get; set; }
[JsonProperty("numberWakeUps", Required = Required.AllowNull)]
public double? NumberWakeUps { get; set; }
[JsonProperty("phoneId", Required = Required.AllowNull)]
public string PhoneId { get; set; }
[JsonProperty("reason")]
public Reason? Reason { get; set; }
[JsonProperty("tagId", Required = Required.AllowNull)]
public string TagId { get; set; }
[JsonProperty("tagIdentifier")]
public string TagIdentifier { get; set; }
[JsonProperty("toolId", Required = Required.AllowNull)]
public string ToolId { get; set; }
[JsonProperty("type", Required = Required.Always)]
public string Type { get; set; }
[JsonProperty("userId", Required = Required.AllowNull)]
public string UserId { get; set; }
[JsonProperty("uuid")]
public string Uuid { get; set; }
[JsonProperty("workingHours", Required = Required.AllowNull)]
public double? WorkingHours { get; set; }
[JsonProperty("workingMeasureInProgress", Required = Required.AllowNull)]
public bool? WorkingMeasureInProgress { get; set; }
[JsonProperty("workingMinutes", Required = Required.AllowNull)]
public double? WorkingMinutes { get; set; }
}
public partial class CurrentChampion
{
[JsonProperty("accuracyMeters", Required = Required.AllowNull)]
public double? AccuracyMeters { get; set; }
[JsonProperty("accuracyPercentage", Required = Required.AllowNull)]
public double? AccuracyPercentage { get; set; }
[JsonProperty("batteryLevel", Required = Required.AllowNull)]
public double? BatteryLevel { get; set; }
[JsonProperty("bleType")]
public string BleType { get; set; }
[JsonProperty("correlationId", Required = Required.Always)]
public string CorrelationId { get; set; }
[JsonProperty("dataSource", Required = Required.Always)]
public DataSource DataSource { get; set; }
[JsonProperty("date", Required = Required.Always)]
public DateTimeOffset Date { get; set; }
[JsonProperty("fillingStatus", Required = Required.AllowNull)]
public double? FillingStatus { get; set; }
[JsonProperty("gatewayIdentifier", Required = Required.AllowNull)]
public string GatewayIdentifier { get; set; }
[JsonProperty("inMotion")]
public bool? InMotion { get; set; }
[JsonProperty("isStrong")]
public bool? IsStrong { get; set; }
[JsonProperty("latitude", Required = Required.Always)]
public double Latitude { get; set; }
[JsonProperty("longitude", Required = Required.Always)]
public double Longitude { get; set; }
[JsonProperty("magnetClosed", Required = Required.AllowNull)]
public bool? MagnetClosed { get; set; }
[JsonProperty("numberWakeUps", Required = Required.AllowNull)]
public double? NumberWakeUps { get; set; }
[JsonProperty("phoneId", Required = Required.AllowNull)]
public string PhoneId { get; set; }
[JsonProperty("reason")]
public Reason? Reason { get; set; }
[JsonProperty("tagId", Required = Required.AllowNull)]
public string TagId { get; set; }
[JsonProperty("tagIdentifier")]
public string TagIdentifier { get; set; }
[JsonProperty("toolId", Required = Required.AllowNull)]
public string ToolId { get; set; }
[JsonProperty("type", Required = Required.Always)]
public string Type { get; set; }
[JsonProperty("userId", Required = Required.AllowNull)]
public string UserId { get; set; }
[JsonProperty("uuid")]
public string Uuid { get; set; }
[JsonProperty("workingHours", Required = Required.AllowNull)]
public double? WorkingHours { get; set; }
[JsonProperty("workingMeasureInProgress", Required = Required.AllowNull)]
public bool? WorkingMeasureInProgress { get; set; }
[JsonProperty("workingMinutes", Required = Required.AllowNull)]
public double? WorkingMinutes { get; set; }
}
public enum DataSource { Btv, Computed, FullComputedLocation, FullGps, Gateway, Iet10ComputedLocation, Iet10Rc1Gps, Iet10Rc1HeartBeat33, Iet10Rc1HeartBeat39, Iet10Rc1Magnet, Iet10Rc1NoWifiNoGps, Iet10Rc1Wifi1Macs, Iet10Rc1Wifi2Macs, Manual, MobileGateway, Phone, PhoneSighting, QrCode };
public enum Reason { Movement, Periodic };
public partial class Position
{
public static Position FromJson(string json) => JsonConvert.DeserializeObject(json, HeronTrack.Ingestion.Common.EventCatalog.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Position self) => JsonConvert.SerializeObject(self, HeronTrack.Ingestion.Common.EventCatalog.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
DataSourceConverter.Singleton,
ReasonConverter.Singleton,
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
internal class DataSourceConverter : JsonConverter
{
public override bool CanConvert(Type t) => t == typeof(DataSource) || t == typeof(DataSource?);
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null) return null;
var value = serializer.Deserialize(reader);
switch (value)
{
case "BTV":
return DataSource.Btv;
case "Computed":
return DataSource.Computed;
case "Full-ComputedLocation":
return DataSource.FullComputedLocation;
case "Full-Gps":
return DataSource.FullGps;
case "Gateway":
return DataSource.Gateway;
case "IET10-ComputedLocation":
return DataSource.Iet10ComputedLocation;
case "IET10RC1-Gps":
return DataSource.Iet10Rc1Gps;
case "IET10RC1-HeartBeat33":
return DataSource.Iet10Rc1HeartBeat33;
case "IET10RC1-HeartBeat39":
return DataSource.Iet10Rc1HeartBeat39;
case "IET10RC1-Magnet":
return DataSource.Iet10Rc1Magnet;
case "IET10RC1-NoWifi-NoGps":
return DataSource.Iet10Rc1NoWifiNoGps;
case "IET10RC1-Wifi1Macs":
return DataSource.Iet10Rc1Wifi1Macs;
case "IET10RC1-Wifi2Macs":
return DataSource.Iet10Rc1Wifi2Macs;
case "Manual":
return DataSource.Manual;
case "MobileGateway":
return DataSource.MobileGateway;
case "Phone":
return DataSource.Phone;
case "PhoneSighting":
return DataSource.PhoneSighting;
case "QRCode":
return DataSource.QrCode;
}
throw new Exception("Cannot unmarshal type DataSource");
}
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
{
if (untypedValue == null)
{
serializer.Serialize(writer, null);
return;
}
var value = (DataSource)untypedValue;
switch (value)
{
case DataSource.Btv:
serializer.Serialize(writer, "BTV");
return;
case DataSource.Computed:
serializer.Serialize(writer, "Computed");
return;
case DataSource.FullComputedLocation:
serializer.Serialize(writer, "Full-ComputedLocation");
return;
case DataSource.FullGps:
serializer.Serialize(writer, "Full-Gps");
return;
case DataSource.Gateway:
serializer.Serialize(writer, "Gateway");
return;
case DataSource.Iet10ComputedLocation:
serializer.Serialize(writer, "IET10-ComputedLocation");
return;
case DataSource.Iet10Rc1Gps:
serializer.Serialize(writer, "IET10RC1-Gps");
return;
case DataSource.Iet10Rc1HeartBeat33:
serializer.Serialize(writer, "IET10RC1-HeartBeat33");
return;
case DataSource.Iet10Rc1HeartBeat39:
serializer.Serialize(writer, "IET10RC1-HeartBeat39");
return;
case DataSource.Iet10Rc1Magnet:
serializer.Serialize(writer, "IET10RC1-Magnet");
return;
case DataSource.Iet10Rc1NoWifiNoGps:
serializer.Serialize(writer, "IET10RC1-NoWifi-NoGps");
return;
case DataSource.Iet10Rc1Wifi1Macs:
serializer.Serialize(writer, "IET10RC1-Wifi1Macs");
return;
case DataSource.Iet10Rc1Wifi2Macs:
serializer.Serialize(writer, "IET10RC1-Wifi2Macs");
return;
case DataSource.Manual:
serializer.Serialize(writer, "Manual");
return;
case DataSource.MobileGateway:
serializer.Serialize(writer, "MobileGateway");
return;
case DataSource.Phone:
serializer.Serialize(writer, "Phone");
return;
case DataSource.PhoneSighting:
serializer.Serialize(writer, "PhoneSighting");
return;
case DataSource.QrCode:
serializer.Serialize(writer, "QRCode");
return;
}
throw new Exception("Cannot marshal type DataSource");
}
public static readonly DataSourceConverter Singleton = new DataSourceConverter();
}
internal class ReasonConverter : JsonConverter
{
public override bool CanConvert(Type t) => t == typeof(Reason) || t == typeof(Reason?);
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null) return null;
var value = serializer.Deserialize(reader);
switch (value)
{
case "Movement":
return Reason.Movement;
case "Periodic":
return Reason.Periodic;
}
throw new Exception("Cannot unmarshal type Reason");
}
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
{
if (untypedValue == null)
{
serializer.Serialize(writer, null);
return;
}
var value = (Reason)untypedValue;
switch (value)
{
case Reason.Movement:
serializer.Serialize(writer, "Movement");
return;
case Reason.Periodic:
serializer.Serialize(writer, "Periodic");
return;
}
throw new Exception("Cannot marshal type Reason");
}
public static readonly ReasonConverter Singleton = new ReasonConverter();
}
}