using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace gehGassiApp.Domain.Common { /// /// Repräsentiert ein Objekt das Synchronisations-Infos für Tabellen speichert. /// Dient der Prüfung wann das letzte mal Pull-Aktionen durchgeführt wurden /// public class SyncInfoPull { /// /// Eindeutige Id /// [Key] public int Id { get; set; } /// /// Objekt-Typ bzw. Tabellenname /// [Required] [MaxLength(100)] public string Table { get; set; } /// /// Datum + Uhrzeit der Aktion /// [Required] public DateTimeOffset LastUpdate { get; set; } } /// /// Repräsentiert ein Objekt das Synchronisations-Infos für Tabellen speichert. /// Dient der Prüfung wann das letzte mal Push-Aktionen durchgeführt wurden und was gepusht werden muss /// public class SyncInfoPush { /// /// Eindeutige Id /// [Key] public Guid Id { get; set; } /// /// Objekt-Typ bzw. Tabellenname /// [Required] [MaxLength(100)] public string Table { get; set; } /// /// Schlüssel nach Objekt /// [Required] [MaxLength(100)] public string Key { get; set; } /// /// Welche Operation wurde durchgeführt? /// [Required] public SyncOperation Operation { get; set; } /// /// Datum + Uhrzeit der Aktion /// [Required] public DateTimeOffset DateTime { get; set; } /// /// Daten als JSON seralisiert /// public string Value { get; set; } /// /// Gibt die Daten als Typ (Objekt) zurück /// /// Typ des Objektes /// Objekt oder null public T GetValue() { if (string.IsNullOrEmpty(Value)) return default; try { var result = JsonSerializer.Deserialize(Value, new JsonSerializerOptions(JsonSerializerDefaults.Web)); return result; } catch{} return default; } } /// /// Welche Art von Operation wurde durchgeführt? /// public enum SyncOperation { /// /// Anlegen /// Create = 1, /// /// Bearbeiten /// Edit = 2, /// /// Löschen /// Delete = 3 } }