using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Dto; using gehGassi.Dto.Advertisements; using gehGassi.Dto.Banners; using gehGassi.Dto.Common; using gehGassi.Dto.Dogs; using gehGassi.Dto.DogWalkers; using gehGassi.Dto.Favourites; using gehGassi.Dto.Feedback; using gehGassi.Dto.Listings; using gehGassi.Dto.Messages; using gehGassi.Dto.News; using gehGassi.Dto.Payment; using gehGassi.Dto.Pushnotifications; using gehGassi.Dto.Ratings; using gehGassi.Dto.Reporting; using gehGassi.Dto.Walks; using gehGassiApp.Core.Messaging; using gehGassiApp.Domain.Advertisements; using gehGassiApp.Domain.AppVersions; using gehGassiApp.Domain.Authentication; using gehGassiApp.Domain.Banners; using gehGassiApp.Domain.Common; using gehGassiApp.Domain.Dogs; using gehGassiApp.Domain.Favourites; using gehGassiApp.Domain.Feedback; using gehGassiApp.Domain.Listings; using gehGassiApp.Domain.Lookup; using gehGassiApp.Domain.Messages; using gehGassiApp.Domain.News; using gehGassiApp.Domain.Payment; using gehGassiApp.Domain.Pushnotifications; using gehGassiApp.Domain.Subscriptions; using gehGassiApp.Domain.Users; using gehGassiApp.Domain.Vouchers; using gehGassiApp.Domain.Walkers; using gehGassiApp.Domain.Walks; using Platform = gehGassiApp.Domain.Common.Platform; namespace gehGassiApp.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der die Kommunikation mit dem Server ermöglicht /// public interface ICommunicationService { /// /// Prüft ob eine Verbindung zum Server besteht /// /// true wenn verbunden, false sonst Task IsConnected(); #region Helper für DebugInfo bool GetIsOnline(); bool GetHasInternet(); DateTimeOffset? GetLastOnlineCheck(); NetworkAccess GetCurrentNetworkAccess(); #endregion #region Registrierung /// /// Prüfen ob ein Benutzername noch verfügbar ist und ob das Passwort ausreicht /// /// Benutzername /// Passwort /// CancellationToken /// true wenn alles passt, false sonst Task> RegisterCheckAvailableAsync(string userName, string password, CancellationToken token); /// /// Prüfen ob ein Passwort ausreicht /// /// Passwort /// CancellationToken /// true wenn alles passt, false sonst Task> CheckPasswordAsync(string password, CancellationToken token); /// /// Registrieren eines App-Users /// /// Benutzername /// Passwort /// Land /// CancellationToken /// AppUser-Typ /// Vorname /// Nachname /// Geburtsdatum /// PLZ /// Ort /// Bundesland /// Nationalität /// Land Hauptwohnsitz /// true wenn alles passt, false sonst Task> RegisterAsync(string userName, string password, AppUserType appUserType, string firstName, string lastName, DateTimeOffset? birthDate, string zip, string city, string state, string country, string nationality, string mainResidence, CancellationToken token); /// /// Registrieren eines App-Users Extern /// /// Benutzername /// Passwort /// Land /// CancellationToken /// AppUser-Typ /// Vorname /// Nachname /// Geburtsdatum /// PLZ /// Ort /// Bundesland /// Token des externen Providers /// Login-Provider /// Nationalität /// Land Hauptwohnsitz /// true wenn alles passt, false sonst Task> RegisterExternalAsync(string userName, string password, AppUserType appUserType, string firstName, string lastName, DateTimeOffset? birthDate, string zip, string city, string state, string country, string nationality, string mainResidence, string accessToken, string loginProvider, CancellationToken token); #endregion #region Token / Login /// /// Anmelden eines Benutzers /// /// Benutzername /// Passwort /// CancellationToken /// CommunicationResult Task> LoginAsync(string userName, string password, CancellationToken token); /// /// Anmelden eines Benutzers mittels Acces-Token wegen external Provider /// /// Access-Token /// CancellationToken /// CommunicationResult Task> LoginExternalAsync(string accessToken, CancellationToken token); /// /// Anmelden eines Benutzers mittels Apple Provider /// /// Login-Daten von Apple /// CancellationToken /// CommunicationResult Task> LoginAppleAsync(LoginAppleDto dto, CancellationToken token); /// /// Abmelden eines Benutzers. /// Löscht alle Refreshtokens des Benutzers /// /// Access-Token /// CancellationToken /// CommunicationResult Task> LogoutAsync(string accessToken, CancellationToken token); /// /// Zurücksetzen des Passworts eines Benutzers /// /// Benutzername / Email /// CancellationToken /// CommunicationResult Task> ResetPasswordAsync(string userName, CancellationToken token); /// /// Senden der E-Mail Bestätigung für einen Benutzer /// /// Benutzername / Email /// CancellationToken /// CommunicationResult Task> ResendConfirmationAsync(string userName, CancellationToken token); /// /// Anmelden eines Benutzers mittels Refreshtoken /// /// Aktuelles Accesstoken /// Refreshtoken /// CancellationToken /// CommunicationResult Task> RefreshTokenAsync(string accessToken, string refreshToken, CancellationToken token); /// /// Prüfen ob ein Benutzer ein Passwort hat /// /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> HasPasswordAsync(string accessToken, CancellationToken token); /// /// Hinzufügen eines Passswortes zu einem Benutzer, wenn dieser keines hat /// /// Benutzername /// Passwort das hinzugefügt werden soll /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AddPasswordAsync(string userName, string password, string accessToken, CancellationToken token); /// /// Ändern des Passwortes eines Benutzers /// /// Benutzername /// Passwort das gesetzt werden soll /// Bisheriges Passwort /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ChangePasswordAsync(string userName, string password, string oldPassword, string accessToken, CancellationToken token); /// /// Löschen des Accounts eines Benutzers /// /// Benutzername /// Id des Benutzers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteAccountAsync(string userName, string userId, string accessToken, CancellationToken token); #endregion #region AppUser /// /// Holt den App-User für den aktuell angemeldeten Benutzer /// /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetAppUserAsync(string accessToken, CancellationToken token); /// /// Holt den App-User für den aktuell angemeldeten Benutzer Sync! /// /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetAppUserSyncAsync(DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Aktualisieren eines App-Users am Server /// /// App-User DTO /// Foto-Datei /// Aktuelles Accesstoken /// CancellationToken /// Dateiname Photo /// CommunicationResult Task> UpdateAppUserAsync(AppUserDto appUserDto, string photoFileName, byte[] photoFile, string accessToken, CancellationToken token); /// /// Setzen des AppUser Types am Server. /// Kann nur online erfolgen! /// /// Dto für das Setzen des Typs /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> SetAppUserTypeAsync(SetAppUserTypeDto setAppUserTypeDto, string accessToken, CancellationToken token); /// /// Setzen des AppUser Types am Server. Wenn hundebesitzer Walker wird /// Kann nur online erfolgen! /// /// Dto für das Setzen des Typs /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> SetAppUserTypeAsync(SetAppUserTypeExDto setAppUserTypeDto, string accessToken, CancellationToken token); /// /// Hinzufügen eines Payment Users am Server. /// /// DTO für das Hinzufügen des Payment-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AddPaymentUserAsync(AddPaymentUserDto addPaymentUserDto, string accessToken, CancellationToken token); /// /// Blockieren eines App-Users am Server /// /// Dto für das Blockieren eines anderen App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> BlockAppUserAsync(BlockCreateDto blockDto, string accessToken, CancellationToken token); /// /// Blockieren eines App-Users am Server aufheben /// /// Dto für das Aufheben der Blockierung eines anderen App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UnblockAppUserAsync(BlockRemoveDto unblockDto, string accessToken, CancellationToken token); /// /// Holen von blockierten App-Usern /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetBlockedAppUsersAsync(BlockedQueryDto query, string accessToken, CancellationToken token); /// /// Melden eines App-Users /// /// Dto für das Melden eines anderen App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ReportAppUserAsync(AppUserReportDto reportDto, string accessToken, CancellationToken token); #endregion #region Walker Profile /// /// Holt den das Walker Profil für den aktuell angemeldeten Benutzer /// /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalkerProfileAsync(string accessToken, CancellationToken token); /// /// Holt das Walker Profil für den aktuell angemeldeten Benutzer Sync! /// /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalkerProfileSyncAsync(DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Aktualisieren eines Dogwalker Profils am Server /// /// Profil DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdateWalkerProfileAsync(DogWalkerProfileDto walkerProfileDto, string accessToken, CancellationToken token); #endregion #region DogOwners /// /// Gibt Detailsinfos zu einem DogOwner zurück /// /// Id des DogOwners /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetDogOwnerAsync(string dogOwnerId, string accessToken, CancellationToken token); #endregion #region DogWalkers /// /// Gibt Detailsinfos zu einem Dogwalker zurück /// /// Id des Dogwalkers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetDogWalkerAsync(string dogWalkerId, string accessToken, CancellationToken token); /// /// Holen von Dogwalkern vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetDogWalkersAsync(DogWalkerQueryDto query, string accessToken, CancellationToken token); /// /// Holen von Dogwalkern vom Server. Als Lookup /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetDogWalkersLookupAsync(DogWalkerQueryDto query, string accessToken, CancellationToken token); /// /// Holen der Walkingtimes vom Server /// /// Id des DogWalkers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetWalkingTimesForSyncAsync(string dogWalkerId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Anlegen einer WalkingTime am Server /// /// WalkingTime /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateWalkingTimeAsync(WalkingTimeDto walkingTimeDto, string accessToken, CancellationToken token); /// /// Aktualisieren einer WalkingTime am Server /// /// WalkingTime DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdateWalkingTimeAsync(WalkingTimeDto walkingTimeDto, string accessToken, CancellationToken token); /// /// Löschen einer WalkingTime am Server /// /// WalkingTime DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteWalkingTimeAsync(WalkingTimeDto walkingTimeDto, string appUserId, string accessToken, CancellationToken token); /// /// Gibt alle WalkingTimes eins Dogwalkers vom Server zurück /// /// ID des DogWalkers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetAllWalkingTimesAsync(string dogWalkerId, string accessToken, CancellationToken token); #endregion #region News & NewsCategory /// /// Holen der News-Kategorien vom Server. /// /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetNewsCategoriesAsync(DateTimeOffset? lastUpdate, string language, string accessToken, CancellationToken token); /// /// Holen von News vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetNewsAsync(NewsQueryDto query, string accessToken, CancellationToken token); #endregion #region Lookup /// /// Gibt eine Liste von Dog- Ownern und Walkern basierend auf einem Filter zurück /// /// Filter /// Anzahl max. Datensätze /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> LookupEntitiesAsync(string filter, int take, string accessToken, CancellationToken token); /// /// Gibt eine Liste von Dogwalkern mit Distanz zur aktuellen Position zurück /// /// Id die ignoriert werden soll falls der Benutzer DogOwner und DogWalker ist /// Breitengrad /// Längengrad /// Anzahl Walker gewünscht /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> LookupDogWalkersAsync(string ignoreId, double lat, double lng, int take, string accessToken, CancellationToken token); /// /// Gibt Detailsinfos zu einem Dogwalker zurück /// /// Id des Dogwalkers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> LookupDogWalkerAsync(string dogWalkerId, string accessToken, CancellationToken token); #endregion #region Messages & Conversations /// /// Holt eine Liste der Konversationen eines Benutzers /// /// Id des Benutzers (DogOwner | DogWalker) /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// Liste von Konversationen Task>> GetConversationsAsync(string senderId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holt eine Liste der Konversationen eines Benutzers mit Filter am Server. /// Geblockte oder Gesperrte Benutzer werden nicht zurückgegeben. /// /// Id des Benutzers (DogOwner | DogWalker) /// Filter /// Aktuelles Accesstoken /// CancellationToken /// Liste von Konversationen Task>> GetConversationsWithFilterAsync(string senderId, string filter, string accessToken, CancellationToken token); /// /// Holt eine Konversationen eines Benutzers mit einem Ziel /// /// Id des Benutzers (DogOwner | DogWalker) /// Id des Empfängers /// Aktuelles Accesstoken /// CancellationToken /// Liste von Konversationen Task> GetConversationByReceipientAsync(string senderId, string receipientId, string accessToken, CancellationToken token); /// /// Anlegen einer Konversation am Server /// /// Gewünschte Id der Konversation /// Id des Senders /// Id des Empfängers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateConversationAsync(string conversationId, string senderId, string receiverId, string accessToken, CancellationToken token); /// /// Holt eine Liste der offenen Nachrichten eines Benutzers /// /// Id des Benutzers (DogOwner | DogWalker) /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// Liste von Konversationen Task>> GetMessagesAsync(string senderId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holt eine Liste der offenen Nachrichten eines Benutzers für eine Konversation /// /// Id des Benutzers (DogOwner | DogWalker) /// Id der Konversation /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// Liste von Konversationen Task>> GetMessagesAsync(string senderId, string conversationId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Bestätigen des erfolgreichen Erhalts von Nachrichten für einen Benutzer /// /// Id des Benutzers (DogOwner | DogWalker) /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ConfirmMessagesAsync(string senderId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Bestätigen des erfolgreichen Erhalts von Nachrichten für einen Benutzer für eine Konversation /// /// Id des Benutzers (DogOwner | DogWalker) /// Id der Konversation /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ConfirmMessagesAsync(string senderId, string conversationId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Anlegen einer Nachricht am Server /// /// Id des Benutzers (DogOwner | DogWalker) /// Id des Benutzers Empfänger /// Nachricht /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> AddMessageAsync(string senderId, string receiverId, Message message, string accessToken, CancellationToken token); /// /// Holen der Systemnachrichten vom Server für Sync /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetSystemMessagesForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Bestätigen des erfolgreichen Erhalts von SystemNachrichten für einen Benutzer /// /// Id des Benutzers (DogOwner | DogWalker) /// Letztes Update /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ConfirmSystemMessagesAsync(string senderId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Entfernen von Systemnachrichten vom Server für einen AppUser und eine bestimmte Kombination aus Key und Table /// /// Id des AppUsers /// Typ des AppUsers /// Key /// Table /// Alter als dieses Datum /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> RemoveSystemMessagesAsync(string appUserId, AppUserType appUserType, string key, string table, DateTimeOffset? created, string accessToken, CancellationToken token); #endregion #region Listings /// /// Holen der Branchen und Listungen Übersicht /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetListingsOverviewAsync(QueryDto query, string accessToken, CancellationToken token); /// /// Holen von Listungen nahe dem Benutzer vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetListingsNearAsync(QueryDto query, string accessToken, CancellationToken token); /// /// Gibt eine laufende Listung zurück /// /// Id der Listung /// gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetListingRunningAsync(string id, string language, string accessToken, CancellationToken token); /// /// Holen von Listungen je Branche mit Geo-Einschränkungen /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetListingsByBranchAsync(ListingQueryDto query, string accessToken, CancellationToken token); #endregion #region Banners /// /// Abfragen eines zufälligen Banners für eine Platzierung /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetBannerForLocationAsync(BannerQueryDto query, string accessToken, CancellationToken token); /// /// Hinzufügen von Klicks zu einem Banner /// /// Model für einen Klick für Banner /// Aktuelles Accesstoken /// CancellationToken /// true wenn der Banner noch gültig ist, false sonst Task> AddClicksAsync(BannerClickDto dtoModel, string accessToken, CancellationToken token); /// /// Hinzufügen von Views zu einem Banner /// /// Model für einen View für Banner /// Aktuelles Accesstoken /// CancellationToken /// true wenn der Banner noch gültig ist, false sonst Task> AddViewsAsync(BannerViewDto dtoModel, string accessToken, CancellationToken token); #endregion #region Advertisements /// /// Holen der Liste der Werbungs-Kategorien welche online sind /// /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetAdvertisementCategoriesOnlineAsync(string language, string accessToken, CancellationToken token); /// /// Holen von ablaufenden Werbungen mit Geo-Einschränkungen /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetAdvertisementsNearEndAsync(QueryDto query, string accessToken, CancellationToken token); /// /// Gibt eine laufende Werbung zurück /// /// Id der Werbung /// gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetAdvertisementRunningAsync(string id, string language, string accessToken, CancellationToken token); /// /// Holen von Werbungen je Kategorie mit Geo-Einschränkungen /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetAdvertisementsByCategoryAsync(AdvertisementQueryDto query, string accessToken, CancellationToken token); #endregion #region Dogs & Dogsraces /// /// Holen der Hunderassen vom Server. /// /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetDogRacesAsync(DateTimeOffset? lastUpdate, string language, string accessToken, CancellationToken token); /// /// Holen einer Hunderassen vom Server. /// /// Id der Hunderasse /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetDogRaceAsync(string id, string language, string accessToken, CancellationToken token); /// /// Holen der Hunde vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetDogsAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holen der Hunde vom Server als MinInfo /// /// Id des AppUsers /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetDogsMinAsync(string appUserId, string language, string accessToken, CancellationToken token); /// /// Holen eines Hundes vom Server /// /// Id des Hundes /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetDogAsync(string dogId, string accessToken, CancellationToken token); /// /// Anlegen eines Hundes am Server /// /// Hund DTO /// Foto-Datei /// Aktuelles Accesstoken /// CancellationToken /// Dateiname Photo /// CommunicationResult Task>> AddDogAsync(DogDto dogDto, string photoFileName, byte[] photoFile, string accessToken, CancellationToken token); /// /// Aktualisieren eines Hundes am Server /// /// Hund DTO /// Foto-Datei /// Aktuelles Accesstoken /// CancellationToken /// Dateiname Photo /// CommunicationResult Task> UpdateDogAsync(DogDto dogDto, string photoFileName, byte[] photoFile, string accessToken, CancellationToken token); /// /// Löschen eines Hundes am Server /// /// Hund DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteDogAsync(DogDto dogDto, string appUserId, string accessToken, CancellationToken token); #endregion #region Walks /// /// Gibt die Anzahl öffentlicher Anfragen für einen Benutzer zurück /// /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CountPublicWalkRequestsAsync(string accessToken, CancellationToken token); /// /// Holen der öffentlichen Anfragen vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holen der öffentlichen Anfragen vom Server für die letzten /// /// Id des AppUsers /// Gewünschte Sprache /// Anzahl Datensätze /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsLatestAsync(string appUserId, string language, int take, string accessToken, CancellationToken token); /// /// Holen von öffentlichen Anfragen vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsAsync(PublicWalkRequestQueryDto query, string accessToken, CancellationToken token); /// /// Holen von öffentlichen Anfragen vom Server - erweitert /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsExAsync(PublicWalkRequestQueryExDto query, string accessToken, CancellationToken token); /// /// Holen von öffentlichen Anfragen vom Server mit einem Antwortstatus für einen DogWalker /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsWithResponseStatusAsync(PublicWalkRequestAndResponseStatusQueryDto query, string accessToken, CancellationToken token); /// /// Holen von öffentlichen Anfragen vom Server mit einem Antwortstatus für einen DogWalker mit erweiterten Suchparametern /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkRequestsWithResponseStatusExAsync(PublicWalkRequestAndResponseStatusQueryExDto query, string accessToken, CancellationToken token); /// /// Holen einer öffntlichen Anfrage vom Server. /// /// Id der Anfrage /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetPublicWalkRequestWithNamesAsync(string id, string language, string accessToken, CancellationToken token); /// /// Anlegen einer öffentlichen Anfrage am Server /// /// Öffentliche Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreatePublicWalkRequestAsync(PublicWalkRequestCreateDto requestDto, string accessToken, CancellationToken token); /// /// Aktualisieren einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdatePublicWalkRequestAsync(PublicWalkRequestDto requestDto, string accessToken, CancellationToken token); /// /// Löschen einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeletePublicWalkRequestAsync(PublicWalkRequestDto requestDto, string appUserId, string accessToken, CancellationToken token); /// /// Auswählen eines Angebotes zu einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AcceptPublicWalkRequestAsync(PublicWalkRequestAcceptDto requestDto, string accessToken, CancellationToken token); /// /// Stornieren einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CancelPublicWalkRequestAsync(PublicWalkRequestCancelDto requestDto, string accessToken, CancellationToken token); /// /// Holen der Antworten zu öffentlichen Anfragen vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkResponsesForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holen einer Antworten zu öffentlichen Anfragen vom Server /// /// Id der Antwort zur öffentlichen Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetPublicWalkResponseAsync(string publicWalkResponseId, string accessToken, CancellationToken token); /// /// Holen einer Antworten zu öffentlichen Anfragen vom Server /// /// Id der Antwort zur öffentlichen Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetPublicWalkResponseWithNamesAsync(string publicWalkResponseId, string accessToken, CancellationToken token); /// /// Holen einer Antworten zu öffentlichen Anfragen vom Server /// /// Id des AppUsers /// Id der öffentlichen Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetPublicWalkResponseForWalkerAsync(string appUserId, string publicWalkRequestId, string accessToken, CancellationToken token); /// /// Anlegen einer Antwort zu einer öffentlichen Anfrage am Server /// /// Antwort zur Öffentliche Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreatePublicWalkResponseAsync(PublicWalkResponseDto responseDto, string accessToken, CancellationToken token); /// /// Aktualisieren einer Antwort zu einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdatePublicWalkResponseAsync(PublicWalkResponseDto responseDto, string accessToken, CancellationToken token); /// /// Löschen einer Antwort zu einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeletePublicWalkResponseAsync(PublicWalkResponseDto responseDto, string appUserId, string accessToken, CancellationToken token); /// /// Holen von Antworten zu einer öffentlichen Anfrage vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPublicWalkresponsesAsync(PublicWalkResponseQueryDto query, string accessToken, CancellationToken token); /// /// Ablehnen eines Angebotes zu einer öffentlichen Anfrage am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeclinePublicWalkResponseAsync(PublicWalkResponseDeclineDto requestDto, string accessToken, CancellationToken token); /// /// Bearbeiten eines bereits gestellten Angebotes für eine offene Anfrage /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> EditPublicWalkResponseAsync(PublicWalkResponseEditDto requestDto, string accessToken, CancellationToken token); /// /// Stornieren eines bereits gestellten Angebotes für eine offene Anfrage /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CancelPublicWalkResponseAsync(PublicWalkResponseCancelDto requestDto, string accessToken, CancellationToken token); /// /// Holen der Walsk vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetWalksForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Anlegen eines Walks Anfrage am Server /// /// Walk /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateWalkAsync(WalkDto walkDto, string accessToken, CancellationToken token); /// /// Aktualisieren eines Walks am Server /// /// Walk DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdateWalkAsync(WalkDto walkDto, string accessToken, CancellationToken token); /// /// Löschen eines Walks am Server /// /// Walk DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteWalkAsync(WalkDto walkDto, string appUserId, string accessToken, CancellationToken token); /// /// Holen von Walks mit Namen vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetWalksWithNamesAsync(WalksQueryDto query, string accessToken, CancellationToken token); /// /// Gibt eine Liste der nächsten Walks, laufende, nicht abgeschlossene, nicht bezahlte usw. für einen Hundebesitzer zurück. /// /// Id des App-Users /// Datum ab dem gesucht /// Gewünschte Sprache /// Datensätze auslassen /// Datensätze nehmen /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetNextWalksOwnerAsync(string appUserId, DateTimeOffset date, string language, int take, int skip, string accessToken, CancellationToken token); /// /// Gibt eine Liste der nächsten Walks, laufende, nicht abgeschlossene, nicht bezahlte usw. für einen Walker zurück. /// /// Id des App-Users /// Datum ab dem gesucht /// Gewünschte Sprache /// Datensätze auslassen /// Datensätze nehmen /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetNextWalksWalkerAsync(string appUserId, DateTimeOffset date, string language, int take, int skip, string accessToken, CancellationToken token); /// /// Holen von Walks mit Namen vom Server. /// Sondersituation: Walker bekommen keine Walks unter dem Status Authorized zurück /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetWalksWithNamesWalkerAsync(WalksQueryDto query, string accessToken, CancellationToken token); /// /// Holen eines Walks mit Namen vom Server /// /// ID des Walks /// Gewünschte Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalkWithNamesAsync(string walkId, string language, string accessToken, CancellationToken token); /// /// Gibt einen Walk zurück, welcher einer öffentlichen Anfrage zugeordnet ist /// /// ID der öffentlichen Anfrage /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalkByPublicRequestAsync(string publicWalkRequestId, string accessToken, CancellationToken token); /// /// Stornieren eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CancelWalkAsync(WalkCancelDto requestDto, string accessToken, CancellationToken token); /// /// Starten eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> StartWalkAsync(WalkStartDto requestDto, string accessToken, CancellationToken token); /// /// abschließen eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CompleteWalkAsync(WalkCompleteDto requestDto, string accessToken, CancellationToken token); /// /// Bestätigen eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ConfirmWalkAsync(WalkConfirmDto requestDto, string accessToken, CancellationToken token); /// /// Bestätigen eines Walks am Server mit Rating /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ConfirmWalkWithRatingAsync(WalkConfirmWithRatingDto requestDto, string accessToken, CancellationToken token); /// /// Setzen des Zahlungsstatus eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> SetWalkPaymentStatusAsync(WalkPaymentStatusDto requestDto, string accessToken, CancellationToken token); /// /// Prüfen ob ein Walk für einen Zeitraum gebucht werden kann /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> IsWalkPossibleAsync(WalkPossibleDto requestDto, string accessToken, CancellationToken token); /// /// Anlegen eines Walks wenn DIREKT! buchen möglich ist. /// Wird online versucht und erst dann lokal gespeichert /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateWalkDirectAsync(WalkCreateDto requestDto, string accessToken, CancellationToken token); /// /// Anlegen eines Walks als Anfrage /// Wird online versucht und erst dann lokal gespeichert /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateWalkRequestAsync(WalkCreateDto requestDto, string accessToken, CancellationToken token); /// /// Akzeptieren eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AcceptWalkAsync(WalkAcceptDto requestDto, string accessToken, CancellationToken token); /// /// Ablehnen eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeclineWalkAsync(WalkDeclineDto requestDto, string accessToken, CancellationToken token); /// /// Reklamieren eines Walks am Server /// /// Anfrage DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ComplainWalkAsync(WalkComplaintCreateDto requestDto, string accessToken, CancellationToken token); /// /// Holen einer Reklamation zu einem Walk /// /// ID des Walks /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalkComplaintAsync(string walkId, string accessToken, CancellationToken token); #endregion #region Ratings /// /// Holen der Ratings vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetRatingsForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Gibt ein Rating basierend auf Abfragekriterien zurück /// /// Rating check DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetRatingExAsync(RatingCheckQueryDto ratingCheckDto, string accessToken, CancellationToken token); /// /// Gibt ein Rating basierend auf der ID zurück /// /// Id des Ratings /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetRatingAsync(string ratingId, string accessToken, CancellationToken token); /// /// Anlegen eines Ratings am Server /// /// Rating /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateRatingAsync(RatingDto ratingDto, string accessToken, CancellationToken token); /// /// Aktualisieren eines Ratings am Server /// /// Rating DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdateRatingAsync(RatingDto ratingDto, string accessToken, CancellationToken token); /// /// Löschen eines Ratings am Server /// /// Rating DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteRatingAsync(RatingDto ratingDto, string appUserId, string accessToken, CancellationToken token); /// /// Prüfen ob bereits ein Rating vorhanden ist /// /// Rating check DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> HasRatedAsync(RatingCheckQueryDto ratingCheckDto, string accessToken, CancellationToken token); /// /// Prüfen ob ein Rating vorgenommen werden kann /// /// Rating check DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CanRateAsync(RatingCheckQueryDto ratingCheckDto, string accessToken, CancellationToken token); /// /// Holen von Ratings mit Namen vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetRatingsWithNamesAsync(RatingsQueryDto query, string accessToken, CancellationToken token); #endregion #region Feedback /// /// Anlegen eines Feedbacks am Server /// /// Feedback /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateFeedbackAsync(AppFeedbackCreateDto dto, string accessToken, CancellationToken token); #endregion #region Favourites /// /// Holen der Favoriten vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetFavouritesForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Anlegen eines Favoriten am Server /// /// Favorit /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> CreateFavouriteAsync(FavouriteDto favouriteDto, string accessToken, CancellationToken token); /// /// Aktualisieren eines Favoriten am Server /// /// Favorit DTO /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UpdateFavouriteAsync(FavouriteDto favouriteDto, string accessToken, CancellationToken token); /// /// Löschen eines Favoriten am Server /// /// Favorit DTO /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> DeleteFavouriteAsync(FavouriteDto favouriteDto, string appUserId, string accessToken, CancellationToken token); /// /// Holen der Favoriten für einen Benutzer. Wird mit einem Objekt-Typen verwendet /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetFavouritesListAsync(FavouriteListQueryDto query, string accessToken, CancellationToken token); #endregion #region Pushnotifications /// /// Registrieren / Aktualisieren eines Gerätes für Pushnotifications /// /// Geräte-Informationen /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> RegisterPushnotificationsAsync(DeviceInstallationDto deviceInstallation, string accessToken, CancellationToken token); /// /// Deregistrieren eines Gerätes für Pushnotifications /// /// Id der Installation /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> UnregisterPushnotificationsAsync(string installationId, string accessToken, CancellationToken token); #endregion #region Wallets /// /// Holen der Wallets eines AppUsers vom Server /// /// Id des AppUsers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetWalletsAsync(string appUserId, string accessToken, CancellationToken token); /// /// Gibt den Saldo eines Wallets zurück /// /// Id des App-Users /// Typ des Wallets /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetWalletBalanceAsync(string appUserId, WalletType walletType, string accessToken, CancellationToken token); #endregion #region Bankkonten /// /// Holt ein Bankkonto für einen App-User vom Server /// /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetBankAccountsAsync(string appUserId, string accessToken, CancellationToken token); /// /// Anlegen oder Bearbeiten eines Bankkontos /// /// Bankkonto /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult mit einem AppUser der die entsprechende BankId gesetzt hat Task> CreateOrUpdateBankAccountAsync(BankAccountDto bankAccount, string accessToken, CancellationToken token); #endregion #region Transaktionsgebühren /// /// Holen der Transaktionsgebühren vom Server. /// /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetTransactionFeesAsync(DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); #endregion #region Payment /// /// Authorisierung der Bezahlung eines Walks mit dem Guthaben eines Wallets /// Das Geld wird vom Guthabenkonto auf das Transaktions-Konto gelegt /// /// Id des App-Users /// Id des Walks /// Zu zahlender Bertrag /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AuthorizeWalkWithCreditAsync(string appUserId, string walkId, decimal ammount, string accessToken, CancellationToken token); /// /// Authorisierung der Bezahlung eines Walks komplett mit einem Gutschein /// /// Id des Gutscheins /// Code des Gutscheins /// Id des App-Users /// Id des Walks /// Zu zahlender Bertrag /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> AuthorizeWalkWithVoucherAsync(string voucherId, string voucherCode, string appUserId, string walkId, decimal ammount, string accessToken, CancellationToken token); /// /// Einzahlen einer Summe auf das Transaktions-Konto eines App-Users mit Bezug auf einen Walk. /// Es können gebühren sofort auf das Transaktions-Konto des Mandanten abgeführt werden /// /// Id des App-Users /// Id des Walks /// Zu zahlender Bertrag /// Anfallende Gebühren /// Betrag der zusätzlich vom Guthabenkonto bezahlt werden muss /// Typ der Einzahlung /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult mit dem ReturnUrl, wenn erfolgreich Task> PayInAsync(string appUserId, string walkId, decimal ammount, decimal fees, decimal fromCredit, PayInType payInType, string accessToken, CancellationToken token); #endregion #region KYC /// /// Holen der letzten KYC-Dokumente eines App-Users /// /// Id des App-Users /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult mit dem aktuell gültigen KYC-Dokument oder null, wenn keines vorhanden Task> GetLatestKycDocumentAsync(string appUserId, string accessToken, CancellationToken token); /// /// KYC-Dokument für einen App-User erstellen mit einer Seite /// /// Id des App-Users /// Dokument-Quelle /// Dateiname /// Datei als byte-Array /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult mit dem aktuell erstellten KYC-Dokument Task> CreateKycDocumentAsync(string appUserId, IdentityDocumentSource source, string fileOneName, byte[] fileOne, string accessToken, CancellationToken token); /// /// KYC-Dokument für einen App-User erstellen mit zwei Seiten /// /// Id des App-Users /// Dokument-Quelle /// Dateiname Datei 1 /// Datei 1 als byte-Array /// Dateiname Datei 2 /// Datei 2 als byte-Array /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult mit dem aktuell erstellten KYC-Dokument Task> CreateKycDocumentAsync(string appUserId, IdentityDocumentSource source, string fileOneName, byte[] fileOne, string fileTwoName, byte[] fileTwo, string accessToken, CancellationToken token); #endregion #region Payouts /// /// Holen der Auszahlungen vom Server /// /// Id des AppUsers /// Wann wurden das letzte mal Daten erfolgreich geholt? Wenn null, dann alle Daten /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task>> GetPayoutsForSyncAsync(string appUserId, DateTimeOffset? lastUpdate, string accessToken, CancellationToken token); /// /// Holen von Auszahlungen vom Server. /// /// Abfrageobjekt /// Aktuelles Accesstoken /// CancellationToken /// ListCommunicationResult Task>> GetPayoutsAsync(PayoutQueryDto query, string accessToken, CancellationToken token); /// /// Erstellen einer Auszahlung /// /// Id des App-Users /// Betrag der ausgezahlt werden soll /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CreatePayoutAsync(string appUserId, decimal ammount, string accessToken, CancellationToken token); /// /// Gibt eine Auszahlung eines App-Users zurück /// /// Id des App-Users /// Id der Auszahlung /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetPayoutAsync(string appUserId, string payoutId, string accessToken, CancellationToken token); #endregion #region AppVersion /// /// Holen der aktuellen Version am Server für die gewählte Plattform /// /// Plattform /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CheckCurrentAppVersionAsync(PlatformDto platform, string language, string accessToken, CancellationToken token); /// /// Holen der aktuellen Version am Server für die gewählte Plattform /// /// Plattform /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetCurrentAppVersionAsync(PlatformDto platform, string language, string accessToken, CancellationToken token); #endregion #region Vouchers - Gutscheine /// /// Validieren eines Gutschein-Codes für einen AppUser /// /// Gutscheincode /// Id des AppUsers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CheckVoucherCodeAsync(string voucherCode, string appUserId, string accessToken, CancellationToken token); /// /// Versucht einen Gutscheincode mit Hilfe eines QR-Codes zu holen /// /// QR-Code in Text /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> GetVoucherCodeByQrCode(string qrCode, string accessToken, CancellationToken token); /// /// Versucht einen Gutschein zu reservieren /// /// Id des Gutscheins /// Code des Gutscheins /// Id des AppUsers /// Id des Walks /// Betrag - kann kleiner Gutscheinwert sein /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> ReserveVoucherAsync(string voucherId, string code, string appUserId, string walkId, decimal ammount, string accessToken, CancellationToken token); /// /// Stornieren eines Gutscheins /// /// Id des Gutscheins /// Id des AppUsers /// Id des Walks /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CancelVoucherAsync(string voucherId, string appUserId, string walkId, string accessToken, CancellationToken token); #endregion #region Abos - Subscriptions /// /// 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 und 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 der 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); #endregion } /// /// Ergebnis einer Kommunikation mit dem Server /// /// Typ des Rückgabewertes public class CommunicationResult { /// /// Erfolgreich? /// public bool Success { get; set; } /// /// Wenn nicht erfolgreich, Fehlermeldung /// public string ErrorMessage { get; set; } /// /// Der original Fehlercode, falls basierend darauf noch Aktionen folgen müssen /// public CommunicationErrors ErrorCode { get; set; } /// /// Wert wenn erfolgreich /// public T Value { get; set; } public CommunicationResult() { Success = false; ErrorMessage = string.Empty; ErrorCode = CommunicationErrors.None; } } /// /// Ergebnis einer Kommunikation mit dem Server für Listen. /// Beinhaltet zusätzliche Infos für das Paging /// /// Typ des Rückgabewertes public class ListCommunicationResult : CommunicationResult { /// /// Gesamt verfügbare Datensätze /// public int Total { get; set; } /// /// Effektiv genommen - kann gegenüber Anfrage geändert werden, wenn weniger Datensätze da sind /// public int Take { get; set; } /// /// Effektiv ausgelassen - kann gegenüber Abfrage verändert werden, wenn weniger Datensätze /// public int Skip { get; set; } public ListCommunicationResult() { Total = 0; Skip = -1; Take = -1; } } }