gehgassi_app/gehGassiApp/gehGassiApp.Core/Interfaces/IPublicWalkResponseService.cs

121 lines
6.6 KiB
C#

using gehGassiApp.Core.Interfaces.Synchronization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
using gehGassiApp.Domain.Common;
using gehGassiApp.Domain.Walks;
namespace gehGassiApp.Core.Interfaces
{
/// <summary>
/// Schnittsstellenbeschreibung eines Service der die Verwaltung von Antworten auf öffentlichen Anfragen ermöglicht
/// </summary>
public interface IPublicWalkResponseService : IService<PublicWalkResponse>, ISyncPushPullService<PublicWalkResponse>
{
/// <summary>
/// Gibt eine Liste von Antworten zu einer öffentlichen Anfragen zurück
/// </summary>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</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<PublicWalkResponseWithNames>>> GetListAsync(string publicWalkRequestId, LocationDto location, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
/// <summary>
/// Holen einer Antworten zu öffentlichen Anfragen
/// </summary>
/// <param name="publicWalkResponseId">Id der öffentlichen Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>CommunicationResult</returns>
Task<PublicWalkResponse> GetAsync(string publicWalkResponseId, string accessToken, CancellationToken token);
/// <summary>
/// Holen einer Antworten zu öffentlichen Anfragen
/// </summary>
/// <param name="publicWalkResponseId">Id der öffentlichen Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>CommunicationResult</returns>
Task<PublicWalkResponseWithNames> GetWithNamesAsync(string publicWalkResponseId, string accessToken, CancellationToken token);
/// <summary>
/// Holen einer Antworten zu öffentlichen Anfragen
/// </summary>
/// <param name="appUserId">Id des AppUsers</param>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>CommunicationResult</returns>
Task<PublicWalkResponse> GetForWalkerAsync(string appUserId, string publicWalkRequestId, string accessToken, CancellationToken token);
/// <summary>
/// Hinzufügen einer Antwort zu einer öffentlichen Anfrage
/// </summary>
/// <param name="response">Antwort zur Öffentliche Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>PublicWalkRequest</returns>
Task<CommunicationResult<PublicWalkResponse>> AddAsync(PublicWalkResponse response, string accessToken, CancellationToken token);
/// <summary>
/// Prüft in der lokalen DB ob ein Walker für eine öffentliche Anfrage ein Angebot abgegeben hat
/// </summary>
/// <param name="appUserId">Id des Dogwalkers</param>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <returns>true wenn es ein Angebot gibt, false sonst</returns>
Task<bool> HasResponseAsync(string appUserId, string publicWalkRequestId);
/// <summary>
/// Aktualisieren einer Antwort zu einer öffentlichen Anfrage
/// </summary>
/// <param name="response">Antwort zur Öffentliche Anfrage</param>
/// <param name="updateStatus">Soll der Status aktualisiert werden?</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>PublicWalkRequest</returns>
Task<bool> UpdateAsync(PublicWalkResponse response, bool updateStatus, string accessToken, CancellationToken token);
/// <summary>
/// Ablehnen eines Angebotes zu einer öffentlichen Anfrage
/// </summary>
/// <param name="responseId">Id der Antwort</param>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<bool> DeclineAsync(string responseId, string publicWalkRequestId, string accessToken, CancellationToken token);
/// <summary>
/// Bearbeiten eines bereits gestellten Angebotes zu einer öffentlichen Anfrage
/// </summary>
/// <param name="responseId">Id der Antwort</param>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <param name="price">Neuer Preis</param>
/// <param name="info">Info zum Angebot</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<CommunicationResult<bool>> EditAsync(string responseId, string publicWalkRequestId, decimal price, string info, string accessToken, CancellationToken token);
/// <summary>
/// Bearbeiten eines bereits gestellten Angebotes zu einer öffentlichen Anfrage
/// </summary>
/// <param name="responseId">Id der Antwort</param>
/// <param name="publicWalkRequestId">Id der öffentlichen Anfrage</param>
/// <param name="cancellationReason">Grund für die Stornierung</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>true wenn erfolgreich, false sonst</returns>
Task<CommunicationResult<bool>> CancelAsync(string responseId, string publicWalkRequestId, string cancellationReason, string accessToken, CancellationToken token);
}
}