/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSessions request) { var result = _sessionManager.Sessions.Where(i => i.IsActive); if (!string.IsNullOrEmpty(request.DeviceId)) { result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } if (request.ControllableByUserId.HasValue) { result = result.Where(i => i.SupportsMediaControl); var user = _userManager.GetUserById(request.ControllableByUserId.Value); if (!user.Configuration.EnableRemoteControlOfOtherUsers) { result = result.Where(i => i.ContainsUser(request.ControllableByUserId.Value)); } if (!user.Configuration.EnableSharedDeviceControl) { result = result.Where(i => !i.UserId.HasValue); } } return(ToOptimizedResult(result.Select(_sessionManager.GetSessionInfoDto).ToList())); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSessions request) { var result = _sessionManager.Sessions; if (!string.IsNullOrEmpty(request.DeviceId)) { result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } if (!request.ControllableByUserId.Equals(Guid.Empty)) { result = result.Where(i => i.SupportsRemoteControl); var user = _userManager.GetUserById(request.ControllableByUserId); if (!user.Policy.EnableRemoteControlOfOtherUsers) { result = result.Where(i => i.UserId.Equals(Guid.Empty) || i.ContainsUser(request.ControllableByUserId)); } if (!user.Policy.EnableSharedDeviceControl) { result = result.Where(i => !i.UserId.Equals(Guid.Empty)); } if (request.ActiveWithinSeconds.HasValue && request.ActiveWithinSeconds.Value > 0) { var minActiveDate = DateTime.UtcNow.AddSeconds(0 - request.ActiveWithinSeconds.Value); result = result.Where(i => i.LastActivityDate >= minActiveDate); } result = result.Where(i => { var deviceId = i.DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { if (!_deviceManager.CanAccessDevice(user, deviceId)) { return(false); } } return(true); }); } return(ToOptimizedResult(result.ToArray())); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetSessions request) { var result = _sessionManager.Sessions.Where(i => i.IsActive); if (!string.IsNullOrEmpty(request.DeviceId)) { result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase)); } if (!string.IsNullOrWhiteSpace(request.ControllableByUserId)) { result = result.Where(i => i.SupportsMediaControl); var user = _userManager.GetUserById(request.ControllableByUserId); if (!user.Policy.EnableRemoteControlOfOtherUsers) { result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId)); } if (!user.Policy.EnableSharedDeviceControl) { result = result.Where(i => i.UserId.HasValue); } result = result.Where(i => { var deviceId = i.DeviceId; if (!string.IsNullOrWhiteSpace(deviceId)) { if (!_deviceManager.CanAccessDevice(user.Id.ToString("N"), deviceId)) { return(false); } } return(true); }); } return(ToOptimizedResult(result.Select(_sessionManager.GetSessionInfoDto).ToList())); }