using Newtonsoft.Json; namespace Pilz.Net.CloudProviders.Nextcloud.Client.Apps.Tables.Model; public class Column { [JsonProperty("type")] private string? type; [JsonProperty("subtype")] private string? subtype; [JsonProperty("id")] public long ColumnId { get; set; } [JsonProperty("tableId")] public long TableId { get; set; } [JsonProperty("title")] public string? Title { get; set; } [JsonProperty("createdBy")] public string? CreatedBy { get; set; } [JsonProperty("createdAt")] public DateTime CreatedAt { get; set; } [JsonProperty("lastEditBy")] public string? LastEditBy { get; set; } [JsonProperty("lastEditAt")] public DateTime LastEditAt { get; set; } [JsonProperty("mandatory")] public bool Mandatory { get; set; } [JsonProperty("description")] public string? Description { get; set; } [JsonProperty("numberDefault")] public float? NumberDefault { get; set; } [JsonProperty("numberMin")] public float? NumberMin { get; set; } [JsonProperty("numberMax")] public float? NumberMax { get; set; } [JsonProperty("numberDecimals")] public float NumberDecimals { get; set; } [JsonProperty("numberPrefix")] public string? NumberPrefix { get; set; } [JsonProperty("numberSuffix")] public string? NumberSuffix { get; set; } [JsonProperty("textDefault")] public string? TextDefault { get; set; } [JsonProperty("textAllowedPattern")] public string? TextAllowedPattern { get; set; } [JsonProperty("textMaxLength")] public int? TextMaxLength { get; set; } [JsonProperty("selectionOptions")] public List SelectionOptions { get; } = []; [JsonProperty("selectionDefault")] public int? SelectionDefault { get; set; } [JsonProperty("datetimeDefault")] public DateTime? DatetimeDefault { get; set; } [JsonIgnore] public ColumnType Type { get => type switch { "text" => ColumnType.Text, "selection" => ColumnType.Selection, "datetime" => ColumnType.DateTime, _ => ColumnType.Unknown, }; set => type = value switch { ColumnType.Text => "text", ColumnType.Selection => "selection", ColumnType.DateTime => "datetime", _ => "text" }; } [JsonIgnore] public ColumnSubtype Subtype { get => subtype switch { "line" => ColumnSubtype.Line, "" => ColumnSubtype.None, _ => ColumnSubtype.Unknown, }; set => subtype = value switch { ColumnSubtype.Line => "line", _ => "" }; } }