diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index 48d292bbc2..90fe111292 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -248,8 +248,12 @@ namespace MediaBrowser.Api
item.ForcedSortName = request.SortName;
}
- item.Budget = request.Budget;
- item.Revenue = request.Revenue;
+ var hasBudget = item as IHasBudget;
+ if (hasBudget != null)
+ {
+ hasBudget.Budget = request.Budget;
+ hasBudget.Revenue = request.Revenue;
+ }
var hasCriticRating = item as IHasCriticRating;
if (hasCriticRating != null)
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 25da18fcac..f5cdaa9880 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -86,24 +86,12 @@ namespace MediaBrowser.Controller.Entities
/// The id.
public Guid Id { get; set; }
- ///
- /// Gets or sets the budget.
- ///
- /// The budget.
- public double? Budget { get; set; }
-
///
/// Gets or sets the taglines.
///
/// The taglines.
public List Taglines { get; set; }
- ///
- /// Gets or sets the revenue.
- ///
- /// The revenue.
- public double? Revenue { get; set; }
-
///
/// Gets or sets the trailer URL.
///
diff --git a/MediaBrowser.Controller/Entities/IHasBudget.cs b/MediaBrowser.Controller/Entities/IHasBudget.cs
new file mode 100644
index 0000000000..f697715c16
--- /dev/null
+++ b/MediaBrowser.Controller/Entities/IHasBudget.cs
@@ -0,0 +1,18 @@
+
+namespace MediaBrowser.Controller.Entities
+{
+ public interface IHasBudget
+ {
+ ///
+ /// Gets or sets the budget.
+ ///
+ /// The budget.
+ double? Budget { get; set; }
+
+ ///
+ /// Gets or sets the revenue.
+ ///
+ /// The revenue.
+ double? Revenue { get; set; }
+ }
+}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index eef348f61c..30babe2383 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -11,7 +11,7 @@ namespace MediaBrowser.Controller.Entities.Movies
///
/// Class Movie
///
- public class Movie : Video, IHasCriticRating, IHasSoundtracks
+ public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget
{
public List SpecialFeatureIds { get; set; }
@@ -23,6 +23,18 @@ namespace MediaBrowser.Controller.Entities.Movies
SoundtrackIds = new List();
}
+ ///
+ /// Gets or sets the budget.
+ ///
+ /// The budget.
+ public double? Budget { get; set; }
+
+ ///
+ /// Gets or sets the revenue.
+ ///
+ /// The revenue.
+ public double? Revenue { get; set; }
+
///
/// Gets or sets the critic rating.
///
diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs
index 207f76efda..68ad4630a5 100644
--- a/MediaBrowser.Controller/Entities/MusicVideo.cs
+++ b/MediaBrowser.Controller/Entities/MusicVideo.cs
@@ -4,7 +4,7 @@ using System;
namespace MediaBrowser.Controller.Entities
{
- public class MusicVideo : Video, IHasArtist, IHasMusicGenres
+ public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasBudget
{
///
/// Gets or sets the artist.
@@ -18,6 +18,18 @@ namespace MediaBrowser.Controller.Entities
/// The album.
public string Album { get; set; }
+ ///
+ /// Gets or sets the budget.
+ ///
+ /// The budget.
+ public double? Budget { get; set; }
+
+ ///
+ /// Gets or sets the revenue.
+ ///
+ /// The revenue.
+ public double? Revenue { get; set; }
+
///
/// Determines whether the specified name has artist.
///
diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs
index 26814ad40b..7c14c9865d 100644
--- a/MediaBrowser.Controller/Entities/Trailer.cs
+++ b/MediaBrowser.Controller/Entities/Trailer.cs
@@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Entities
///
/// Class Trailer
///
- public class Trailer : Video, IHasCriticRating, IHasSoundtracks
+ public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget
{
public List SoundtrackIds { get; set; }
@@ -19,6 +19,18 @@ namespace MediaBrowser.Controller.Entities
SoundtrackIds = new List();
}
+ ///
+ /// Gets or sets the budget.
+ ///
+ /// The budget.
+ public double? Budget { get; set; }
+
+ ///
+ /// Gets or sets the revenue.
+ ///
+ /// The revenue.
+ public double? Revenue { get; set; }
+
///
/// Gets or sets the critic rating.
///
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 9b89b12c50..e5fe6a04f7 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -90,6 +90,7 @@
+
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index 14c83bed43..44138a5989 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -162,10 +162,14 @@ namespace MediaBrowser.Controller.Providers
case "Budget":
{
var text = reader.ReadElementContentAsString();
- double value;
- if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
+ var hasBudget = item as IHasBudget;
+ if (hasBudget != null)
{
- item.Budget = value;
+ double value;
+ if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
+ {
+ hasBudget.Budget = value;
+ }
}
break;
@@ -174,10 +178,14 @@ namespace MediaBrowser.Controller.Providers
case "Revenue":
{
var text = reader.ReadElementContentAsString();
- double value;
- if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
+ var hasBudget = item as IHasBudget;
+ if (hasBudget != null)
{
- item.Revenue = value;
+ double value;
+ if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
+ {
+ hasBudget.Revenue = value;
+ }
}
break;
diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
index e4fe2a914d..b812c93247 100644
--- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs
@@ -701,8 +701,12 @@ namespace MediaBrowser.Providers.Movies
}
movie.HomePageUrl = movieData.homepage;
- movie.Budget = movieData.budget;
- movie.Revenue = movieData.revenue;
+ var hasBudget = movie as IHasBudget;
+ if (hasBudget != null)
+ {
+ hasBudget.Budget = movieData.budget;
+ hasBudget.Revenue = movieData.revenue;
+ }
if (!string.IsNullOrEmpty(movieData.tagline))
{
diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
index 5a49e4f36b..4c032c8e78 100644
--- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
@@ -280,14 +280,18 @@ namespace MediaBrowser.Providers.Savers
builder.Append("");
}
- if (item.Budget.HasValue)
+ var hasBudget = item as IHasBudget;
+ if (hasBudget != null)
{
- builder.Append("" + SecurityElement.Escape(item.Budget.Value.ToString(UsCulture)) + "");
- }
+ if (hasBudget.Budget.HasValue)
+ {
+ builder.Append("" + SecurityElement.Escape(hasBudget.Budget.Value.ToString(UsCulture)) + "");
+ }
- if (item.Revenue.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(item.Revenue.Value.ToString(UsCulture)) + "");
+ if (hasBudget.Revenue.HasValue)
+ {
+ builder.Append("" + SecurityElement.Escape(hasBudget.Revenue.Value.ToString(UsCulture)) + "");
+ }
}
if (item.CommunityRating.HasValue)
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 5333518753..b43449858e 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -727,14 +727,18 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.EnableInternetProviders = !item.DontFetchMeta;
}
- if (fields.Contains(ItemFields.Budget))
+ var hasBudget = item as IHasBudget;
+ if (hasBudget != null)
{
- dto.Budget = item.Budget;
- }
+ if (fields.Contains(ItemFields.Budget))
+ {
+ dto.Budget = hasBudget.Budget;
+ }
- if (fields.Contains(ItemFields.Revenue))
- {
- dto.Revenue = item.Revenue;
+ if (fields.Contains(ItemFields.Revenue))
+ {
+ dto.Revenue = hasBudget.Revenue;
+ }
}
dto.EndDate = item.EndDate;
diff --git a/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs b/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs
index d2dac65499..87a7325c63 100644
--- a/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs
@@ -19,7 +19,12 @@ namespace MediaBrowser.Server.Implementations.Sorting
private double GetValue(BaseItem x)
{
- return x.Budget ?? 0;
+ var hasBudget = x as IHasBudget;
+ if (hasBudget != null)
+ {
+ return hasBudget.Budget ?? 0;
+ }
+ return 0;
}
///
diff --git a/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs b/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs
index e9d7912a16..6caa27ac39 100644
--- a/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs
@@ -19,7 +19,12 @@ namespace MediaBrowser.Server.Implementations.Sorting
private double GetValue(BaseItem x)
{
- return x.Revenue ?? 0;
+ var hasBudget = x as IHasBudget;
+ if (hasBudget != null)
+ {
+ return hasBudget.Revenue ?? 0;
+ }
+ return 0;
}
///