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