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