84 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
using gehGassiApp.Core.Interfaces.Synchronization;
using gehGassiApp.Domain.Favourites;
namespace gehGassiApp.Core.Interfaces
{
/// <summary>
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Favoriten ermöglicht
/// </summary>
public interface IFavouriteService : IService<Favourite>, ISyncPushPullService<Favourite>
{
/// <summary>
/// Erstellen eines Favoriten
/// </summary>
/// <returns>Favourite</returns>
Favourite Create();
/// <summary>
/// Hinzufügen eines Favoriten
/// </summary>
/// <param name="favourite">Favourite</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>Angelegter Favorit</returns>
Task<Favourite> AddAsync(Favourite favourite, string accessToken, CancellationToken token);
/// <summary>
/// Aktualisieren eines Favoriten
/// </summary>
/// <param name="favourite">Favourite</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<bool> UpdateAsync(Favourite favourite, string accessToken, CancellationToken token);
/// <summary>
/// Echtes Löschen eines Favoriten
/// </summary>
/// <param name="favouriteId">Id des Favoriten</param>
/// <param name="appUserId">Id des AppBenutzers</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<bool> DeleteAsync(string favouriteId, string appUserId, string accessToken, CancellationToken token);
/// <summary>
/// Prüfen ob ein Objekt ein Favorit ist. Prüft nur Lokal!
/// </summary>
/// <param name="key">Id des Objekts</param>
/// <param name="table">Typ des Objekts</param>
/// <returns>true wenn ein Favorit, false sonst</returns>
Task<bool> IsFavouriteLocalAsync(string key, string table);
/// <summary>
/// Toggeln des Favoriten-Status eines Objektes.
/// Entweder wird der Favorit angelegt, oder gelöscht
/// </summary>
/// <param name="key">Id des Objekts</param>
/// <param name="table">Typ des Objekts</param>
/// <param name="appUserId">Id des AppUsers</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<bool> ToggleAsync(string key, string table, string appUserId, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste von Favoriten für eine Objektklasse für einen Benutzer zurück
/// </summary>
/// <param name="table">Gewünschtes Objekt</param>
/// <param name="location">Aktuelle Position</param>
/// <param name="language">Gewünschte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <param name="appUserId">Id des AppUsers</param>
/// <returns>ListCommunicationResult</returns>
Task<CommunicationResult<List<FavouriteListItem>>> GetListAsync(string appUserId, string table, LocationDto location, string language, string accessToken, CancellationToken token);
}
}