201 lines
10 KiB
C#
201 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Dto;
|
|
using gehGassi.Dto.Common;
|
|
using gehGassi.Dto.DogWalkers;
|
|
using gehGassiApp.Core.Interfaces.Synchronization;
|
|
using gehGassiApp.Domain.Common;
|
|
using gehGassiApp.Domain.Users;
|
|
|
|
namespace gehGassiApp.Core.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung für einen Service der die Verwaltung des Benutzers ermöglicht
|
|
/// </summary>
|
|
public interface IUserService : IService<User>, ISyncPushPullService<AppUser>
|
|
{
|
|
/// <summary>
|
|
/// Gibt den aktuellen Benutzer zurück
|
|
/// </summary>
|
|
/// <returns>Aktueller Benutzer oder null, wenn noch keiner vorhanden</returns>
|
|
Task<User> GetAsync();
|
|
|
|
/// <summary>
|
|
/// Hinzufügen oder aktualisieren des Benutzers
|
|
/// </summary>
|
|
/// <param name="user">Benutzer der hinzugefügt oder aktualisiert werden soll</param>
|
|
/// <returns>User</returns>
|
|
Task<User> CreateOrUpdateAsync(User user);
|
|
|
|
/// <summary>
|
|
/// Prüft für einen übergebenen Benutzernamen ob es sich um den gespeicherten Benutzer handelt
|
|
/// </summary>
|
|
/// <param name="userName">Benutzername (E-Mail Adresse)</param>
|
|
/// <returns>UserCheckResult</returns>
|
|
Task<UserCheckResult> CheckAsync(string userName);
|
|
|
|
/// <summary>
|
|
/// Gibt den aktuellen App-User zurück.
|
|
/// </summary>
|
|
/// <returns>AppUser oder null wenn nicht gefunden</returns>
|
|
Task<AppUser> GetAppUserAsync();
|
|
|
|
/// <summary>
|
|
/// Gibt den aktuellen App-User zurück.
|
|
/// </summary>
|
|
/// <param name="noTracking">Tracking</param>
|
|
/// <returns>AppUser oder null wenn nicht gefunden</returns>
|
|
Task<AppUser> GetAppUserAsync(bool noTracking);
|
|
|
|
/// <summary>
|
|
/// Gibt den aktuellen App-User zurück.
|
|
/// Versucht auch online - wenn lokal nicht vorhanden
|
|
/// </summary>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <param name="forceOnline">Wenn true, wird in jedem Fall die Online-Abfrage verwendet</param>
|
|
/// <returns>AppUser oder null wenn nicht gefunden</returns>
|
|
Task<AppUser> GetAppUserAsync(string accessToken, CancellationToken token, bool forceOnline);
|
|
|
|
/// <summary>
|
|
/// Hinzufügen oder aktualisieren eines App-Users
|
|
/// </summary>
|
|
/// <param name="appUser">App-User</param>
|
|
/// <returns>AppUser</returns>
|
|
Task<AppUser> CreateOrUpdateAppUserAsync(AppUser appUser);
|
|
|
|
/// <summary>
|
|
/// Aktualisieren eines App-Users.
|
|
/// Online wird versucht. Wenn nicht möglich wird ein Delta erstellt.
|
|
/// </summary>
|
|
/// <param name="appUser">App-User</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>App-User</returns>
|
|
Task<AppUser> UpdateAppUserAsync(AppUser appUser, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Setzen des App-User Types für einen AppUser.
|
|
/// Immer online und nur wenn erfolgreich auch ein Update lokal!
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des AppUsers</param>
|
|
/// <param name="appUserType">Typ der gesetzt werden soll</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> SetAppUserTypeAsync(string appUserId, AppUserType appUserType, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Setzen des App-User Types für einen AppUser.
|
|
/// Immer online und nur wenn erfolgreich auch ein Update lokal!
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des AppUsers</param>
|
|
/// <param name="appUserType">Typ der gesetzt werden soll</param>
|
|
/// <param name="nationality">Nationalität</param>
|
|
/// <param name="mainResidence">Land des Hauptwohnsitzes</param>
|
|
/// <param name="paymentTermsAccepted">AGB Paymentprovider akzeptiert</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> SetAppUserTypeAsync(string appUserId, AppUserType appUserType, string nationality, string mainResidence, bool paymentTermsAccepted, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Hinzufügen eines Payment-Users. Für Hundebesitzer wenn sie noch keine PaymentId haben
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des AppUsers</param>
|
|
/// <param name="nationality">Nationalität</param>
|
|
/// <param name="mainResidence">Land des Hauptwohnsitzes</param>
|
|
/// <param name="paymentTermsAccepted">AGB Paymentprovider akzeptiert</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> AddPaymentUserAsync(string appUserId, string nationality, string mainResidence, bool paymentTermsAccepted, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Setzen der Bankverbindungs-ID für einen AppUser.
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="bankId">ID der Bankverbindung</param>
|
|
/// <param name="updatedAt">Datum letzte Aktualisierung</param>
|
|
/// <returns>App-User</returns>
|
|
Task<AppUser> SetBankAccountAsync(string appUserId, string bankId, DateTimeOffset updatedAt);
|
|
|
|
/// <summary>
|
|
/// Blockieren eines App-Users am Server
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users der die Blockierung vornimmt</param>
|
|
/// <param name="blockedAppUserId">Id des App-Users der blockiert wird</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> BlockAppUserAsync(string appUserId, string blockedAppUserId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Aufheben der Blockierung eines App-Users am Server
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users der die Blockierung vorgenommen hat</param>
|
|
/// <param name="blockedAppUserId">Id des App-Users dessen Blockierung aufgehoben wird</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> UnblockAppUserAsync(string appUserId, string blockedAppUserId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Holen von blockierten App-Usern
|
|
/// </summary>
|
|
/// <param name="query">Abfrageobjekt</param>
|
|
/// <param name="location">Aktuelle Position</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>ListCommunicationResult</returns>
|
|
Task<ListCommunicationResult<List<AppUserBlockWithNames>>> GetBlockedAppUsersAsync(BlockedQueryDto query, LocationDto location, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Melden eines App-Users durch einen anderen bei Verfehlungen oder anstößigen Inhalten
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users der die Meldung vornimmt</param>
|
|
/// <param name="reportedAppUserId">Id des App-Users der gemeldet wird</param>
|
|
/// <param name="section">Betroffener Bereich</param>
|
|
/// <param name="sectionId">Id des Bereichs</param>
|
|
/// <param name="sectionId2">Optional: zweite Id falls nötig</param>
|
|
/// <param name="reportedImage">Bild beanstanded</param>
|
|
/// <param name="reportedName">Name beanstanded</param>
|
|
/// <param name="reportedText">Text beanstanded</param>
|
|
/// <param name="reportedMessage">Nachricht beanstanded</param>
|
|
/// <param name="reportedAddress">Adresse beanstanded</param>
|
|
/// <param name="type">Typ der Meldung</param>
|
|
/// <param name="email">Email-Adresse des meldenen Benutzers für Kontaktaufnahme</param>
|
|
/// <param name="comment">Anmerkungen des meldenden Benutzers</param>
|
|
/// <param name="message">Chat-Nachricht wenn es eine betrifft</param>
|
|
/// <param name="blockType">Art der bBlockierung</param>
|
|
/// <param name="contactAllowed">Darf für Rückfragen kontaktiert werden</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>ListCommunicationResult</returns>
|
|
Task<CommunicationResult<bool>> ReportAppUserAsync(string appUserId, string reportedAppUserId, AppUserReportSection section, string sectionId, string sectionId2, bool reportedImage, bool reportedName,
|
|
bool reportedText, bool reportedMessage, bool reportedAddress, AppUserReportType type, string email, string comment, string message, AppUserReportBlockType blockType, bool contactAllowed, string accessToken, CancellationToken token);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ergebnis des Prüfens auf den Benutzer
|
|
/// </summary>
|
|
public enum UserCheckResult
|
|
{
|
|
/// <summary>
|
|
/// Es wurde noch kein Benutzer angelegt
|
|
/// </summary>
|
|
Empty = 0,
|
|
/// <summary>
|
|
/// Es handelt sich um den gespeicherten Benutzer
|
|
/// </summary>
|
|
IsCurrentUser = 1,
|
|
/// <summary>
|
|
/// Der gespeicherte Benutzer stimmt nicht überein
|
|
/// </summary>
|
|
IsOtherUser = 2
|
|
}
|
|
}
|