using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Naming.Common;
using MediaBrowser.Naming.TV;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
{
    /// 
    /// Class SeasonResolver
    /// 
    public class SeasonResolver : FolderResolver
    {
        /// 
        /// The _config
        /// 
        private readonly IServerConfigurationManager _config;
        private readonly ILibraryManager _libraryManager;
        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// The config.
        public SeasonResolver(IServerConfigurationManager config, ILibraryManager libraryManager)
        {
            _config = config;
            _libraryManager = libraryManager;
        }
        /// 
        /// Resolves the specified args.
        /// 
        /// The args.
        /// Season.
        protected override Season Resolve(ItemResolveArgs args)
        {
            if (args.Parent is Series && args.IsDirectory)
            {
                var namingOptions = ((LibraryManager)_libraryManager).GetNamingOptions();
                var series = ((Series)args.Parent);
                var season = new Season
                {
                    IndexNumber = new SeasonPathParser(namingOptions, new RegexProvider()).Parse(args.Path, true, true).SeasonNumber,
                    SeriesId = series.Id,
                    SeriesSortName = series.SortName,
                    SeriesName = series.Name
                };
                if (season.IndexNumber.HasValue && season.IndexNumber.Value == 0)
                {
                    season.Name = _config.Configuration.SeasonZeroDisplayName;
                }
                return season;
            }
            return null;
        }
    }
}