73 lines
2.4 KiB
C#

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
using gehGassi.Domain.Common;
namespace gehGassi.Web.Hubs
{
/// <summary>
/// Schnittstellenbeschreibung für einen Hub der verbundene Benutzer verwalten kann
/// </summary>
public interface ISystemHubUsers
{
public ConcurrentDictionary<string, List<string>> ConnectedUsers { get; set; }
}
/// <summary>
/// Schnittstellenbeschreibung für einen Hub der Systemnachrichten ermöglicht
/// </summary>
public interface ISystemHub
{
/// <summary>
/// Buchen der Events eines Kunden
/// </summary>
/// <param name="customerId">ID des Kunden</param>
/// <returns>Task</returns>
Task JoinCustomer(Guid customerId);
}
/// <summary>
/// Schnittstellenbeschreibung für einen Service der den Versand von SignalR-Nachrichten
/// vom Server ermöglicht. Dieses Muster wird verwendet um nicht alle SignalR-Methoden an den Client zu veröffentlichen.
/// </summary>
public interface ISystemHubSender
{
/// <summary>
/// Senden eine Nachricht an einen Benutzer
/// </summary>
/// <param name="user">Benutzer - email</param>
/// <param name="message">Nachricht</param>
/// <returns>Task</returns>
Task MessageForUser(string user, string message);
/// <summary>
/// Anzeigen der Warte-Animation im Browser
/// </summary>
/// <param name="user">Benutzername</param>
/// <param name="timeout">Timeout in Millisekunden</param>
/// <returns>Task</returns>
Task ShowWaitingAsync(string user, int timeout = 25000);
/// <summary>
/// Ausblenden der Warte-Animation im Browser
/// </summary>
/// <param name="user">Benutzername</param>
/// <returns>Task</returns>
Task HideWaitingAsync(string user);
#region Cart - Warenkorb
/// <summary>
/// Event wenn sich der Warenkorb geändert hat
/// </summary>
/// <param name="customerId">ID des Kunden als GUID</param>
/// <param name="itemCount">Anzahl der Artikel im Warenkorb</param>
/// <param name="ignoreUsers">Liste Benutzer die ignoriert werden soll</param>
/// <returns></returns>
Task CartChangedAsync(Guid customerId, int itemCount, List<string> ignoreUsers = null);
#endregion
}
}