ActivityManager.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using MediaBrowser.Controller.Library;
  6. using MediaBrowser.Model.Activity;
  7. using MediaBrowser.Model.Events;
  8. using Microsoft.Extensions.Logging;
  9. namespace Emby.Server.Implementations.Activity
  10. {
  11. public class ActivityManager : IActivityManager
  12. {
  13. public event EventHandler<GenericEventArgs<ActivityLogEntry>> EntryCreated;
  14. private readonly IActivityRepository _repo;
  15. private readonly ILogger _logger;
  16. private readonly IUserManager _userManager;
  17. public ActivityManager(
  18. ILoggerFactory loggerFactory,
  19. IActivityRepository repo,
  20. IUserManager userManager)
  21. {
  22. _logger = loggerFactory.CreateLogger(nameof(ActivityManager));
  23. _repo = repo;
  24. _userManager = userManager;
  25. }
  26. public async Task CreateAsync(ActivityLogEntry entry)
  27. {
  28. entry.Date = DateTime.UtcNow;
  29. await _repo.CreateAsync(entry);
  30. EntryCreated?.Invoke(this, new GenericEventArgs<ActivityLogEntry>(entry));
  31. }
  32. public IEnumerable<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, bool? hasUserId, int? startIndex, int? limit)
  33. {
  34. var result = _repo.GetActivityLogEntries();
  35. if (minDate.HasValue)
  36. {
  37. result = result.Where(x => x.Date >= minDate.Value);
  38. }
  39. if (hasUserId.HasValue)
  40. {
  41. result = result.Where(x => x.UserId != null && x.UserId != Guid.Empty);
  42. }
  43. if (startIndex.HasValue)
  44. {
  45. result = result.Where(x => x.Id >= startIndex.Value);
  46. }
  47. if (limit.HasValue)
  48. {
  49. result = result.Take(limit.Value);
  50. }
  51. // Add images for each user
  52. foreach (var item in result)
  53. {
  54. var user = _userManager.GetUserById(item.UserId);
  55. if (user != null)
  56. {
  57. var dto = _userManager.GetUserDto(user);
  58. item.UserPrimaryImageTag = dto.PrimaryImageTag;
  59. }
  60. }
  61. return result.AsEnumerable();
  62. }
  63. }
  64. }