using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using API.Entities.Enums;
using API.Entities.Interfaces;
namespace API.Entities
{
    public class Library : IEntityDate
    {
        public int Id { get; set; }
        public string Name { get; set; }
        /// 
        /// Update this summary with a way it's used, else let's remove it.
        /// 
        [Obsolete("This has never been coded for. Likely we can remove it.")]
        public string CoverImage { get; set; }
        public LibraryType Type { get; set; }
        public DateTime Created { get; set; }
        public DateTime LastModified { get; set; }
        /// 
        /// Last time Library was scanned
        /// 
        /// Time stored in UTC
        public DateTime LastScanned { get; set; }
        public ICollection Folders { get; set; }
        public ICollection AppUsers { get; set; }
        public ICollection Series { get; set; }
        // Methods
        /// 
        /// Has there been any modifications to the FolderPath's directory since the  date
        /// 
        /// 
        public bool AnyModificationsSinceLastScan()
        {
            // NOTE: I don't think we can do this due to NTFS
            return Folders.All(folder => File.GetLastWriteTimeUtc(folder.Path) > folder.LastScanned);
        }
    }
}