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;
}
}
}