aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Reed <ebr@mediabrowser3.com>2013-04-14 11:12:53 -0400
committerEric Reed <ebr@mediabrowser3.com>2013-04-14 11:12:53 -0400
commitb2f47735cc84f4b9a5fcd555dd1308ec61d36c01 (patch)
treeff6505fb2456b4c8a8ca5f5db62cd400cebc2db6
parent2da81469554d99ec5f5ffb76283e9cd291afd666 (diff)
parent07d8649f975db04a166cb29ead04e89a38063639 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs33
1 files changed, 28 insertions, 5 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index a311cca9e..295b9b27d 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -957,7 +957,7 @@ namespace MediaBrowser.Controller.Entities
{
if (person == null)
{
- throw new ArgumentNullException();
+ throw new ArgumentNullException("person");
}
if (string.IsNullOrWhiteSpace(person.Name))
@@ -967,14 +967,37 @@ namespace MediaBrowser.Controller.Entities
if (People == null)
{
- People = new List<PersonInfo>();
+ People = new List<PersonInfo> { person };
+ return;
}
- // Check for dupes based on the combination of Name and Type
+ // If the type is GuestStar and there's already an Actor entry, then update it to avoid dupes
+ if (string.Equals(person.Type, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))
+ {
+ var existing = People.FirstOrDefault(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase));
+
+ if (existing != null)
+ {
+ existing.Type = PersonType.GuestStar;
+ return;
+ }
+ }
- if (!People.Any(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(person.Type, StringComparison.OrdinalIgnoreCase)))
+ if (string.Equals(person.Type, PersonType.Actor, StringComparison.OrdinalIgnoreCase))
{
- People.Add(person);
+ // Only add actors if there isn't an existing one of type Actor or GuestStar
+ if (!People.Any(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && (p.Type.Equals(PersonType.Actor, StringComparison.OrdinalIgnoreCase) || p.Type.Equals(PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))))
+ {
+ People.Add(person);
+ }
+ }
+ else
+ {
+ // Check for dupes based on the combination of Name and Type
+ if (!People.Any(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(person.Type, StringComparison.OrdinalIgnoreCase)))
+ {
+ People.Add(person);
+ }
}
}