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 Systemnachrichten ermöglicht /// public interface ISystemMessageService : IService, ISyncPushPullService { /// /// Gibt eine Liste der SystemNachrichten /// /// Aktuelles Accesstoken /// Typ des App-Users. Wird aber hier für den AppMode verwendet /// Wie viele News sollen abgerufen werden? -1 Wenn nicht anwenden. /// Wie viele News sollen ausgelassen werden? -1 Wenn nicht anwenden. /// CancellationToken /// Id des Senders /// Liste SystemNachrichten Task>> GetMessagesAsync(string senderId, AppUserType appUserType, int take, int skip, string accessToken, CancellationToken token); /// /// Gibt die Anzahl der ungelesenen Systemnachrichten zurück /// /// Typ des App-Users. Wird aber hier für den AppMode verwendet /// Anzahl ungelesene Nachrichten Task CountUnreadAsync(AppUserType appUserType); /// /// Gibt die Anzahl der ungelesenen Systemnachrichten für alle Rollen zurück /// /// Anzahl ungelesene Nachrichten Task CountUnreadAsync(); /// /// Eine Nachricht wurde gelesen /// /// /// Task MessageReadAsync(SystemMessage message); /// /// 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 /// /// Typ des App-Users. Wird aber hier für den AppMode verwendet /// Id des Objekts /// Typ des Objekts /// Task Task MessagesReadAsync(AppUserType appUserType, string key, string table); /// /// Entfernen von Systemnachrichten vom Server für einen AppUser und eine bestimmte Kombination aus Key und Table /// /// Id des AppUsers /// Typ des AppUsers /// Key /// Table /// Alter als dieses Datum /// Aktuelles Accesstoken /// CancellationToken /// bool Task RemoveMessagesAsync(string appUserId, AppUserType appUserType, string key, string table, DateTimeOffset? created, string accessToken, CancellationToken token); /// /// Löschen abgelaufener Systemnachrichten /// /// Task Task RemoveExpiredOrReadAsync(); /// /// Prüft ob eine Systemnachricht für eine bestimmte Kombination bereits existiert /// /// Typ des App-Users. Wird aber hier für den AppMode verwendet /// Id des Objekts /// Typ des Objekts /// Typ der Systemnachricht /// true wenn es eine ungelesene gibt, false sonst Task HasMessageAsync(AppUserType appUserType, string key, string table, SystemMessageType type); /// /// Hinzufügen einer Systemnachricht lokal /// /// Id des AppUsers /// Typ des App-Users. Wird aber hier für den AppMode verwendet /// Id des Objekts /// Typ des Objekts /// Typ der Systemnachricht /// Ablaufdatum /// Task Task AddMessageAsync(string appUserId, AppUserType appUserType, string key, string table, SystemMessageType type, DateTimeOffset? expires); /// /// Löschen aller Systemnachrichten /// /// Task Task DeleteAllAsync(); } }