83 lines
3.8 KiB
C#

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
{
/// <summary>
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Konversationen ermöglicht
/// </summary>
public interface IConversationService : IService<Conversation>, ISyncPushPullService<Conversation>
{
/// <summary>
/// Anlegen einer Konversation
/// </summary>
/// <param name="senderId">Sender, falls online gesucht werden muss</param>
/// <param name="receipient">Empfänger nach welcher gesucht wird</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>CommunicationResult</returns>
Task<CommunicationResult<Conversation>> CreateAsync(string senderId, AppUserLookup receipient, string accessToken, CancellationToken token);
/// <summary>
/// Anlegen einer Konversation
/// </summary>
/// <param name="senderId">Sender, falls online gesucht werden muss</param>
/// <param name="receipientId">Id des Emprängers</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns>CommunicationResult</returns>
Task<CommunicationResult<Conversation>> CreateAsync(string senderId, string receipientId, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste der Konversationen zurück
/// </summary>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <param name="senderId">Id des Senders</param>
/// <returns>Liste Konversatinen</returns>
Task<List<Conversation>> GetConversationsAsync(string senderId, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Liste der Konversationen zurück
/// </summary>
/// <param name="filter">Filter</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <param name="senderId">Id des Senders</param>
/// <returns>Liste Konversatinen</returns>
Task<List<Conversation>> GetConversationsAsync(string senderId, string filter, string accessToken, CancellationToken token);
/// <summary>
/// Gibt eine Konversation zurück welche ein bestimmtes Ziel hat
/// </summary>
/// <param name="senderId">Sender, falls online gesucht werden muss</param>
/// <param name="receipientId">EmpfängerId nach welcher gesucht wird</param>
/// <param name="accessToken">Aktuelles Accesstoken</param>
/// <param name="token">CancellationToken</param>
/// <returns></returns>
Task<Conversation> GetByReceipientAsync(string senderId, string receipientId, string accessToken, CancellationToken token);
/// <summary>
/// Setzen der letzten Nachricht für eine Konversation
/// </summary>
/// <param name="conversationId">Id der Konversation</param>
/// <param name="messageId">Id der letzten Nachricht</param>
/// <param name="messagePreview">Vorschautext der letzten Nachricht</param>
/// <param name="lastUpdate">Datum letztes Update</param>
/// <returns>Task</returns>
Task SetLastMessageAsync(string conversationId, string messageId, string messagePreview, DateTimeOffset lastUpdate);
/// <summary>
/// Gibt zurück ob es Konversationen mit ungelesenen nachrichten gibt
/// </summary>
/// <returns></returns>
Task<bool> HasUnreadAsync();
}
}