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);
}
}
}