Beispiel #1
0
		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;
		}