107 lines
5.0 KiB
C#
107 lines
5.0 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 Systemnachrichten ermöglicht
|
|
/// </summary>
|
|
public interface ISystemMessageService : IService<SystemMessage>, ISyncPushPullService<SystemMessage>
|
|
{
|
|
/// <summary>
|
|
/// Gibt eine Liste der SystemNachrichten
|
|
/// </summary>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="appUserType">Typ des App-Users. Wird aber hier für den AppMode verwendet</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="token">CancellationToken</param>
|
|
/// <param name="senderId">Id des Senders</param>
|
|
/// <returns>Liste SystemNachrichten</returns>
|
|
Task<ListCommunicationResult<List<SystemMessage>>> GetMessagesAsync(string senderId, AppUserType appUserType, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt die Anzahl der ungelesenen Systemnachrichten zurück
|
|
/// </summary>
|
|
/// <param name="appUserType">Typ des App-Users. Wird aber hier für den AppMode verwendet</param>
|
|
/// <returns>Anzahl ungelesene Nachrichten</returns>
|
|
Task<int> CountUnreadAsync(AppUserType appUserType);
|
|
|
|
/// <summary>
|
|
/// Gibt die Anzahl der ungelesenen Systemnachrichten für alle Rollen zurück
|
|
/// </summary>
|
|
/// <returns>Anzahl ungelesene Nachrichten</returns>
|
|
Task<int> CountUnreadAsync();
|
|
|
|
/// <summary>
|
|
/// Eine Nachricht wurde gelesen
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
/// <returns></returns>
|
|
Task MessageReadAsync(SystemMessage message);
|
|
|
|
/// <summary>
|
|
/// Bestätigt alle Nachrichten die den Kriterien entsprechen als gelesen.
|
|
/// Kann verwendet werden wenn z.B. ein Walk geöffnet wird ohne dass eine anliegende Systemnachricht gelesen wurde
|
|
/// </summary>
|
|
/// <param name="appUserType">Typ des App-Users. Wird aber hier für den AppMode verwendet</param>
|
|
/// <param name="key">Id des Objekts</param>
|
|
/// <param name="table">Typ des Objekts</param>
|
|
/// <returns>Task</returns>
|
|
Task<int> MessagesReadAsync(AppUserType appUserType, string key, string table);
|
|
|
|
/// <summary>
|
|
/// Entfernen von Systemnachrichten vom Server für einen AppUser und eine bestimmte Kombination aus Key und Table
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des AppUsers</param>
|
|
/// <param name="appUserType">Typ des AppUsers</param>
|
|
/// <param name="key">Key</param>
|
|
/// <param name="table">Table</param>
|
|
/// <param name="created">Alter als dieses Datum</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>bool</returns>
|
|
Task<bool> RemoveMessagesAsync(string appUserId, AppUserType appUserType, string key, string table, DateTimeOffset? created, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Löschen abgelaufener Systemnachrichten
|
|
/// </summary>
|
|
/// <returns>Task</returns>
|
|
Task<int> RemoveExpiredOrReadAsync();
|
|
|
|
/// <summary>
|
|
/// Prüft ob eine Systemnachricht für eine bestimmte Kombination bereits existiert
|
|
/// </summary>
|
|
/// <param name="appUserType">Typ des App-Users. Wird aber hier für den AppMode verwendet</param>
|
|
/// <param name="key">Id des Objekts</param>
|
|
/// <param name="table">Typ des Objekts</param>
|
|
/// <param name="type">Typ der Systemnachricht</param>
|
|
/// <returns>true wenn es eine ungelesene gibt, false sonst</returns>
|
|
Task<bool> HasMessageAsync(AppUserType appUserType, string key, string table, SystemMessageType type);
|
|
|
|
/// <summary>
|
|
/// Hinzufügen einer Systemnachricht lokal
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des AppUsers</param>
|
|
/// <param name="appUserType">Typ des App-Users. Wird aber hier für den AppMode verwendet</param>
|
|
/// <param name="key">Id des Objekts</param>
|
|
/// <param name="table">Typ des Objekts</param>
|
|
/// <param name="type">Typ der Systemnachricht</param>
|
|
/// <param name="expires">Ablaufdatum</param>
|
|
/// <returns>Task</returns>
|
|
Task AddMessageAsync(string appUserId, AppUserType appUserType, string key, string table, SystemMessageType type, DateTimeOffset? expires);
|
|
|
|
/// <summary>
|
|
/// Löschen aller Systemnachrichten
|
|
/// </summary>
|
|
/// <returns>Task</returns>
|
|
Task DeleteAllAsync();
|
|
}
|
|
}
|