using MediaBrowser.Model.Entities;
namespace MediaBrowser.Model.Querying
{
    /// 
    /// Class ItemsByNameQuery
    /// 
    public class ItemsByNameQuery
    {
        /// 
        /// Gets or sets the user id.
        /// 
        /// The user id.
        public string UserId { get; set; }
        /// 
        /// Gets or sets the start index.
        /// 
        /// The start index.
        public int? StartIndex { get; set; }
        /// 
        /// Gets or sets the size of the page.
        /// 
        /// The size of the page.
        public int? Limit { get; set; }
        /// 
        /// Gets or sets a value indicating whether this  is recursive.
        /// 
        /// true if recursive; otherwise, false.
        public bool Recursive { get; set; }
        /// 
        /// Gets or sets the sort order.
        /// 
        /// The sort order.
        public SortOrder? SortOrder { get; set; }
        /// 
        /// Gets or sets the parent id.
        /// 
        /// The parent id.
        public string ParentId { get; set; }
        /// 
        /// Fields to return within the items, in addition to basic information
        /// 
        /// The fields.
        public ItemFields[] Fields { get; set; }
        /// 
        /// Gets or sets the filters.
        /// 
        /// The filters.
        public ItemFilter[] Filters { get; set; }
        /// 
        /// Gets or sets the exclude item types.
        /// 
        /// The exclude item types.
        public string[] ExcludeItemTypes { get; set; }
        /// 
        /// Gets or sets the include item types.
        /// 
        /// The include item types.
        public string[] IncludeItemTypes { get; set; }
        /// 
        /// Gets or sets the media types.
        /// 
        /// The media types.
        public string[] MediaTypes { get; set; }
        /// 
        /// What to sort the results by
        /// 
        /// The sort by.
        public string[] SortBy { get; set; }
        /// 
        /// Gets or sets the image types.
        /// 
        /// The image types.
        public ImageType[] ImageTypes { get; set; }
        /// 
        /// Gets or sets the name starts with or greater.
        /// 
        /// The name starts with or greater.
        public string NameStartsWithOrGreater { get; set; }
        /// 
        /// Gets or sets the name starts with
        /// 
        /// The name starts with or greater.
        public string NameStartsWith { get; set; }
        /// Gets or sets the name less than.
        /// 
        /// The name less than.
        public string NameLessThan { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance is played.
        /// 
        /// null if [is played] contains no value, true if [is played]; otherwise, false.
        public bool? IsPlayed { get; set; }
        
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public ItemsByNameQuery()
        {
            ImageTypes = new ImageType[] { };
            Filters = new ItemFilter[] { };
            Fields = new ItemFields[] { };
            Recursive = true;
            MediaTypes = new string[] { };
            SortBy = new string[] { };
            ExcludeItemTypes = new string[] { };
            IncludeItemTypes = new string[] { };
        }
    }
}