using System.Collections.Generic ;
using System.Linq ;
using NzbDrone.Common.Messaging ;
using NzbDrone.Core.Datastore ;
namespace NzbDrone.Core.Tv
{
public interface ISeasonRepository : IBasicRepository < Season >
{
IList < int > GetSeasonNumbers ( int seriesId ) ;
Season Get ( int seriesId , int seasonNumber ) ;
bool IsIgnored ( int seriesId , int seasonNumber ) ;
List < Season > GetSeasonBySeries ( int seriesId ) ;
}
public class SeasonRepository : BasicRepository < Season > , ISeasonRepository
{
public SeasonRepository ( IDatabase database , IMessageAggregator messageAggregator )
: base ( database , messageAggregator )
{
}
public IList < int > GetSeasonNumbers ( int seriesId )
{
return Query . Where ( c = > c . SeriesId = = seriesId ) . Select ( c = > c . SeasonNumber ) . ToList ( ) ;
}
public Season Get ( int seriesId , int seasonNumber )
{
return Query . Single ( s = > s . SeriesId = = seriesId & & s . SeasonNumber = = seasonNumber ) ;
}
public bool IsIgnored ( int seriesId , int seasonNumber )
{
var season = Query . SingleOrDefault ( s = > s . SeriesId = = seriesId & & s . SeasonNumber = = seasonNumber ) ;
if ( season = = null ) return false ;
return season . Ignored ;
}
public List < Season > GetSeasonBySeries ( int seriesId )
{
return Query . Where ( s = > s . SeriesId = = seriesId ) ;
}
}
}