using System.Collections.Generic;
namespace Kyoo.Abstractions.Models
{
	/// 
	/// A single user of the app.
	/// 
	public class User : IResource, IThumbnails
	{
		/// 
		public int ID { get; set; }
		
		/// 
		public string Slug { get; set; }
		
		/// 
		/// A username displayed to the user.
		/// 
		public string Username { get; set; }
		
		/// 
		/// The user email address.
		/// 
		public string Email { get; set; }
		
		/// 
		/// The user password (hashed, it can't be read like that). The hashing format is implementation defined.
		/// 
		public string Password { get; set; }
		
		/// 
		/// The list of permissions of the user. The format of this is implementation dependent.
		/// 
		public string[] Permissions { get; set; }
		
		/// 
		/// Arbitrary extra data that can be used by specific authentication implementations.
		/// 
		public Dictionary ExtraData { get; set; }
		/// 
		public Dictionary Images { get; set; }
		/// 
		/// The list of shows the user has finished.
		/// 
		public ICollection Watched { get; set; }
		
		/// 
		/// The list of episodes the user is watching (stopped in progress or the next episode of the show)
		/// 
		public ICollection CurrentlyWatching { get; set; }
	}
	
	/// 
	/// Metadata of episode currently watching by an user
	/// 
	public class WatchedEpisode
	{
		/// 
		/// The ID of the user that started watching this episode.
		/// 
		public int UserID { get; set; }
		
		/// 
		/// The ID of the episode started.
		/// 
		public int EpisodeID { get; set; }
		
		/// 
		/// The  started.
		/// 
		public Episode Episode { get; set; }
		
		/// 
		/// Where the player has stopped watching the episode (between 0 and 100).
		/// 
		public int WatchedPercentage { get; set; }
	}
}