public HashSet <Movie> GetMoviesWithCharacter(int characterId)
        {
            HashSet <Movie> retVal = new HashSet <Movie>();

            //For each MovieCharacterMap Entry for the movieId
            foreach (var mcm in MovieCharacterMap.Where(o => o.CharacterId == characterId))
            {
                retVal.Add(GetMovie(mcm.MovieId));
            }
            return(retVal);
        }
Esempio n. 2
0
        public HashSet <Character> GetCharactersPlayedByActor(int actorId)
        {
            HashSet <Character> cs = new HashSet <Character>();

            foreach (MovieCharacterMap mcm in MovieCharacterMap.Where(o => o.PersonId == actorId))
            {
                Character mc = Characters.FirstOrDefault(o => o.Id == mcm.CharacterId);
                if (mc != null)
                {
                    cs.Add(mc);
                }
            }
            return(cs);
        }
        public HashSet <Person> GetActorsWhoPlayedCharacter(int characterId, int movieId)
        {
            HashSet <Person> retVal = new HashSet <Person>();

            //For each MovieCharacterMap Entry for the movieId
            foreach (var mcm in MovieCharacterMap.Where(o => o.MovieId == movieId && o.CharacterId == characterId))
            {
                Person p = People.FirstOrDefault(o => o.Id == mcm.PersonId);
                if (p != null)
                {
                    retVal.Add(p);
                }
            }
            return(retVal);
        }
Esempio n. 4
0
        public HashSet <Character> GetCharactersPlayedByActor(int actorId, int movieId)
        {
            HashSet <Character> cs = new HashSet <Character>();

            foreach (MovieCharacterMap mcm in MovieCharacterMap.Where(o => o.PersonId == actorId && o.MovieId == movieId))
            {
                String    ocn = mcm.OriginalCharacterName;
                Character mc  = Characters.FirstOrDefault(o => o.Id == mcm.CharacterId);
                if (mc != null)
                {
                    mc.OriginalCharacterName = ocn;
                    cs.Add(mc);
                }
            }
            return(cs);
        }
Esempio n. 5
0
        public HashSet <Character> GetCharactersInMovie(int movieId, int limit = 0)
        {
            int initialLimit       = limit;
            HashSet <Character> cs = new HashSet <Character>();

            foreach (MovieCharacterMap mcm in MovieCharacterMap.Where(o => o.MovieId == movieId).OrderBy(o => o.CreditOrder))
            {
                if (initialLimit > 0 && limit-- < 1)
                {
                    break;
                }
                Character mc = Characters.FirstOrDefault(o => o.Id == mcm.CharacterId);
                if (mc != null)
                {
                    cs.Add(mc);
                }
            }
            return(cs);
        }
Esempio n. 6
0
        public Character AddCharacter(String characterName, int movieID, int personID, string creditID, int castID, int creditOrder)
        {
            //Save what was passed in - mostly for debugging
            String originalCharacterName = characterName; //Not to be modified

            ////Debugging
            //if (characterName.Contains("Soldier"))
            //{
            //    //Walk through code
            //}
            //Standardize on what characters can be in the name
            characterName = removeIllegalCharacters(characterName);
            //Save OriginalCharacterName for use with Credit Mapping
            String originalCleanCharacterName = characterName; //Not to be modified


            //Tag awareness!!
            //(voice)  -
            //(uncredited) characters should be just the character and have an alias ..
            //However the Original characterName must be preserved for the mapping

            String nicName          = getNicName(characterName);
            String newCharacterName = characterName;

            if (characterName.Contains("(uncredited)"))
            {
                //Make up regular character name and alias the uncredited
                newCharacterName = characterName.Replace("(uncredited)", "").Trim();
                characterName    = newCharacterName + " ~ " + characterName;
            }
            if (nicName.Length > 0)
            {
                characterName += " ~ " + nicName;
            }


            //Try Direct Exact Match
            Character c = GetCharacter(characterName);

            //No Direct Match try direct match to Alias
            if (c == null)
            {
                //See if there are Aliases to Search.
                HashSet <CharacterAlias> cas = findOrAddAliases(characterName, newCharacterName);
                //In the case of Bruce Banner ~ The Hulk vs Bruce Banner ~ Hulk
                //Bruce Banner already existed (as does The Hulk) so we want to use Bruce Banner and Add the new Alias
                //Also Possibly update the Character
                foreach (CharacterAlias ca in cas)
                {
                    CharacterAliasMap cam = CharacterAliasMap.FirstOrDefault(o => o.AliasID == ca.AliasId);
                    if (cam != null)
                    {
                        c = GetCharacter(cam.CharacterID);
                        if (c != null)
                        {
                            //BUG = way out of hand on prompts here..
                            //Prompt to update Character..
                            //Merge old and new
                            // characterName = characterName.Replace(c.Name, "");
                            //String newFullName = c.Name + characterName.Replace(newCharacterName + " ~", " ~");
                            if (c.Name != newCharacterName) // No Point in asking if identical!
                            {
                                if (MessageBox.Show("Is " + c.Name + " the same character as " + newCharacterName + "?", "Confirm Character Identity", MessageBoxButtons.YesNo) == DialogResult.No)
                                {
                                    c = null;// Not same Character
                                    continue;
                                    //return c; // Not same Character
                                }

                                if (c.Name.Length < newCharacterName.Length)
                                {
                                    if (MessageBox.Show("Update " + c.Name + " to " + newCharacterName + "?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes)
                                    {
                                        c.Name = newCharacterName;
                                    }
                                }
                            }
                            break;
                        }
                    }
                    else //Character Alias Map is null
                    {
                        //If an Alias was added in this movie but the base character didn't have any aliases then either
                        //the Character Alias Map should have individual character names in it to find the Character or Original Character Name
                        //from MovieCharacterMap map.
                        //Very iffy for Generic names
                        MovieCharacterMap mcmt = MovieCharacterMap.FirstOrDefault(o => o.OriginalCharacterName == ca.Name);
                        if (mcmt != null)
                        {
                            c = GetCharacter(mcmt.CharacterId);
                            if (c != null)
                            {
                                if (MessageBox.Show("Is " + c.Name + " the same character as " + newCharacterName + "?", "Confirm Character Identity", MessageBoxButtons.YesNo) == DialogResult.No)
                                {
                                    c = null;// Not same Character
                                    continue;
                                    //return c; // Not same Character
                                }
                                //Prompt to update Character..
                                if (!characterName.Contains("uncredited"))
                                {
                                    String newFullName = c.Name + characterName.Replace(newCharacterName + " ~", " ~");
                                    if (MessageBox.Show("Update " + c.Name + " to " + characterName + "?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes)
                                    {
                                        c.Name = characterName;
                                    }
                                }
                                break;
                            }
                        }
                    }
                }

                //Try to see if it's a case of Maria Hill vs Agent Maria Hill
                if (c == null)
                {
                    c = matchByRemovingFirst(characterName);
                    if (c != null && MessageBox.Show("Is " + c.Name + " the same character as " + characterName + "?", "Confirm Character Identity", MessageBoxButtons.YesNo) == DialogResult.No)
                    {
                        c = null;// Not same Character
                    }
                    if (c == null)
                    {
                        c = matchByRemovingLast(characterName);
                        if (c != null && MessageBox.Show("Is " + c.Name + " the same character as " + characterName + "?", "Confirm Character Identity", MessageBoxButtons.YesNo) == DialogResult.No)
                        {
                            c = null;// Not same Character
                        }
                    }
                }

                //Try Direct Match to characterName parts (Alias)
                if (c == null)
                {
                    //Try to match to characterName parts (Alias)
                    String[] substrings = getSplitName(characterName, '~');
                    if (substrings.Count() > 1)
                    {
                        foreach (String item in substrings)
                        {
                            c = GetCharacter(item.Trim());
                            if (c != null)
                            {
                                if (MessageBox.Show("Is " + c.Name + " the same character as " + characterName + "?", "Confirm Character Identity", MessageBoxButtons.YesNo) == DialogResult.No)
                                {
                                    c = null;// Not same Character
                                    continue;
                                }
                                if (MessageBox.Show("Update " + c.Name + " to " + characterName + "?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes)
                                {
                                    c.Name = characterName; // Update
                                }

                                cas = findOrAddAliases(characterName, newCharacterName);
                                break;
                            }
                        }
                    }
                }
                //If c is still null - Add a new Character..
                if (c == null)
                {
                    c      = new Character();
                    c.Name = newCharacterName; // Want Clean Name if one exists
                    c.Id   = NextCharacterIndex++;
                    Characters.Add(c);
                }
                //Need a Character Before Alias mapping can be done
                if (cas.Count > 0 && c != null)
                {
                    //Already have Aliases but need to map them..
                    foreach (CharacterAlias ca in cas)
                    {
                        if (ca.Name == c.Name)
                        {
                            continue; // Don't make and alias to Actual Character Name
                        }
                        CharacterAliasMap cam = new Models.CharacterAliasMap();
                        cam.AliasID     = ca.AliasId;
                        cam.CharacterID = c.Id;
                        bool result = CharacterAliasMap.Add(cam);
                    }
                }
            }

            //Add Mapping of Character / Actor / Role
            //Mapping to cleaned up Character Name but preserving originalCharacterName for Character Movie relation.
            MovieCharacterMap mcm = new MovieCharacterMap(c.Id, originalCleanCharacterName, movieID, creditOrder, castID, creditID, personID);

            MovieCharacterMap.Add(mcm); // Add to Universe Map.

            return(c);
        }