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