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 { /// /// Schnittstellenbeschreibung für einen Service der die verwaltung von Nachrichten ermöglicht /// public interface IMessageService : IService, ISyncPushPullService { /// /// Gibt eine Liste der Nachrichten für eine Konversation zurück /// /// Id der Konversation /// Aktuelles Accesstoken /// CancellationToken /// Id des Senders /// Liste Nachrichten Task> GetMessagesAsync(string senderId, string conversationId, string accessToken, CancellationToken token); /// /// Gibt eine Liste der Nachrichten für eine Konversation zurück /// /// Id der Konversation /// Wie viele News sollen abgerufen werden? -1 Wenn nicht anwenden. /// Wie viele News sollen ausgelassen werden? -1 Wenn nicht anwenden. /// Aktuelles Accesstoken /// CancellationToken /// Id des Senders /// Liste Nachrichten Task>> GetMessagesAsync(string senderId, string conversationId, int take, int skip, string accessToken, CancellationToken token); /// /// Gibt eine Liste der Nachrichten für die Synchronisation zurück /// /// Aktuelles Accesstoken /// CancellationToken /// Id des Senders /// Liste Nachrichten Task>> GetMessagesForSyncAsync(string senderId, string accessToken, CancellationToken token); /// /// Erstellen einer Nachricht. Wird lokal gespeichert und an der Server übertragen. /// Wenn keine Verbindung besteht, wird ein Delta erstellt /// /// id des Senders /// Id des Empfängers /// Id der Konversation /// Inhalt /// Aktuelles Accesstoken /// CancellationToken /// Task Task AddMessageAsync(string senderId, string receiverId, string conversationId, string content, string accessToken, CancellationToken token); /// /// Setzt alle Nachrichten in einer Konversation als gelesen /// /// Id der Konversation /// Task Task SetMessagesReadAsync(string conversationId); /// /// Gibt eine Liste ungelesener Nachrichten zurück /// /// Liste ungelesener Nachrichten Task> GetUnreadAsync(); /// /// Gibt eine Nachricht einer Konversation zurück /// /// Id der Konversation /// Id der Nachricht /// Nachricht oder null, wenn nicht gefunden Task GetAsync(string conversationId, string messageId); /// /// Löscht eine Nachricht. /// Die Nachricht wird auf gelöscht gesetzt. /// /// Id der Konversation /// Id der Nachricht /// True wenn wirklich gelöscht werden soll /// True wenn erfolgreich, false sonst Task DeleteAsync(string conversationId, string messageId, bool forceDelete = false); } }