using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
using gehGassi.Domain.Common;
namespace gehGassi.Web.Hubs
{
///
/// Schnittstellenbeschreibung für einen Hub der verbundene Benutzer verwalten kann
///
public interface ISystemHubUsers
{
public ConcurrentDictionary> ConnectedUsers { get; set; }
}
///
/// Schnittstellenbeschreibung für einen Hub der Systemnachrichten ermöglicht
///
public interface ISystemHub
{
///
/// Buchen der Events eines Kunden
///
/// ID des Kunden
/// Task
Task JoinCustomer(Guid customerId);
}
///
/// 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.
///
public interface ISystemHubSender
{
///
/// Senden eine Nachricht an einen Benutzer
///
/// Benutzer - email
/// Nachricht
/// Task
Task MessageForUser(string user, string message);
///
/// Anzeigen der Warte-Animation im Browser
///
/// Benutzername
/// Timeout in Millisekunden
/// Task
Task ShowWaitingAsync(string user, int timeout = 25000);
///
/// Ausblenden der Warte-Animation im Browser
///
/// Benutzername
/// Task
Task HideWaitingAsync(string user);
#region Cart - Warenkorb
///
/// Event wenn sich der Warenkorb geändert hat
///
/// ID des Kunden als GUID
/// Anzahl der Artikel im Warenkorb
/// Liste Benutzer die ignoriert werden soll
///
Task CartChangedAsync(Guid customerId, int itemCount, List ignoreUsers = null);
#endregion
}
}