using System; using System.Collections.Generic; using System.Text; using System.Text.Json.Serialization; namespace gehGassi.Dto.Common { /// /// Basisklasse für Abfragen der API /// public class QueryDto { /// /// Aktueller Modus der App /// [JsonPropertyName("appMode")] public AppModeDto AppMode { get; set; } /// /// Letzte Aktualisierung für die Abfrage der Sync-Daten. /// Wenn null, dann alle /// [JsonPropertyName("lastUpdate")] public DateTimeOffset? LastUpdate { get; set; } /// /// Wo befindet sich der Benutzer? /// [JsonPropertyName("location")] public LocationDto Location { get; set; } /// /// Gewünschte Sprache /// [JsonPropertyName("language")] public string Language { get; set; } /// /// Max. Datensätze. Wenn -1, dann ignorieren /// [JsonPropertyName("take")] public int Take { get; set; } /// /// Datensätze auslassen, Wenn -1, dann ignorieren /// [JsonPropertyName("skip")] public int Skip { get; set; } /// /// Optional: Liste der Sortierkriterien /// public List DynamicSortOrder { get; set; } /// /// Erstellt eine Instanz /// public QueryDto() { AppMode = AppModeDto.DogOwner; LastUpdate = null; Language = string.Empty; Location = new LocationDto(); Take = -1; Skip = -1; DynamicSortOrder = new List(); } } /// /// Repräsenntiert eine GEO-Position des Benutzers. /// Wird für Abfragen verwendet /// public class LocationDto { /// /// Optional: Breitengrad des Users /// [JsonPropertyName("lat")] public double? Lat { get; set; } /// /// Optional Längengrad des Users /// [JsonPropertyName("lng")] public double? Lng { get; set; } /// /// Land ISO-2 Code /// [JsonPropertyName("countryCode")] public string CountryCode { get; set; } /// /// Bundesland ISO 3166-2 Code /// [JsonPropertyName("stateCode")] public string StateCode { get; set; } /// /// Erstellt eine Instanz /// public LocationDto() { Lat = null; Lng = null; CountryCode = string.Empty; StateCode = string.Empty; } } /// /// Hilfsklasse für das Festlegen einer Sortierung /// public class DynamicSortOrderDto { /// /// Name der Eigenschaft z.B. UpdateAd oder ID oder StartDate usw. /// public string Property { get; set; } /// /// Sortierrichtung /// public SortDirectionDto SortDirection { get; set; } public DynamicSortOrderDto() { Property = string.Empty; SortDirection = SortDirectionDto.Ascending; } } }