aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Entities/BaseItem.cs
blob: 506c051c52e626e48749add8a6338e60fccf97d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using System;
using System.Collections.Generic;
using System.Linq;

namespace MediaBrowser.Model.Entities
{
    public abstract class BaseItem : BaseEntity, IHasProviderIds
    {
        public string SortName { get; set; }

        /// <summary>
        /// When the item first debuted. For movies this could be premiere date, episodes would be first aired
        /// </summary>
        public DateTime? PremiereDate { get; set; }

        public string Path { get; set; }

        public Folder Parent { get; set; }

        public string LogoImagePath { get; set; }

        public string ArtImagePath { get; set; }

        public string ThumbnailImagePath { get; set; }

        public string BannerImagePath { get; set; }

        public IEnumerable<string> BackdropImagePaths { get; set; }

        public string OfficialRating { get; set; }
        
        public string CustomRating { get; set; }

        public string Overview { get; set; }
        public IEnumerable<string> Taglines { get; set; }

        public IEnumerable<PersonInfo> People { get; set; }

        public IEnumerable<string> Studios { get; set; }

        public IEnumerable<string> Genres { get; set; }

        public string DisplayMediaType { get; set; }

        public float? UserRating { get; set; }
        public long? RunTimeTicks { get; set; }

        public string AspectRatio { get; set; }
        public int? ProductionYear { get; set; }

        /// <summary>
        /// If the item is part of a series, this is it's number in the series.
        /// This could be episode number, album track number, etc.
        /// </summary>
        public int? IndexNumber { get; set; }

        public IEnumerable<Video> LocalTrailers { get; set; }

        public string TrailerUrl { get; set; }

        public Dictionary<string, string> ProviderIds { get; set; }

        public Dictionary<Guid, UserItemData> UserData { get; set; }

        public UserItemData GetUserData(User user)
        {
            if (UserData == null || !UserData.ContainsKey(user.Id))
            {
                return null;
            }

            return UserData[user.Id];
        }

        public void AddUserData(User user, UserItemData data)
        {
            if (UserData == null)
            {
                UserData = new Dictionary<Guid, UserItemData>();
            }

            UserData[user.Id] = data;
        }

        /// <summary>
        /// Determines if a given user has access to this item
        /// </summary>
        internal bool IsParentalAllowed(User user)
        {
            return true;
        }

        /// <summary>
        /// Finds an item by ID, recursively
        /// </summary>
        public virtual BaseItem FindItemById(Guid id)
        {
            if (Id == id)
            {
                return this;
            }

            if (LocalTrailers != null)
            {
                return LocalTrailers.FirstOrDefault(i => i.Id == id);
            }

            return null;
        }
    }
}