Beispiel #1
0
        void communityWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            SearchCommunityResults res = new SearchCommunityResults
            {
                ErrorMessage = string.Empty,
                TvDBLinks    = new List <VM_CrossRef_AniDB_TvDBV2>(),
                TraktLinks   = new List <VM_CrossRef_AniDB_TraktV2>(),
                ExtraInfo    = string.Empty,
                AnimeID      = -1
            };

            try
            {
                if (!(e.Argument is VM_AniDB_Anime anime))
                {
                    return;
                }

                res.AnimeID = anime.AnimeID;

                SearchCriteria crit = new SearchCriteria
                {
                    AnimeID   = anime.AnimeID,
                    ExtraInfo = string.Empty
                };

                // search for TvDB links
                try
                {
                    List <Azure_CrossRef_AniDB_TvDB> xrefs = VM_ShokoServer.Instance.ShokoServices.GetTVDBCrossRefWebCache(crit.AnimeID, true).CastList <Azure_CrossRef_AniDB_TvDB>();
                    if (xrefs != null && xrefs.Count > 0)
                    {
                        foreach (Azure_CrossRef_AniDB_TvDB xref in xrefs)
                        {
                            res.TvDBLinks.Add((VM_CrossRef_AniDB_TvDBV2)xref);
                        }
                    }
                }
                catch (Exception ex)
                {
                    res.ErrorMessage = ex.Message;
                }

                // search for Trakt links
                try
                {
                    List <Azure_CrossRef_AniDB_Trakt> xrefs = VM_ShokoServer.Instance.ShokoServices.GetTraktCrossRefWebCache(crit.AnimeID, true);
                    if (xrefs != null && xrefs.Count > 0)
                    {
                        foreach (Azure_CrossRef_AniDB_Trakt xref in xrefs)
                        {
                            res.TraktLinks.Add((VM_CrossRef_AniDB_TraktV2)xref);
                        }
                    }
                }
                catch (Exception ex)
                {
                    res.ErrorMessage = ex.Message;
                }

                e.Result = res;
            }
            catch (Exception ex)
            {
                res.ErrorMessage = ex.Message;
                e.Result         = res;
            }
        }
        void communityWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                SearchCommunityResults res = e.Result as SearchCommunityResults;
                if (res == null)
                {
                    return;
                }

                VM_AniDB_Anime anime = DataContext as VM_AniDB_Anime;
                if (anime == null)
                {
                    return;
                }

                if (anime.AnimeID != res.AnimeID)
                {
                    return;
                }

                if (!string.IsNullOrEmpty(res.ErrorMessage))
                {
                    return;
                }

                foreach (VM_CrossRef_AniDB_TvDBV2 tvxref in res.TvDBLinks)
                {
                    CommunityTVDBLinks.Add(tvxref);
                }

                foreach (VM_CrossRef_AniDB_TraktV2 traktxref in res.TraktLinks)
                {
                    CommunityTraktLinks.Add(traktxref);
                }

                btnTvDBCommLinks1.IsEnabled = true;
                btnTvDBCommLinks2.IsEnabled = true;

                CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NoLinksAvailable;
                if (CommunityTVDBLinks.Count > 0)
                {
                    CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NeedApproval;
                    foreach (VM_CrossRef_AniDB_TvDBV2 xref in CommunityTVDBLinks)
                    {
                        if (xref.IsAdminApprovedBool)
                        {
                            CommTvDBButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_ApprovalExists;
                            break;
                        }
                    }
                }

                btnTraktCommLinks1.IsEnabled = true;
                btnTraktCommLinks2.IsEnabled = true;

                CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NoLinksAvailable;
                if (CommunityTraktLinks.Count > 0)
                {
                    CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_NeedApproval;
                    foreach (VM_CrossRef_AniDB_TraktV2 xref in CommunityTraktLinks)
                    {
                        if (xref.IsAdminApprovedBool)
                        {
                            CommTraktButtonText = Shoko.Commons.Properties.Resources.CommunityLinks_ApprovalExists;
                            break;
                        }
                    }
                }

                //SearchStatus = string.Format("{0} Anime still need TvDB approval", link.AnimeNeedingApproval);
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.ToString());
            }
        }