53 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|