2
0

DatePlayedComparer.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using Jellyfin.Data.Entities;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Sorting;
  6. using MediaBrowser.Model.Querying;
  7. namespace Emby.Server.Implementations.Sorting
  8. {
  9. /// <summary>
  10. /// Class DatePlayedComparer.
  11. /// </summary>
  12. public class DatePlayedComparer : IUserBaseItemComparer
  13. {
  14. /// <summary>
  15. /// Gets or sets the user.
  16. /// </summary>
  17. /// <value>The user.</value>
  18. public User User { get; set; }
  19. /// <summary>
  20. /// Gets or sets the user manager.
  21. /// </summary>
  22. /// <value>The user manager.</value>
  23. public IUserManager UserManager { get; set; }
  24. /// <summary>
  25. /// Gets or sets the user data repository.
  26. /// </summary>
  27. /// <value>The user data repository.</value>
  28. public IUserDataManager UserDataRepository { get; set; }
  29. /// <summary>
  30. /// Compares the specified x.
  31. /// </summary>
  32. /// <param name="x">The x.</param>
  33. /// <param name="y">The y.</param>
  34. /// <returns>System.Int32.</returns>
  35. public int Compare(BaseItem x, BaseItem y)
  36. {
  37. return GetDate(x).CompareTo(GetDate(y));
  38. }
  39. /// <summary>
  40. /// Gets the date.
  41. /// </summary>
  42. /// <param name="x">The x.</param>
  43. /// <returns>DateTime.</returns>
  44. private DateTime GetDate(BaseItem x)
  45. {
  46. var userdata = UserDataRepository.GetUserData(User, x);
  47. if (userdata != null && userdata.LastPlayedDate.HasValue)
  48. {
  49. return userdata.LastPlayedDate.Value;
  50. }
  51. return DateTime.MinValue;
  52. }
  53. /// <summary>
  54. /// Gets the name.
  55. /// </summary>
  56. /// <value>The name.</value>
  57. public string Name => ItemSortBy.DatePlayed;
  58. }
  59. }