using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace gehGassiApp.Core.Interfaces.Synchronization { /// /// Schnittstellenbeschreibung für einen Service der Push- und Pull unterstützt /// public interface ISyncPushPullService where T : class { /// /// Holen der Daten vom lokalen Speicher die noch nicht synchronisiert wurden und senden an den Server /// /// Aktuelles Accesstoken /// CancellationToken /// Task Task> PushAsync(string accessToken, CancellationToken token); /// /// Holen der letzten Daten vom Server und Synchronisieren mit den lokalen Daten /// /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// Task Task> PullAsync(string language, string accessToken, CancellationToken token); } /// /// Ergebnis einer Synchronisierung /// /// Typ der Klasse public class SyncResult where T : class { /// /// Hinzugefügte Items /// public List Added { get; set; } /// /// Aktualisierte Items /// public List Updated { get; set; } /// /// Gelöschte Items /// public List Deleted { get; set; } /// /// Wann war das letzte Update? /// public DateTimeOffset? LastUpdate { get; set; } /// /// Gibt an ob Änderungen vorliegen /// public bool HasChanges { get { var changed = Added.Count > 0 || Updated.Count > 0 || Deleted.Count > 0; return changed; } } /// /// Erstellt eine Instanz /// public SyncResult() { Added = new List(); Updated = new List(); Deleted = new List(); LastUpdate = null; } } }