using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassiApp.Domain.Common; using gehGassiApp.Domain.Subscriptions; using Platform = gehGassiApp.Domain.Common.Platform; namespace gehGassiApp.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der die Abonnements verwalten kann /// public interface ISubscriptionService { /// /// Gibt eine Liste von verfügbaren Abos zurück /// /// AppMode - Hundebesitzer oder Walker /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetSubscriptionsAsync(AppMode appMode, string language, string accessToken, CancellationToken token); /// /// Gibt eine Liste von gebuchten Abos zurück /// /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetMySubscriptionsAsync(string language, string accessToken, CancellationToken token); /// /// Gibt eine Liste von gebuchten aktiven Abos zurück /// /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetMyActiveSubscriptionsAsync(string language, string accessToken, CancellationToken token); /// /// Erstellen einer Abo-Buchung /// /// AppUserId /// Id des Abos /// Sprache /// InAppBillingPurchase serialisiert als JSON /// Optional: Ablaufdatum das gesetzt werden soll /// Plattform auf welcher das Abo erstellt wird /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CreateSubscriptionAsync(string appUserId, string subscriptionId, string language, string inAppBillingPurchase, DateTime? expirationDateToSet, Platform platform, string accessToken, CancellationToken token); /// /// Wechseln eines Abos in der Gruppe für eine Abo-Buchung /// /// Id der Abo-Buchung /// AppUserId /// Id des Abos auf das gechselt werden soll /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> SwitchSubscriptionAsync(long bookingId, string appUserId, string subscriptionId, string language, string accessToken, CancellationToken token); /// /// Stornieren einer Abo-Buchung /// /// Abo-Buchungs ID /// AppUserId /// Sprache /// Plattform auf der das Abo erstellt wurde /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CancelSubscriptionAsync(long bookingId, string appUserId, string language, Platform platform, string accessToken, CancellationToken token); /// /// Verlängern einer Abo-Buchung /// /// Abo-Buchungs ID /// AppUserId /// Sprache /// Plattform auf der das Abo erstellt wurde /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> RenewSubscriptionAsync(long bookingId, string appUserId, string language, Platform platform, string accessToken, CancellationToken token); } }