aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers/MetadataStatus.cs
blob: 12844c3c4d26247679272893546118a47cbb1c5b (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.Linq;

namespace MediaBrowser.Controller.Providers
{
    public class MetadataStatus
    {
        /// <summary>
        /// Gets or sets the item identifier.
        /// </summary>
        /// <value>The item identifier.</value>
        public Guid ItemId { get; set; }

        /// <summary>
        /// Gets or sets the name of the item.
        /// </summary>
        /// <value>The name of the item.</value>
        public string ItemName { get; set; }

        /// <summary>
        /// Gets or sets the type of the item.
        /// </summary>
        /// <value>The type of the item.</value>
        public string ItemType { get; set; }
        
        /// <summary>
        /// Gets or sets the name of the series.
        /// </summary>
        /// <value>The name of the series.</value>
        public string SeriesName { get; set; }

        /// <summary>
        /// Gets or sets the date last metadata refresh.
        /// </summary>
        /// <value>The date last metadata refresh.</value>
        public DateTime? DateLastMetadataRefresh { get; set; }

        /// <summary>
        /// Gets or sets the date last images refresh.
        /// </summary>
        /// <value>The date last images refresh.</value>
        public DateTime? DateLastImagesRefresh { get; set; }

        /// <summary>
        /// Gets or sets the last result.
        /// </summary>
        /// <value>The last result.</value>
        public ProviderRefreshStatus LastStatus { get; set; }

        /// <summary>
        /// Gets or sets the last result error message.
        /// </summary>
        /// <value>The last result error message.</value>
        public string LastErrorMessage { get; set; }

        /// <summary>
        /// Gets or sets the providers refreshed.
        /// </summary>
        /// <value>The providers refreshed.</value>
        public List<Guid> MetadataProvidersRefreshed { get; set; }
        public List<Guid> ImageProvidersRefreshed { get; set; }

        public DateTime? ItemDateModified { get; set; }

        public void AddStatus(ProviderRefreshStatus status, string errorMessage)
        {
            if (LastStatus != status)
            {
                IsDirty = true;
            }

            if (string.IsNullOrEmpty(LastErrorMessage))
            {
                LastErrorMessage = errorMessage;
            }
            if (LastStatus == ProviderRefreshStatus.Success)
            {
                LastStatus = status;
            }
        }

        public MetadataStatus()
        {
            LastStatus = ProviderRefreshStatus.Success;

            MetadataProvidersRefreshed = new List<Guid>();
            ImageProvidersRefreshed = new List<Guid>();
        }

        public bool IsDirty { get; private set; }

        public void SetDateLastMetadataRefresh(DateTime date)
        {
            if (date != (DateLastMetadataRefresh ?? DateTime.MinValue))
            {
                IsDirty = true;
            }

            DateLastMetadataRefresh = date;
        }

        public void SetDateLastImagesRefresh(DateTime date)
        {
            if (date != (DateLastImagesRefresh ?? DateTime.MinValue))
            {
                IsDirty = true;
            }

            DateLastImagesRefresh = date;
        }

        public void AddImageProvidersRefreshed(List<Guid> providerIds)
        {
            var count = ImageProvidersRefreshed.Count;

            providerIds.AddRange(ImageProvidersRefreshed);

            ImageProvidersRefreshed = providerIds.Distinct().ToList();

            if (ImageProvidersRefreshed.Count != count)
            {
                IsDirty = true;
            }
        }

        public void AddMetadataProvidersRefreshed(List<Guid> providerIds)
        {
            var count = MetadataProvidersRefreshed.Count;

            providerIds.AddRange(MetadataProvidersRefreshed);

            MetadataProvidersRefreshed = providerIds.Distinct().ToList();

            if (MetadataProvidersRefreshed.Count != count)
            {
                IsDirty = true;
            }
        }
    }
}