using gehGassiApp.Core.Interfaces.Synchronization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassiApp.Domain.Dogs;
namespace gehGassiApp.Core.Interfaces
{
///
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Hunden ermöglicht
///
public interface IDogService : IService, ISyncPushPullService
{
///
/// Erstellen eines Hundes
///
///
public Dog Create(string appUserId);
///
/// Gibt eine Liste der Hunden zurück.
/// Entweder von der DB oder vom Server
///
/// Id des AppBenutzers
/// Aktuelles Accesstoken
/// CancellationToken
/// Liste der Hunde
Task> GetDogsAsync(string appUserId, string accessToken, CancellationToken token);
///
/// Gibt eine Liste der Hunden zurück.
/// Entweder von der DB oder vom Server
///
/// Id des AppBenutzers
/// Gewünschte Sprache
/// Aktuelles Accesstoken
/// CancellationToken
/// Liste der Hunde
Task> GetDogsMinAsync(string appUserId, string language, string accessToken, CancellationToken token);
///
/// Gibt einen hund vom Server zurück
///
/// Id des Hundes
/// Aktuelles Accesstoken
/// CancellationToken
/// Hund oder null, wenn nicht gfunden
Task GetDogAsync(string dogId, string accessToken, CancellationToken token);
///
/// Hinzufügen eines Hundes
///
/// Hund
/// Aktuelles Accesstoken
/// CancellationToken
/// Angelegter Hund
Task AddAsync(Dog dog, string accessToken, CancellationToken token);
///
/// Aktualisieren eines Hundes
///
/// Hund
/// Aktuelles Accesstoken
/// CancellationToken
/// Angelegter Hund
Task UpdateAsync(Dog dog, string accessToken, CancellationToken token);
///
/// Echtes Löschen eines Hundes - wird derzeit nicht verwendet!
/// Bitte Hund auf deleted setzen und UPDATE
///
/// Id des Hundes
/// Id des AppBenutzers
/// Aktuelles Accesstoken
/// CancellationToken
/// Angelegter Hund
Task DeleteAsync(string dogId, string appUserId, string accessToken, CancellationToken token);
}
}