using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassiApp.Core.Interfaces.Synchronization;
using gehGassiApp.Domain.Walkers;
namespace gehGassiApp.Core.Interfaces
{
///
/// Schnittstellenbeschreibung für einen Service der die Verfügbarkeit eines Walkers für Walks je wochentag ermöglicht
///
public interface IWalkingTimeService : IService, ISyncPushPullService
{
///
/// Gibt eine Liste aller WalkingTimes eines DogWalkers zurück
///
/// Id des DogWalkers
/// Unbedingt online versuchen
/// Aktuelles Accesstoken
/// CancellationToken
/// CommunicationResult
Task>> GetAllAsync(string dogWalkerId, bool forceOnline, string accessToken, CancellationToken token);
///
/// Hinzufügen einer WalkingTime
///
/// Id des Dogwalkers
/// Wochentag
/// Startzeit
/// Endzeit
/// Aktiv
/// Aktuelles Accesstoken
/// CancellationToken
/// WalkingTime
Task AddAsync(string dogWalkerId, DayOfWeek day, TimeSpan start, TimeSpan end, bool enabled, string accessToken, CancellationToken token);
///
/// Aktualisieren einer WalkingTime
///
/// WalkingTime
/// Aktuelles Accesstoken
/// CancellationToken
/// True wenn erfolgreich, false sonst
Task UpdateAsync(WalkingTime walkingTime, string accessToken, CancellationToken token);
///
/// Echtes Löschen einer WalkingTime
///
/// Id der WalkingTime
/// Id des AppBenutzers
/// Aktuelles Accesstoken
/// CancellationToken
/// True wenn erfolgreich, false sonst
Task DeleteAsync(string walkingTimeId, string appUserId, string accessToken, CancellationToken token);
}
}