Пример #1
0
        public async Task FillInDetails(AnimeSeason season, bool isNew, AiringAnime anime)
        {
            anime.Description = "Loading ...";

            var updated = await _api.GetAnime(anime.Id, true);

            if (updated != null)
            {
                await _data.UpdateEntry(season, isNew, updated);

                UpdateObservableProperties(anime, updated);
            }

            else
            {
                anime.Description = "";
            }
        }
        public async Task <(bool successful, bool changesMade)> FillInDetails(Anime anime)
        {
            var changesMade = false;

            if (GetId(anime) == 0)
            {
                var(successful, id) = await FindId(anime);

                if (successful)
                {
                    SetId(anime, id);
                }
            }

            if (GetId(anime) > 0)
            {
                var updated = await _api.GetAnime(GetId(anime), false);

                if (anime.Details.OverallTotal < anime.Details.TotalEpisodes)
                {
                    anime.Details.OverallTotal = anime.Details.TotalEpisodes;
                }

                if (anime.Details.Synopsis != updated.Description)
                {
                    anime.Details.Synopsis = updated.Description;
                    changesMade            = true;
                }

                if (anime.Details.Title != updated.TitleRomaji)
                {
                    anime.Details.Title = updated.TitleRomaji;
                    changesMade         = true;
                }

                if (anime.Details.English != updated.TitleEnglish)
                {
                    anime.Details.English = updated.TitleEnglish;
                    changesMade           = true;
                }

                if (updated.TotalEpisodes != 0 && anime.Details.TotalEpisodes != updated.TotalEpisodes)
                {
                    anime.Details.TotalEpisodes = updated.TotalEpisodes;
                    anime.Details.OverallTotal  = updated.TotalEpisodes;
                    changesMade = true;
                }

                if (anime.Details.Image == null && updated.ImagePath != null)
                {
                    anime.Details.Image = updated.ImagePath;
                    changesMade         = true;
                }

                // Date details

                if (updated.StartDate.HasValue)
                {
                    var aired = new AnimeSeason
                    {
                        Year   = updated.StartDate.Value.Year,
                        Season = (Season)Math.Ceiling(Convert.ToDouble(updated.StartDate.Value.Month) / 3)
                    };

                    if (anime.Details.Aired != aired)
                    {
                        anime.Details.Aired = aired;
                        changesMade         = true;
                    }
                }

                if (updated.EndDate is DateTime end)
                {
                    var ended = new AnimeSeason
                    {
                        Year   = end.Year,
                        Season = (Season)Math.Ceiling(Convert.ToDouble(end.Month) / 3)
                    };

                    if (anime.Details.Ended != ended)
                    {
                        anime.Details.Ended = ended;
                        changesMade         = true;
                    }
                }

                var continuationChanged = await CheckSeriesContinuation(anime);

                if (continuationChanged)
                {
                    changesMade = true;
                }

                return(true, changesMade);
            }

            return(false, false);
        }