53 lines
1.7 KiB
C#

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