public MetroContract_AniDB_Character ToContractMetro(ISession session, AniDB_Anime_Character charRel) { MetroContract_AniDB_Character contract = new MetroContract_AniDB_Character(); contract.AniDB_CharacterID = this.AniDB_CharacterID; contract.CharID = this.CharID; contract.CharName = this.CharName; contract.CharKanjiName = this.CharKanjiName; contract.CharDescription = this.CharDescription; contract.CharType = charRel.CharType; contract.ImageType = (int)JMMImageType.AniDB_Character; contract.ImageID = this.AniDB_CharacterID; AniDB_Seiyuu seiyuu = this.GetSeiyuu(session); if (seiyuu != null) { contract.SeiyuuID = seiyuu.AniDB_SeiyuuID; contract.SeiyuuName = seiyuu.SeiyuuName; contract.SeiyuuImageType = (int)JMMImageType.AniDB_Creator; contract.SeiyuuImageID = seiyuu.AniDB_SeiyuuID; } return contract; }
public List<MetroContract_AniDB_Character> GetCharactersForAnime(int animeID, int maxRecords) { List<MetroContract_AniDB_Character> chars = new List<MetroContract_AniDB_Character>(); try { using (var session = JMMService.SessionFactory.OpenSession()) { AniDB_Anime_CharacterRepository repAnimeChar = new AniDB_Anime_CharacterRepository(); AniDB_CharacterRepository repChar = new AniDB_CharacterRepository(); List<AniDB_Anime_Character> animeChars = repAnimeChar.GetByAnimeID(session, animeID); if (animeChars == null || animeChars.Count == 0) return chars; int cnt = 0; // first get all the main characters foreach (AniDB_Anime_Character animeChar in animeChars.Where(item => item.CharType.Equals("main character in", StringComparison.InvariantCultureIgnoreCase))) { cnt++; AniDB_Character chr = repChar.GetByCharID(animeChar.CharID); if (chr != null) { MetroContract_AniDB_Character contract = new MetroContract_AniDB_Character(); chars.Add(chr.ToContractMetro(session, animeChar)); } if (cnt == maxRecords) break; } // now get the rest foreach (AniDB_Anime_Character animeChar in animeChars.Where(item => !item.CharType.Equals("main character in", StringComparison.InvariantCultureIgnoreCase))) { cnt++; AniDB_Character chr = repChar.GetByCharID(animeChar.CharID); if (chr != null) { MetroContract_AniDB_Character contract = new MetroContract_AniDB_Character(); chars.Add(chr.ToContractMetro(session, animeChar)); } if (cnt == maxRecords) break; } } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return chars; }