Exemple #1
0
        public Contract_AniDB_AnimeDetailed ToContractDetailed(ISession session)
        {
            AniDB_Anime_TitleRepository repTitles = new AniDB_Anime_TitleRepository();
            AniDB_TagRepository repTags = new AniDB_TagRepository();

            Contract_AniDB_AnimeDetailed contract = new Contract_AniDB_AnimeDetailed();

            contract.AnimeTitles = new List<Contract_AnimeTitle>();
            contract.Tags = new List<Contract_AnimeTag>();
            contract.CustomTags = new List<Contract_CustomTag>();
            contract.AniDBAnime = this.ToContract(session);

            // get all the anime titles
            List<AniDB_Anime_Title> animeTitles = repTitles.GetByAnimeID(session, AnimeID);
            if (animeTitles != null)
            {
                foreach (AniDB_Anime_Title title in animeTitles)
                {
                    Contract_AnimeTitle ctitle = new Contract_AnimeTitle();
                    ctitle.AnimeID = title.AnimeID;
                    ctitle.Language = title.Language;
                    ctitle.Title = title.Title;
                    ctitle.TitleType = title.TitleType;
                    contract.AnimeTitles.Add(ctitle);
                }
            }

            Dictionary<int, AniDB_Anime_Tag> dictAnimeTags = new Dictionary<int, AniDB_Anime_Tag>();
            foreach (AniDB_Anime_Tag animeTag in GetAnimeTags(session))
                dictAnimeTags[animeTag.TagID] = animeTag;

            foreach (AniDB_Tag tag in GetAniDBTags(session))
            {
                Contract_AnimeTag ctag = new Contract_AnimeTag();

                ctag.GlobalSpoiler = tag.GlobalSpoiler;
                ctag.LocalSpoiler = tag.LocalSpoiler;
                //ctag.Spoiler = tag.Spoiler;
                //ctag.TagCount = tag.TagCount;
                ctag.TagDescription = tag.TagDescription;
                ctag.TagID = tag.TagID;
                ctag.TagName = tag.TagName;

                if (dictAnimeTags.ContainsKey(tag.TagID))
                    ctag.Weight = dictAnimeTags[tag.TagID].Weight;
                else
                    ctag.Weight = 0;

                contract.Tags.Add(ctag);
            }

            // Get all the custom tags
            foreach (CustomTag custag in GetCustomTagsForAnime(session))
                contract.CustomTags.Add(custag.ToContract());

            if (this.UserVote != null)
                contract.UserVote = this.UserVote.ToContract();

            AdhocRepository repAdHoc = new AdhocRepository();
            List<string> audioLanguages = new List<string>();
            List<string> subtitleLanguages = new List<string>();

            //logger.Trace(" XXXX 06");

            // audio languages
            Dictionary<int, LanguageStat> dicAudio = repAdHoc.GetAudioLanguageStatsByAnime(session, this.AnimeID);
            foreach (KeyValuePair<int, LanguageStat> kvp in dicAudio)
            {
                foreach (string lanName in kvp.Value.LanguageNames)
                {
                    if (!audioLanguages.Contains(lanName))
                        audioLanguages.Add(lanName);
                }
            }

            //logger.Trace(" XXXX 07");

            // subtitle languages
            Dictionary<int, LanguageStat> dicSubtitle = repAdHoc.GetSubtitleLanguageStatsByAnime(session, this.AnimeID);
            foreach (KeyValuePair<int, LanguageStat> kvp in dicSubtitle)
            {
                foreach (string lanName in kvp.Value.LanguageNames)
                {
                    if (!subtitleLanguages.Contains(lanName))
                        subtitleLanguages.Add(lanName);
                }
            }

            //logger.Trace(" XXXX 08");

            contract.Stat_AudioLanguages = "";
            foreach (string audioLan in audioLanguages)
            {
                if (contract.Stat_AudioLanguages.Length > 0) contract.Stat_AudioLanguages += ",";
                contract.Stat_AudioLanguages += audioLan;
            }

            //logger.Trace(" XXXX 09");

            contract.Stat_SubtitleLanguages = "";
            foreach (string subLan in subtitleLanguages)
            {
                if (contract.Stat_SubtitleLanguages.Length > 0) contract.Stat_SubtitleLanguages += ",";
                contract.Stat_SubtitleLanguages += subLan;
            }

            //logger.Trace(" XXXX 10");
            contract.Stat_AllVideoQuality = repAdHoc.GetAllVideoQualityForAnime(session, this.AnimeID);

            contract.Stat_AllVideoQuality_Episodes = "";
            AnimeVideoQualityStat stat = repAdHoc.GetEpisodeVideoQualityStatsForAnime(session, this.AnimeID);
            if (stat != null && stat.VideoQualityEpisodeCount.Count > 0)
            {
                foreach (KeyValuePair<string, int> kvp in stat.VideoQualityEpisodeCount)
                {
                    if (kvp.Value >= EpisodeCountNormal)
                    {
                        if (contract.Stat_AllVideoQuality_Episodes.Length > 0) contract.Stat_AllVideoQuality_Episodes += ",";
                        contract.Stat_AllVideoQuality_Episodes += kvp.Key;
                    }
                }
            }

            //logger.Trace(" XXXX 11");

            return contract;
        }