1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-14 11:23:42 +02:00
Sonarr/NzbDrone.Core/Datastore/PetaPoco/EpisodeSeasonRelator.cs
2013-02-15 16:52:04 -08:00

49 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Datastore.PetaPoco
{
public class EpisodeSeasonRelator
{
public Season _current;
public Season MapIt(Season season, Episode episode, EpisodeFile episodeFile)
{
// Terminating call. Since we can return null from this function
// we need to be ready for PetaPoco to callback later with null
// parameters
if (season == null)
return _current;
//Todo: Find a Query that doesn't require this check
//Map EpisodeFile to Episode (Map to null if 0, because PetaPoco is returning a POCO when it should be null)
episode.EpisodeFile = (episode.EpisodeFileId == 0 ? null : episodeFile);
// Is this the same season as the current one we're processing
if (_current != null && _current.SeasonId == season.SeasonId)
{
// Yes, just add this post to the current author's collection of posts
_current.Episodes.Add(episode);
// Return null to indicate we're not done with this author yet
return null;
}
// This is season different author to the current one, or this is the
// first time through and we don't have an season yet
// Save the current author
var prev = _current;
// Setup the new current season
_current = season;
_current.Episodes = new List<Episode>();
_current.Episodes.Add(episode);
// Return the now populated previous season (or null if first time through)
return prev;
}
}
}