319 lines
19 KiB
C#
319 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Dto.Common;
|
|
using gehGassi.Dto.Walks;
|
|
using gehGassiApp.Core.Interfaces.Synchronization;
|
|
using gehGassiApp.Domain.Common;
|
|
using gehGassiApp.Domain.Walks;
|
|
|
|
namespace gehGassiApp.Core.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Walks ermöglicht
|
|
/// </summary>
|
|
public interface IWalkService : IService<Walk>, ISyncPushPullService<Walk>
|
|
{
|
|
/// <summary>
|
|
/// Gibt einen Walk mit Namen aufgelöst zurück. Kommt vom Server
|
|
/// </summary>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>WalkWithNames oder null, wenn nicht gefunden</returns>
|
|
Task<CommunicationResult<WalkWithNames>> GetWalkWithNamesAsync(string walkId, string language, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt den nächsten Walk für einen Hundebesitzer zurück
|
|
/// </summary>
|
|
/// <param name="ownerId">Id des Hundebesitzers</param>
|
|
/// <param name="date">Datum ab wann gesucht werden soll. Normalerweise "Jetzt"</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="appMode">Aktueller appMode</param>
|
|
/// <param name="location">Aktuelle Position</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Nächster Walk oder null, wenn keiner vorhanden</returns>
|
|
Task<CommunicationResult<WalkWithNames>> GetNextWalkForOwnerAsync(string ownerId, DateTimeOffset date, string language, AppMode appMode, LocationDto location, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt den nächsten Walk für einen Dogwalker zurück
|
|
/// </summary>
|
|
/// <param name="walkerId">Id des Hundebesitzers</param>
|
|
/// <param name="date">Datum ab wann gesucht werden soll. Normalerweise "Jetzt"</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="appMode">Aktueller appMode</param>
|
|
/// <param name="location">Aktuelle Position</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Nächster Walk oder null, wenn keiner vorhanden</returns>
|
|
Task<CommunicationResult<WalkWithNames>> GetNextWalkForWalkerAsync(string walkerId, DateTimeOffset date, string language, AppMode appMode, LocationDto location, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt Walks vom Server zurück
|
|
/// </summary>
|
|
/// <param name="dogOwnerId">Id des Hundebesitzers - angeben wenn für Hundebesitzer</param>
|
|
/// <param name="dogWalkerId">Id des Dogwalkers - angeben wenn für DogWalker</param>
|
|
/// <param name="date">Datum ab wann gesucht werden soll. Normalerweise "Jetzt", leer für alle</param>
|
|
/// <param name="status">Status des Walks, NULL wenn alle</param>
|
|
/// <param name="serviceType">Service Type, NULL wenn alle</param>
|
|
/// <param name="paymentStatus">Zahlungsstatus, NULL wenn alle</param>
|
|
/// <param name="dogFilter">Optinal: Filter Hund</param>
|
|
/// <param name="walkerFilter">Optional: Filter Walker</param>
|
|
/// <param name="ownerFilter">Optional: Filter Owner</param>
|
|
/// <param name="ignoreCancelled">Stornierte ignorieren</param>
|
|
/// <param name="ignoreRequested">Sollen Walks die noch eine Anfrage sind, ohne Akzeptiert oder Agelehnt ignorniert werden?</param>
|
|
/// <param name="ignoreDeclined">Sollen abgelehnte Anfragen ignoriert werden?</param>
|
|
/// <param name="sortOrders">Liste von Sortierangaben</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="appMode">Aktueller appMode</param>
|
|
/// <param name="location">Aktuelle Position</param>
|
|
/// <param name="take">Wie viele Walks sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="skip">Wie viele Walks sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Nächster Walk oder null, wenn keiner vorhanden</returns>
|
|
Task<ListCommunicationResult<List<WalkWithNames>>> GetWalksAsync(string dogOwnerId, string dogWalkerId, DateTimeOffset? date, WalkStatus? status, WalkServiceType? serviceType, PaymentStatus? paymentStatus, string dogFilter, string walkerFilter, string ownerFilter, bool ignoreCancelled, bool ignoreRequested, bool ignoreDeclined, List<DynamicSortOrder> sortOrders, string language, AppMode appMode, LocationDto location, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt Walks vom Server zurück.
|
|
/// Sondersituation: Für Walker werden nur Walks mit einem Paymentstatus größer gleich Authorized zurück
|
|
/// </summary>
|
|
/// <param name="dogOwnerId">Id des Hundebesitzers - angeben wenn für Hundebesitzer</param>
|
|
/// <param name="dogWalkerId">Id des Dogwalkers - angeben wenn für DogWalker</param>
|
|
/// <param name="date">Datum ab wann gesucht werden soll. Normalerweise "Jetzt", leer für alle</param>
|
|
/// <param name="status">Status des Walks, NULL wenn alle</param>
|
|
/// <param name="serviceType">Service Type, NULL wenn alle</param>
|
|
/// <param name="paymentStatus">Zahlungsstatus, NULL wenn alle</param>
|
|
/// <param name="dogFilter">Optinal: Filter Hund</param>
|
|
/// <param name="walkerFilter">Optional: Filter Walker</param>
|
|
/// <param name="ownerFilter">Optional: Filter Owner</param>
|
|
/// <param name="ignoreCancelled">Stornierte ignorieren</param>
|
|
/// <param name="ignoreRequested">Sollen Walks die noch eine Anfrage sind, ohne Akzeptiert oder Agelehnt ignorniert werden?</param>
|
|
/// <param name="ignoreDeclined">Sollen abgelehnte Anfragen ignoriert werden?</param>
|
|
/// <param name="sortOrders">Liste von Sortierangaben</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="appMode">Aktueller appMode</param>
|
|
/// <param name="location">Aktuelle Position</param>
|
|
/// <param name="take">Wie viele Walks sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="skip">Wie viele Walks sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Nächster Walk oder null, wenn keiner vorhanden</returns>
|
|
Task<ListCommunicationResult<List<WalkWithNames>>> GetWalksWalkerAsync(string dogOwnerId, string dogWalkerId, DateTimeOffset? date, WalkStatus? status, WalkServiceType? serviceType, PaymentStatus? paymentStatus, string dogFilter, string walkerFilter, string ownerFilter, bool ignoreCancelled, bool ignoreRequested, bool ignoreDeclined, List<DynamicSortOrder> sortOrders, string language, AppMode appMode, LocationDto location, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der nächsten Walks, laufende, nicht abgeschlossene, nicht bezahlte usw. für einen Hundebesitzer zurück.
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="date">Datum ab dem gesucht</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="skip">Datensätze auslassen</param>
|
|
/// <param name="take">Datensätze nehmen</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>ListCommunicationResult</returns>
|
|
Task<ListCommunicationResult<List<WalkWithNames>>> GetNextWalksOwnerAsync(string appUserId, DateTimeOffset date, string language, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der nächsten Walks, laufende, nicht abgeschlossene, nicht bezahlte usw. für einen Walker zurück.
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="date">Datum ab dem gesucht</param>
|
|
/// <param name="language">Gewünschte Sprache</param>
|
|
/// <param name="skip">Datensätze auslassen</param>
|
|
/// <param name="take">Datensätze nehmen</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>ListCommunicationResult</returns>
|
|
Task<ListCommunicationResult<List<WalkWithNames>>> GetNextWalksWalkerAsync(string appUserId, DateTimeOffset date, string language, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt einen Walk zurück, welcher einer öffentlichen Anfrage zugeordnet ist - nur Lokal
|
|
/// </summary>
|
|
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
|
|
/// <returns>Walk oder null, wenn nicht gefunden</returns>
|
|
Task<Walk> GetWalkByPublicRequestAsync(string publicWalkRequestId);
|
|
|
|
/// <summary>
|
|
/// Gibt einen Walk zurück, welcher einer öffentlichen Anfrage zugeordnet ist - nur online
|
|
/// </summary>
|
|
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
|
|
/// <returns>Walk oder null, wenn nicht gefunden</returns>
|
|
Task<CommunicationResult<Walk>> GetWalkByPublicRequestAsync(string publicWalkRequestId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Stornieren eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="cancellationSource">Quelle der Stornierung</param>
|
|
/// <param name="cancellationReason">Grund der Stornierung</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> CancelAsync(string walkId, CancellationSource cancellationSource, string cancellationReason, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Starten eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> StartAsync(string walkId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Abschließen eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="defactation">Kotabsatz?</param>
|
|
/// <param name="completedInfo">Info des Walkers zum abschluss</param>
|
|
/// <param name="ratingPoints">Punkte für die Bewertung des Walks</param>
|
|
/// <param name="ratingComment">Anmerkungen zum Rating des Walks</param>
|
|
/// <param name="ratingDogsPoints">Punkte für die Bewertung des Hundes / der Hunde</param>
|
|
/// <param name="ratingDogsComment">Anmerkung zum Rating des Hundes / der Hunde</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> CompleteAsync(string walkId, bool defactation, string completedInfo, decimal ratingPoints, string ratingComment, decimal ratingDogsPoints, string ratingDogsComment, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Zahlungsstatus eines Walks setzen
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="paymentStatus">Zahlungsstatus der gesetzt werden soll</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> SetPaymentStatusAsync(string walkId, PaymentStatus paymentStatus, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Prüfen ob ein Walk für einen DogWalker in einem Zeitraum gebucht werden kann
|
|
/// </summary>
|
|
/// <param name="dogWalkerId">Id des DogWalkers</param>
|
|
/// <param name="start">Start</param>
|
|
/// <param name="end">Ende</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn verfügbar, false sonst</returns>
|
|
Task<bool> IsWalkPossibleAsync(string dogWalkerId, DateTimeOffset start, DateTimeOffset end, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Anlegen eines Walks wenn DIREKT! buchen möglich ist.
|
|
/// Wird online versucht und erst dann lokal gespeichert
|
|
/// </summary>
|
|
/// <param name="requestDto">WalkCreateDto</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Angelegter Walk oder null, wenn nicht erfolgreich</returns>
|
|
Task<CommunicationResult<Walk>> CreateWalkDirectAsync(WalkCreateDto requestDto, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Anlegen eines Walks als Anfrage
|
|
/// Wird online versucht und erst dann lokal gespeichert
|
|
/// </summary>
|
|
/// <param name="requestDto">WalkCreateDto</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Angelegter Walk oder null, wenn nicht erfolgreich</returns>
|
|
Task<CommunicationResult<Walk>> CreateWalkRequestAsync(WalkCreateDto requestDto, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Akzeptieren eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> AcceptAsync(string walkId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Ablehnen eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="declineReason">Grund der Ablehnung</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> DeclineAsync(string walkId, string declineReason, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt zurück ob ein Walker Anfragen hat
|
|
/// </summary>
|
|
/// <param name="dogWalkerId">Id des Walkers</param>
|
|
/// <returns>true wenn ja, false sonst</returns>
|
|
Task<bool> HasRequestedAsync(string dogWalkerId);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste von Walks zurück, welche gleich gestartet werden sollen
|
|
/// </summary>
|
|
/// <param name="appUserId">ID des AppUsers</param>
|
|
/// <param name="date">Datum für den Vergleich</param>
|
|
/// <returns>Liste von Walks die gestartet werden sollen</returns>
|
|
Task<List<Walk>> GetWalksToStartAsync(string appUserId, DateTimeOffset date);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste von Walks zurück, welche beendet werden sollen
|
|
/// </summary>
|
|
/// <param name="appUserId">ID des App-Users</param>
|
|
/// <param name="date">Datum für den Vergleich</param>
|
|
/// <returns>Liste von Walks die gestartet werden sollen</returns>
|
|
Task<List<Walk>> GetWalksToCompleteAsync(string appUserId, DateTimeOffset date);
|
|
|
|
/// <summary>
|
|
/// Aktualisieren des Zahlungsstatus eines Walks in der lokalen DB
|
|
/// </summary>
|
|
/// <param name="walkId">Id des Wals</param>
|
|
/// <param name="paymentStatus">Zu setzender Zahlungsstatus</param>
|
|
/// <param name="updatedAt">Datum Aktualisierung</param>
|
|
/// <returns>Walk oder null, wenn nicht gefunden</returns>
|
|
Task<Walk> SetPaymentStatusLocalAsync(string walkId, PaymentStatus paymentStatus, DateTimeOffset updatedAt);
|
|
|
|
/// <summary>
|
|
/// Bestätigen eines Walks. Löst die Bezahlung für einen Walker aus. Geht nur Online!
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des Hundebesitzers</param>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit aktualisierten Walk</returns>
|
|
Task<CommunicationResult<Walk>> ConfirmAsync(string appUserId, string walkId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Bestätigen eines Walks mit Rating. Löst die Bezahlung für einen Walker aus. Geht nur Online!
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des Hundebesitzers</param>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="ratingPoints">Punkte für das Rating</param>
|
|
/// <param name="ratingInfo">Anmerkungen zum Rating</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit aktualisierten Walk</returns>
|
|
Task<CommunicationResult<Walk>> ConfirmWithRatingAsync(string appUserId, string walkId, decimal ratingPoints, string ratingInfo, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Reklamieren eines Walks
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="type">Typ der Reklamation</param>
|
|
/// <param name="complainReason">Grund der Reklamation als Text</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<CommunicationResult<bool>> ComplainAsync(string walkId, WalkComplaintType type, string complainReason, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Holen einer Reklamation zu einem Walk
|
|
/// </summary>
|
|
/// <param name="walkId">ID des Walks</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<WalkComplaint>> GetWalkComplaintAsync(string walkId, string accessToken, CancellationToken token);
|
|
}
|
|
}
|