diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs b/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
index 5a009bf7..cb221a21 100644
--- a/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
+++ b/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
@@ -19,7 +19,9 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
+using System.Linq;
using System.Text.RegularExpressions;
+using EntityFrameworkCore.Projectables;
using JetBrains.Annotations;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models.Attributes;
@@ -155,13 +157,35 @@ namespace Kyoo.Abstractions.Models
///
/// The previous episode that should be seen before viewing this one.
///
+ [Projectable(UseMemberBody = nameof(_PreviousEpisode))]
[LoadableRelation] public Episode? PreviousEpisode { get; set; }
+ private Episode? _PreviousEpisode => Show!.Episodes!
+ .OrderByDescending(x => x.AbsoluteNumber)
+ .ThenByDescending(x => x.SeasonNumber)
+ .ThenByDescending(x => x.EpisodeNumber)
+ .FirstOrDefault(x =>
+ x.AbsoluteNumber < AbsoluteNumber
+ || x.SeasonNumber < SeasonNumber
+ || (x.SeasonNumber == SeasonNumber && x.EpisodeNumber < EpisodeNumber)
+ );
+
///
/// The next episode to watch after this one.
///
+ [Projectable(UseMemberBody = nameof(_NextEpisode))]
[LoadableRelation] public Episode? NextEpisode { get; set; }
+ private Episode? _NextEpisode => Show!.Episodes!
+ .OrderBy(x => x.AbsoluteNumber)
+ .ThenBy(x => x.SeasonNumber)
+ .ThenBy(x => x.EpisodeNumber)
+ .FirstOrDefault(x =>
+ x.AbsoluteNumber > AbsoluteNumber
+ || x.SeasonNumber > SeasonNumber
+ || (x.SeasonNumber == SeasonNumber && x.EpisodeNumber > EpisodeNumber)
+ );
+
///
/// Links to watch this episode.
///
diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Movie.cs b/back/src/Kyoo.Abstractions/Models/Resources/Movie.cs
index a102a93c..e4489389 100644
--- a/back/src/Kyoo.Abstractions/Models/Resources/Movie.cs
+++ b/back/src/Kyoo.Abstractions/Models/Resources/Movie.cs
@@ -110,7 +110,6 @@ namespace Kyoo.Abstractions.Models
///
/// The Studio that made this show.
- /// This must be explicitly loaded via a call to .
///
[LoadableRelation(nameof(StudioID))][EditableRelation] public Studio? Studio { get; set; }
diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Season.cs b/back/src/Kyoo.Abstractions/Models/Resources/Season.cs
index df9d24b9..3f6865ed 100644
--- a/back/src/Kyoo.Abstractions/Models/Resources/Season.cs
+++ b/back/src/Kyoo.Abstractions/Models/Resources/Season.cs
@@ -73,7 +73,6 @@ namespace Kyoo.Abstractions.Models
///
/// The show that contains this season.
- /// This must be explicitly loaded via a call to .
///
[LoadableRelation(nameof(ShowId))] public Show? Show { get; set; }
diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Show.cs b/back/src/Kyoo.Abstractions/Models/Resources/Show.cs
index 9345d66a..98dd1d61 100644
--- a/back/src/Kyoo.Abstractions/Models/Resources/Show.cs
+++ b/back/src/Kyoo.Abstractions/Models/Resources/Show.cs
@@ -113,7 +113,6 @@ namespace Kyoo.Abstractions.Models
///
/// The Studio that made this show.
- /// This must be explicitly loaded via a call to .
///
[LoadableRelation(nameof(StudioId))][EditableRelation] public Studio? Studio { get; set; }
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
index 7133bb63..120b930b 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
@@ -273,7 +273,9 @@ namespace Kyoo.Core.Controllers
{
if (include == null)
return query;
- foreach (string field in include.Fields)
+ foreach (string field in include.Fields
+ // TODO: Remove this hotfix
+ .Where(x => x != "NextEpisode" && x != "PreviousEpisode"))
query = query.Include(field);
return query;
}