gehgassi_app/gehGassiApp/gehGassiApp.Core/Interfaces/IPublicWalkRequestService.cs

173 lines
12 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.Common;
using gehGassiApp.Domain.Walks;
namespace gehGassiApp.Core.Interfaces
{
/// <summary>
/// Schnittsstellenbeschreibung eines Service der die Verwaltung von öffentlichen Anfragen ermöglicht
/// </summary>
public interface IPublicWalkRequestService : IService<PublicWalkRequest>, ISyncPushPullService<PublicWalkRequest>
{
/// <summary>
/// Zählt die Anzahl der öffentlichen Anfragen für den aktuellen Benutzer
/// </summary>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>Anzahl öffentliche Anfragen</returns>
Task<CommunicationResult<int>> CountPublicWalkRequestsAsync(string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste von öffentlichen Anfragen zurück
/// </summary>
/// <param name="ignoreId">Id die ignoriert werden soll (DogOwnerId)</param>
/// <param name="dogOwnerId">Optional: Id des Hundebesitzers</param>
/// <param name="dogWalkerId">Optional: Id des Hundeausführers</param>
/// <param name="status">Status der Ausschreibung oder NULL für alle</param>
/// <param name="sortOrders">Liste von Sortierangaben</param>
/// <param name="location">Aktuelle Position</param>
/// <param name="take">Wie viele Listungen sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
/// <param name="skip">Wie viele Listungen sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
/// <param name="appMode">Akteuller Modus der App</param>
/// <param name="language">Gewählte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>ListCommunicationResult</returns>
Task<ListCommunicationResult<List<PublicWalkRequestWithNames>>> GetAsync(string ignoreId, string dogOwnerId, string dogWalkerId, PublicWalkRequestStatus? status, List<DynamicSortOrder> sortOrders, LocationDto location, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste von öffentlichen Anfragen zurück erweitert
/// </summary>
/// <param name="ignoreId">Id die ignoriert werden soll (DogOwnerId)</param>
/// <param name="dogOwnerId">Optional: Id des Hundebesitzers</param>
/// <param name="dogWalkerId">Optional: Id des Hundeausführers</param>
/// <param name="status">Status der Ausschreibung oder NULL für alle</param>
/// <param name="maxRadius">Maximaler Radius</param>
/// <param name="type">Gesuchter Typ oder NULL für alle</param>
/// <param name="minPrice">Mindestpreis</param>
/// <param name="sortOrders">Liste von Sortierangaben</param>
/// <param name="location">Aktuelle Position</param>
/// <param name="take">Wie viele Listungen sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
/// <param name="skip">Wie viele Listungen sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
/// <param name="appMode">Akteuller Modus der App</param>
/// <param name="language">Gewählte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>ListCommunicationResult</returns>
Task<ListCommunicationResult<List<PublicWalkRequestWithNames>>> GetExAsync(string ignoreId, string dogOwnerId, string dogWalkerId, PublicWalkRequestStatus? status, double maxRadius, PublicWalkRequestType? type, decimal minPrice, List<DynamicSortOrder> sortOrders, LocationDto location, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste von öffentlichen Anfragen zurück mit einem Antwort-Status für einen DogWalker
/// </summary>
/// <param name="ignoreId">Id die ignoriert werden soll (DogOwnerId)</param>
/// <param name="dogOwnerId">Optional: Id des Hundebesitzers</param>
/// <param name="dogWalkerId">Optional: Id des Hundeausführers</param>
/// <param name="status">Status der Ausschreibung oder null für alle</param>
/// <param name="mustHaveResponse">es muss ein Angebot vom Dogwalker vorhanden sein</param>
/// <param name="sortOrders">Liste von Sortierangaben</param>
/// <param name="location">Aktuelle Position</param>
/// <param name="includeBlockedAndLocked">Sollten blockierte unnd/oder gesperrte Benutzer in die Liste eingefügt werden?</param>
/// <param name="take">Wie viele Listungen sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
/// <param name="skip">Wie viele Listungen sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
/// <param name="appMode">Akteuller Modus der App</param>
/// <param name="language">Gewählte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <param name="targetDogWalkerId">Id des Dogwalkers der die Anfrage absetzt</param>
/// <param name="responseStatus">Ziel Response-Status oder Null für alle</param>
/// <returns>ListCommunicationResult</returns>
Task<ListCommunicationResult<List<PublicWalkRequestWithNamesAndResponseStatus>>> GetWithResponseStatusAsync(string ignoreId, string dogOwnerId, string dogWalkerId, PublicWalkRequestStatus? status, string targetDogWalkerId, PublicWalkResponseStatus? responseStatus, bool mustHaveResponse, List<DynamicSortOrder> sortOrders, LocationDto location, bool includeBlockedAndLocked, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste von öffentlichen Anfragen zurück mit einem Antwort-Status für einen DogWalker mit erweiterten Suchparametern
/// </summary>
/// <param name="ignoreId">Id die ignoriert werden soll (DogOwnerId)</param>
/// <param name="dogOwnerId">Optional: Id des Hundebesitzers</param>
/// <param name="dogWalkerId">Optional: Id des Hundeausführers</param>
/// <param name="status">Status der Ausschreibung oder null für alle</param>
/// <param name="mustHaveResponse">Es muss ein Angebot vom DogWalker vorhanden sein</param>
/// <param name="searchText">Suchtext in Hundename, Besitzername oder Stadt</param>
/// <param name="sortOrders">Liste von Sortierangaben</param>
/// <param name="location">Aktuelle Position</param>
/// <param name="includeBlockedAndLocked">Sollten blockierte unnd/oder gesperrte Benutzer in die Liste eingefügt werden?</param>
/// <param name="take">Wie viele Listungen sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
/// <param name="skip">Wie viele Listungen sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
/// <param name="appMode">Akteuller Modus der App</param>
/// <param name="language">Gewählte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <param name="targetDogWalkerId">Id des Dogwalkers der die Anfrage absetzt</param>
/// <param name="responseStatus">Ziel Response-Status oder Null für alle</param>
/// <param name="maxRadius">Maximaler Radius</param>
/// <param name="type">Gesuchter Typ oder null für alle</param>
/// <param name="minPrice">Mindestpreis</param>
/// <returns>ListCommunicationResult</returns>
Task<ListCommunicationResult<List<PublicWalkRequestWithNamesAndResponseStatus>>> GetWithResponseStatusExAsync(string ignoreId, string dogOwnerId, string dogWalkerId, PublicWalkRequestStatus? status, string targetDogWalkerId, PublicWalkResponseStatus? responseStatus, double maxRadius, PublicWalkRequestType? type, decimal minPrice, bool mustHaveResponse, string searchText, List<DynamicSortOrder> sortOrders, LocationDto location, bool includeBlockedAndLocked, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Anzahl von öffentlichen Anfragen zurück, absteigend nach Datum sortiert
/// </summary>
/// <param name="take">Wie viele sollen genommen werden?</param>
/// <returns>Liste von öffntlichen Anfragen</returns>
Task<List<PublicWalkRequest>> GetLatestAsync(int take);
/// <summary>
/// Gibt eine Anzahl von öffentlichen Anfragen zurück, absteigend nach Datum sortiert
/// </summary>
/// <param name="appUserId">Id des App-Users</param>
/// <param name="language">Gewünschte Sprache</param>
/// <param name="take">Wie viele sollen genommen werden?</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>Liste von öffntlichen Anfragen</returns>
Task<List<PublicWalkRequestWithNames>> GetLatestWithNamesAsync(string appUserId, string language, int take, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine öffentliche Anfrage zurück
/// </summary>
/// <param name="id">Id der Anfrage</param>
/// <param name="language">Gewünschte Sprache</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>Öffentliche Anfrage oder null, wenn nicht gefunden</returns>
Task<PublicWalkRequestWithNames> GetWithNamesAsync(string id, string language, string accessToken, CancellationToken token);
/// <summary>
/// Hinzufügen einer öffentlichen Anfrage
/// </summary>
/// <param name="request">Öffentliche Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>PublicWalkRequest</returns>
Task<PublicWalkRequest> AddAsync(PublicWalkRequest request, string accessToken, CancellationToken token);
/// <summary>
/// Stornieren einer öffentlichen Anfrage
/// </summary>
/// <param name="publicWalkRequestId">Id der Öffentliche Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>PublicWalkRequest</returns>
Task<bool> CancelAsync(string publicWalkRequestId, string accessToken, CancellationToken token);
/// <summary>
/// Akzeptieren eines Angebotes zu einer öffnentlichen Anfrage
/// </summary>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <param name="publicWalkResponseId">Id des akzeptierten Angebotes</param>
/// <param name="appUserId">Id des Hundebesitzers</param>
/// <param name="paymentType">Zahlungsart für den Walk</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>Erstellter Walk wenn erfolgreich, false sonst</returns>
Task<Walk> AcceptResponseAsync(string publicWalkRequestId, string publicWalkResponseId, string appUserId, WalkPaymentType? paymentType, string accessToken, CancellationToken token);
}
}