93 lines
4.4 KiB
C#
93 lines
4.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassiApp.Core.Interfaces.Synchronization;
|
|
using gehGassiApp.Domain.Common;
|
|
using gehGassiApp.Domain.Messages;
|
|
|
|
namespace gehGassiApp.Core.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung für einen Service der die verwaltung von Nachrichten ermöglicht
|
|
/// </summary>
|
|
public interface IMessageService : IService<Message>, ISyncPushPullService<Message>
|
|
{
|
|
/// <summary>
|
|
/// Gibt eine Liste der Nachrichten für eine Konversation zurück
|
|
/// </summary>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <param name="senderId">Id des Senders</param>
|
|
/// <returns>Liste Nachrichten</returns>
|
|
Task<List<Message>> GetMessagesAsync(string senderId, string conversationId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der Nachrichten für eine Konversation zurück
|
|
/// </summary>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <param name="take">Wie viele News sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="skip">Wie viele News sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <param name="senderId">Id des Senders</param>
|
|
/// <returns>Liste Nachrichten</returns>
|
|
Task<ListCommunicationResult<List<Message>>> GetMessagesAsync(string senderId, string conversationId, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der Nachrichten für die Synchronisation zurück
|
|
/// </summary>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <param name="senderId">Id des Senders</param>
|
|
/// <returns>Liste Nachrichten</returns>
|
|
Task<CommunicationResult<List<Message>>> GetMessagesForSyncAsync(string senderId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Erstellen einer Nachricht. Wird lokal gespeichert und an der Server übertragen.
|
|
/// Wenn keine Verbindung besteht, wird ein Delta erstellt
|
|
/// </summary>
|
|
/// <param name="senderId">id des Senders</param>
|
|
/// <param name="receiverId">Id des Empfängers</param>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <param name="content">Inhalt</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Task</returns>
|
|
Task<Message> AddMessageAsync(string senderId, string receiverId, string conversationId, string content, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Setzt alle Nachrichten in einer Konversation als gelesen
|
|
/// </summary>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <returns>Task</returns>
|
|
Task SetMessagesReadAsync(string conversationId);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste ungelesener Nachrichten zurück
|
|
/// </summary>
|
|
/// <returns>Liste ungelesener Nachrichten</returns>
|
|
Task<List<Message>> GetUnreadAsync();
|
|
|
|
/// <summary>
|
|
/// Gibt eine Nachricht einer Konversation zurück
|
|
/// </summary>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <param name="messageId">Id der Nachricht</param>
|
|
/// <returns>Nachricht oder null, wenn nicht gefunden</returns>
|
|
Task<Message> GetAsync(string conversationId, string messageId);
|
|
|
|
/// <summary>
|
|
/// Löscht eine Nachricht.
|
|
/// Die Nachricht wird auf gelöscht gesetzt.
|
|
/// </summary>
|
|
/// <param name="conversationId">Id der Konversation</param>
|
|
/// <param name="messageId">Id der Nachricht</param>
|
|
/// <param name="forceDelete">True wenn wirklich gelöscht werden soll</param>
|
|
/// <returns>True wenn erfolgreich, false sonst</returns>
|
|
Task<bool> DeleteAsync(string conversationId, string messageId, bool forceDelete = false);
|
|
}
|
|
}
|