119 lines
3.0 KiB
C#
119 lines
3.0 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Repräsentiert ein Objekt das Synchronisations-Infos für Tabellen speichert.
|
|
/// Dient der Prüfung wann das letzte mal Pull-Aktionen durchgeführt wurden
|
|
/// </summary>
|
|
public class SyncInfoPull
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
[Key]
|
|
public int Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Objekt-Typ bzw. Tabellenname
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Table { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum + Uhrzeit der Aktion
|
|
/// </summary>
|
|
[Required]
|
|
public DateTimeOffset LastUpdate { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
public class SyncInfoPush
|
|
{
|
|
/// <summary>
|
|
/// Eindeutige Id
|
|
/// </summary>
|
|
[Key]
|
|
public Guid Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Objekt-Typ bzw. Tabellenname
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Table { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schlüssel nach Objekt
|
|
/// </summary>
|
|
[Required]
|
|
[MaxLength(100)]
|
|
public string Key { get; set; }
|
|
|
|
/// <summary>
|
|
/// Welche Operation wurde durchgeführt?
|
|
/// </summary>
|
|
[Required]
|
|
public SyncOperation Operation { get; set; }
|
|
|
|
/// <summary>
|
|
/// Datum + Uhrzeit der Aktion
|
|
/// </summary>
|
|
[Required]
|
|
public DateTimeOffset DateTime { get; set; }
|
|
|
|
/// <summary>
|
|
/// Daten als JSON seralisiert
|
|
/// </summary>
|
|
public string Value { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt die Daten als Typ (Objekt) zurück
|
|
/// </summary>
|
|
/// <typeparam name="T">Typ des Objektes</typeparam>
|
|
/// <returns>Objekt oder null</returns>
|
|
public T GetValue<T>()
|
|
{
|
|
if (string.IsNullOrEmpty(Value)) return default;
|
|
try
|
|
{
|
|
var result = JsonSerializer.Deserialize<T>(Value, new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
return result;
|
|
}
|
|
catch{}
|
|
|
|
return default;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Welche Art von Operation wurde durchgeführt?
|
|
/// </summary>
|
|
public enum SyncOperation
|
|
{
|
|
/// <summary>
|
|
/// Anlegen
|
|
/// </summary>
|
|
Create = 1,
|
|
/// <summary>
|
|
/// Bearbeiten
|
|
/// </summary>
|
|
Edit = 2,
|
|
/// <summary>
|
|
/// Löschen
|
|
/// </summary>
|
|
Delete = 3
|
|
}
|
|
}
|