MusicVideoCountComparer.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MediaBrowser.Controller.Entities;
  7. using MediaBrowser.Controller.Library;
  8. using MediaBrowser.Controller.Persistence;
  9. using MediaBrowser.Controller.Sorting;
  10. using MediaBrowser.Model.Querying;
  11. namespace MediaBrowser.Server.Implementations.Sorting
  12. {
  13. class MusicVideoCountComparer : IUserBaseItemComparer
  14. {
  15. /// <summary>
  16. /// Gets or sets the user.
  17. /// </summary>
  18. /// <value>The user.</value>
  19. public User User { get; set; }
  20. /// <summary>
  21. /// Gets or sets the user manager.
  22. /// </summary>
  23. /// <value>The user manager.</value>
  24. public IUserManager UserManager { get; set; }
  25. /// <summary>
  26. /// Gets or sets the user data repository.
  27. /// </summary>
  28. /// <value>The user data repository.</value>
  29. public IUserDataRepository UserDataRepository { get; set; }
  30. /// <summary>
  31. /// Compares the specified x.
  32. /// </summary>
  33. /// <param name="x">The x.</param>
  34. /// <param name="y">The y.</param>
  35. /// <returns>System.Int32.</returns>
  36. public int Compare(BaseItem x, BaseItem y)
  37. {
  38. return GetValue(x).CompareTo(GetValue(y));
  39. }
  40. /// <summary>
  41. /// Gets the date.
  42. /// </summary>
  43. /// <param name="x">The x.</param>
  44. /// <returns>DateTime.</returns>
  45. private int GetValue(BaseItem x)
  46. {
  47. var itemByName = x as IItemByName;
  48. if (itemByName != null)
  49. {
  50. var counts = itemByName.GetItemByNameCounts(User);
  51. if (counts != null)
  52. {
  53. return counts.MusicVideoCount;
  54. }
  55. }
  56. return 0;
  57. }
  58. /// <summary>
  59. /// Gets the name.
  60. /// </summary>
  61. /// <value>The name.</value>
  62. public string Name
  63. {
  64. get { return ItemSortBy.MusicVideoCount; }
  65. }
  66. }
  67. }