// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
//    using bahnplan.web.JSON.CardResponse;
//
//    var cardResponse = CardResponse.FromJson(jsonString);

using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace bahnplan.web.JSON.CardResponse {
	public partial class CardResponse {
		[JsonProperty("?xml", NullValueHandling = NullValueHandling.Ignore)]
		public Xml Xml { get; set; }

		[JsonProperty("rporderdetails", NullValueHandling = NullValueHandling.Ignore)]
		public Rporderdetails Rporderdetails { get; set; }
	}

	public class Rporderdetails {
		[JsonProperty("@version", NullValueHandling = NullValueHandling.Ignore)]
		public string Version { get; set; }

		[JsonProperty("rpheader", NullValueHandling = NullValueHandling.Ignore)]
		public Rpheader Rpheader { get; set; }

		[JsonProperty("order", NullValueHandling = NullValueHandling.Ignore)]
		public Order Order { get; set; }
	}

	public class Order {
		[JsonProperty("@cdt", NullValueHandling = NullValueHandling.Ignore)]
		public string Cdt { get; set; }

		[JsonProperty("@cid", NullValueHandling = NullValueHandling.Ignore)]
		public string Cid { get; set; }

		[JsonProperty("@ddt", NullValueHandling = NullValueHandling.Ignore)]
		public string Ddt { get; set; }

		[JsonProperty("@fkat", NullValueHandling = NullValueHandling.Ignore)]
		public string Fkat { get; set; }

		[JsonProperty("@ldt", NullValueHandling = NullValueHandling.Ignore)]
		public string Ldt { get; set; }

		[JsonProperty("@on", NullValueHandling = NullValueHandling.Ignore)]
		public string On { get; set; }

		[JsonProperty("@pg", NullValueHandling = NullValueHandling.Ignore)]
		public string Pg { get; set; }

		[JsonProperty("@sdt", NullValueHandling = NullValueHandling.Ignore)]
		public string Sdt { get; set; }

		[JsonProperty("@version", NullValueHandling = NullValueHandling.Ignore)]
		public string Version { get; set; }

		[JsonProperty("@vfrom", NullValueHandling = NullValueHandling.Ignore)]
		public string Vfrom { get; set; }

		[JsonProperty("@vto", NullValueHandling = NullValueHandling.Ignore)]
		public string Vto { get; set; }

		[JsonProperty("@zweg", NullValueHandling = NullValueHandling.Ignore)]
		public string Zweg { get; set; }

		[JsonProperty("tcklist", NullValueHandling = NullValueHandling.Ignore)]
		public Tcklist Tcklist { get; set; }

		[JsonProperty("posinfolist", NullValueHandling = NullValueHandling.Ignore)]
		public Posinfolist Posinfolist { get; set; }
	}

	public class Posinfolist {
		[JsonProperty("posinfo", NullValueHandling = NullValueHandling.Ignore)]
		public Posinfo Posinfo { get; set; }
	}

	public class Posinfo {
		[JsonProperty("@dir", NullValueHandling = NullValueHandling.Ignore)]
		public string Dir { get; set; }

		[JsonProperty("@dirlabel", NullValueHandling = NullValueHandling.Ignore)]
		public string Dirlabel { get; set; }

		[JsonProperty("@posnr", NullValueHandling = NullValueHandling.Ignore)]
		public string Posnr { get; set; }

		[JsonProperty("@shownr", NullValueHandling = NullValueHandling.Ignore)]
		public string Shownr { get; set; }

		[JsonProperty("@state", NullValueHandling = NullValueHandling.Ignore)]
		public string State { get; set; }

		[JsonProperty("@type", NullValueHandling = NullValueHandling.Ignore)]
		public string Type { get; set; }

		[JsonProperty("@typeinfo", NullValueHandling = NullValueHandling.Ignore)]
		public string Typeinfo { get; set; }

		[JsonProperty("@vfo", NullValueHandling = NullValueHandling.Ignore)]
		public string Vfo { get; set; }

		[JsonProperty("@vto", NullValueHandling = NullValueHandling.Ignore)]
		public string Vto { get; set; }

		[JsonProperty("childlist")] public object Childlist { get; set; }
	}

	public class Tcklist {
		[JsonProperty("tck", NullValueHandling = NullValueHandling.Ignore)]
		public Tck Tck { get; set; }
	}

	public class Tck {
		[JsonProperty("@posnr", NullValueHandling = NullValueHandling.Ignore)]
		public string Posnr { get; set; }

		[JsonProperty("htdata", NullValueHandling = NullValueHandling.Ignore)]
		public Htdata Htdata { get; set; }

		[JsonProperty("mtk", NullValueHandling = NullValueHandling.Ignore)]
		public Mtk Mtk { get; set; }

		[JsonProperty("bahncardimage", NullValueHandling = NullValueHandling.Ignore)]
		public Bahncardimage Bahncardimage { get; set; }
	}

	public class Bahncardimage {
		[JsonProperty("#cdata-section", NullValueHandling = NullValueHandling.Ignore)]
		public string CdataSection { get; set; }
	}

	public class Htdata {
		[JsonProperty("ht", NullValueHandling = NullValueHandling.Ignore)]
		public List<Ht> Ht { get; set; }
	}

	public class Ht {
		[JsonProperty("@name", NullValueHandling = NullValueHandling.Ignore)]
		public string Name { get; set; }

		[JsonProperty("@pos", NullValueHandling = NullValueHandling.Ignore)]
		public string Pos { get; set; }

		[JsonProperty("@type", NullValueHandling = NullValueHandling.Ignore)]
		public string Type { get; set; }

		[JsonProperty("#text", NullValueHandling = NullValueHandling.Ignore)]
		public string Text { get; set; }
	}

	public class Mtk {
		[JsonProperty("@dir", NullValueHandling = NullValueHandling.Ignore)]
		public string Dir { get; set; }

		[JsonProperty("@status", NullValueHandling = NullValueHandling.Ignore)]
		public string Status { get; set; }

		[JsonProperty("txt", NullValueHandling = NullValueHandling.Ignore)]
		public string Txt { get; set; }

		[JsonProperty("zb", NullValueHandling = NullValueHandling.Ignore)]
		public string Zb { get; set; }

		[JsonProperty("nvplist", NullValueHandling = NullValueHandling.Ignore)]
		public Nvplist Nvplist { get; set; }
	}

	public class Nvplist {
		[JsonProperty("nvp", NullValueHandling = NullValueHandling.Ignore)]
		public List<Nvp> Nvp { get; set; }
	}

	public class Nvp {
		[JsonProperty("@name", NullValueHandling = NullValueHandling.Ignore)]
		public string Name { get; set; }

		[JsonProperty("#text", NullValueHandling = NullValueHandling.Ignore)]
		public string Text { get; set; }
	}

	public class Rpheader {
		[JsonProperty("@tnr", NullValueHandling = NullValueHandling.Ignore)]
		public string Tnr { get; set; }

		[JsonProperty("@ts", NullValueHandling = NullValueHandling.Ignore)]
		public string Ts { get; set; }
	}

	public class Xml {
		[JsonProperty("@version", NullValueHandling = NullValueHandling.Ignore)]
		public string Version { get; set; }

		[JsonProperty("@encoding", NullValueHandling = NullValueHandling.Ignore)]
		public string Encoding { get; set; }
	}

	public partial class CardResponse {
		public static CardResponse FromJson(string json) => JsonConvert.DeserializeObject<CardResponse>(json, Converter.Settings);
	}

	internal static class Converter {
		public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings {
			MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
			DateParseHandling        = DateParseHandling.None,
			Converters               = {new IsoDateTimeConverter {DateTimeStyles = DateTimeStyles.AssumeUniversal}}
		};
	}
}