using System.Threading.Tasks; using gehGassi.Core.Interfaces; using gehGassi.Web.Hubs; namespace gehGassi.Web.Services { /// /// Service der für Benutzer prüfen kann ob diese via SignalR online sind /// public class UserOnlineService : IUserOnlineService { private readonly IUserService _userService; private readonly IAppHubSender _appHubSender; /// /// Erstellt eine Instanz /// /// Instanz eines IUserService /// Instanz eines IAppHubSender public UserOnlineService(IUserService userService, IAppHubSender appHubSender) { _userService = userService; _appHubSender = appHubSender; } /// /// Gibt zurück ob ein Benutzer via SignalR online ist /// /// Benutzername /// True wenn online, false sonst public async Task IsUserOnlineAsync(string userName) { return await _appHubSender.IsUserConnectedAsync(userName); } /// /// Gibt zurück ob ein App-User via SignalR online ist /// /// Id des AppUsers /// True wenn online, false sonst public async Task IsAppUserOnlineAsync(string appUserId) { var user = await _userService.GetByAppUserAsync(appUserId); if (user == null) { return false; } return await IsUserOnlineAsync(user.UserName); } } }