using gehGassiApp.Core.Interfaces.Synchronization; using gehGassiApp.Domain.Messages; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassiApp.Domain.Lookup; namespace gehGassiApp.Core.Interfaces { /// /// Schnittstellenbeschreibung für einen Service der die Verwaltung von Konversationen ermöglicht /// public interface IConversationService : IService, ISyncPushPullService { /// /// Anlegen einer Konversation /// /// Sender, falls online gesucht werden muss /// Empfänger nach welcher gesucht wird /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CreateAsync(string senderId, AppUserLookup receipient, string accessToken, CancellationToken token); /// /// Anlegen einer Konversation /// /// Sender, falls online gesucht werden muss /// Id des Emprängers /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult Task> CreateAsync(string senderId, string receipientId, string accessToken, CancellationToken token); /// /// Gibt eine Liste der Konversationen zurück /// /// Aktuelles Accesstoken /// CancellationToken /// Id des Senders /// Liste Konversatinen Task> GetConversationsAsync(string senderId, string accessToken, CancellationToken token); /// /// Gibt eine Liste der Konversationen zurück /// /// Filter /// Aktuelles Accesstoken /// CancellationToken /// Id des Senders /// Liste Konversatinen Task> GetConversationsAsync(string senderId, string filter, string accessToken, CancellationToken token); /// /// Gibt eine Konversation zurück welche ein bestimmtes Ziel hat /// /// Sender, falls online gesucht werden muss /// EmpfängerId nach welcher gesucht wird /// Aktuelles Accesstoken /// CancellationToken /// Task GetByReceipientAsync(string senderId, string receipientId, string accessToken, CancellationToken token); /// /// Setzen der letzten Nachricht für eine Konversation /// /// Id der Konversation /// Id der letzten Nachricht /// Vorschautext der letzten Nachricht /// Datum letztes Update /// Task Task SetLastMessageAsync(string conversationId, string messageId, string messagePreview, DateTimeOffset lastUpdate); /// /// Gibt zurück ob es Konversationen mit ungelesenen nachrichten gibt /// /// Task HasUnreadAsync(); } }