Ejemplo n.º 1
0
 private void BindTraitDescription()
 {
     try
     {
         using (var context = new DatabaseContext())
         {
             var desc = context.VnTraitData.Where(x => x.Name == SelectedTrait).Select(x => x.Description)
                        .FirstOrDefault();
             TraitDescription = ConvertTextBBcode.ConvertText(desc);
         }
     }
     catch (Exception ex)
     {
         Globals.Logger.Error(ex);
         throw;
     }
 }
Ejemplo n.º 2
0
 private void BindTagDescription()
 {
     try
     {
         if (!(_selectedTagIndex >= 0))
         {
             return;
         }
         using (var context = new DatabaseContext())
         {
             foreach (string tag in context.VnTagData.Where(n => n.Name == SelectedTag).Select(d => d.Description))
             {
                 TagDescription = ConvertTextBBcode.ConvertText(tag);
                 break;
             }
         }
     }
     catch (Exception ex)
     {
         Globals.Logger.Error(ex);
         throw;
     }
 }
Ejemplo n.º 3
0
        private void LoadCharacterData()
        {
            try
            {
                TraitCollection.Clear();
                if (!string.IsNullOrEmpty(TraitDescription))
                {
                    TraitDescription = String.Empty;
                }

                using (var context = new DatabaseContext())
                {
                    foreach (var character in context.VnCharacter.Where(x => x.Id == context.VnCharacter
                                                                        .Where(v => v.VnId == Globals.VnId).ToArray()[SelectedCharacterIndex].Id).Where(i => i.VnId == Globals.VnId))
                    {
                        _characterId                  = character.CharacterId;
                        VnCharacterModel.Name         = character.Name;
                        VnCharacterModel.OriginalName = character.Original;
                        VnCharacterModel.Gender       = GetGenderIcon(character.Gender);
                        VnCharacterModel.BloodType    = character.BloodType;
                        VnCharacterModel.Birthday     = character.Birthday;
                        VnCharacterModel.Description  = ConvertTextBBcode.ConvertText(character.Description);
                        if (string.IsNullOrEmpty(character.Aliases))
                        {
                            VnCharacterModel.Aliases = string.Empty;
                        }
                        else
                        {
                            VnCharacterModel.Aliases = character.Aliases.Contains(",")
                                ? character.Aliases.Replace(",", ", ")
                                : character.Aliases;
                        }

                        string path = $@"{Globals.DirectoryPath}\Data\images\characters\{Globals.VnId}\{Path.GetFileName(character.ImageLink)}";
                        if (!string.IsNullOrEmpty(character.ImageLink))
                        {
                            BitmapImage bitmap = new BitmapImage();
                            using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                bitmap.BeginInit();
                                bitmap.CacheOption  = BitmapCacheOption.OnLoad;
                                bitmap.StreamSource = stream;
                                bitmap.EndInit();
                                bitmap.Freeze();
                                VnCharacterModel.Image = bitmap;
                            }
                        }
                        else
                        {
                            VnCharacterModel.Image = new BitmapImage();
                        }
                        VnCharacterModel.Bust   = character.Bust.ToString();
                        VnCharacterModel.Waist  = character.Waist.ToString();
                        VnCharacterModel.Hip    = character.Hip.ToString();
                        VnCharacterModel.Height = character.Height.ToString();
                        VnCharacterModel.Weight = character.Weight.ToString();


                        LoadTraits();
                    }
                }
            }
            catch (Exception exception)
            {
                Globals.Logger.Error(exception);
                throw;
            }
        }
        private void LoadReleaseData()
        {
            int releaseId = 0;

            try
            {
                if (SelectedReleaseIndex < 0)
                {
                    return;
                }
                _releaseLanguages.Clear();
                _releasePlatforms.Clear();

                using (var context = new DatabaseContext())
                {
                    int index = (SelectedReleaseIndex + 1);
                    int count = 1;
                    foreach (EF.Entity.VnRelease.VnRelease release in context.VnRelease.Where(x => x.VnId == Globals.VnId))
                    {
                        if (count != index)
                        {
                            count++;
                        }
                        else
                        {
                            releaseId = Convert.ToInt32(release.ReleaseId);

                            VnReleaseModel.Title         = release.Title;
                            VnReleaseModel.OriginalTitle = release.Original;
                            VnReleaseModel.Released      = release.Released;
                            VnReleaseModel.ReleaseType   = release.ReleaseType;
                            VnReleaseModel.Patch         = release.Patch;
                            VnReleaseModel.Freeware      = release.Freeware;
                            VnReleaseModel.Doujin        = release.Doujin;
                            VnReleaseModel.Website       = $"[url={release.Website}]{release.Website}[/url]";
                            VnReleaseModel.Notes         = ConvertTextBBcode.ConvertText(release.Notes);
                            VnReleaseModel.MinAge        = release.MinAge;
                            if (release.Gtin != null)
                            {
                                VnReleaseModel.Gtin = Convert.ToUInt64(release.Gtin);
                            }
                            VnReleaseModel.Catalog    = release.Catalog;
                            VnReleaseModel.Resolution = release.Resolution;
                            switch (release.Voiced)
                            {
                            case "0":
                                VnReleaseModel.Voiced = String.Empty;
                                return;

                            case "Not":
                                VnReleaseModel.Voiced = $"Not Voiced";
                                break;

                            case "Ero":
                                VnReleaseModel.Voiced = $"Ero Scenes Only";
                                break;

                            case "Partial":
                                VnReleaseModel.Voiced = $"Partially Voiced";
                                break;

                            case "Full":
                                VnReleaseModel.Voiced = $"Fully Voiced";
                                break;

                            default:
                                break;
                            }
                            //TODO: see if I can make this more effiecient
                            string[] animation        = release.Animation.Split(',');
                            string[] animationStrings = new string[2];
                            switch (animation[0])
                            {
                            case "0":
                                break;

                            case "Not":
                                animationStrings[0] = "Story: Not Animated";
                                break;

                            case "Simple":
                                animationStrings[0] = "Story: Simple Animations";
                                break;

                            case "Partial":
                                animationStrings[0] = "Story: Partial Animations";
                                break;

                            case "Full":
                                animationStrings[0] = "Story: Full Animations";
                                break;

                            default:
                                break;
                            }
                            switch (animation[1])
                            {
                            case "0":
                                break;

                            case "Not":
                                animationStrings[1] = "Ero Scenes: Not Animated";
                                break;

                            case "Simple":
                                animationStrings[1] = "Ero Scenes: Simple Animations";
                                break;

                            case "Partial":
                                animationStrings[1] = "Ero Scenes: Partial Animations";
                                break;

                            case "Full":
                                animationStrings[1] = "Ero Scenes: Full Animations";
                                break;

                            default:
                                break;
                            }
                            VnReleaseModel.Animation = string.Join(", ", animationStrings.Where(s => !string.IsNullOrEmpty(s)));

                            foreach (string language in GetLangauges(release.Languages))
                            {
                                if (language != null)
                                {
                                    _releaseLanguages.Add(new ReleaseLanguagesCollection
                                    {
                                        VnReleaseModel =
                                            new VnReleaseModel {
                                            Languages = new BitmapImage(new Uri(language))
                                        }
                                    });
                                }
                            }

                            foreach (string platform in GetPlatforms(release.Platforms))
                            {
                                if (platform != null)
                                {
                                    _releasePlatforms.Add(new ReleasePlatformsCollection
                                    {
                                        VnReleaseModel = new VnReleaseModel
                                        {
                                            Platforms = new BitmapImage(new Uri(platform))
                                        }
                                    });
                                }
                            }
                            break;
                        }
                    }
                }
            }
            catch (System.IndexOutOfRangeException ex)
            {
                Globals.Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Globals.Logger.Error(ex);
                throw;
            }

            LoadReleaseProducerData(releaseId);
        }
Ejemplo n.º 5
0
        private void BindVnData()
        {
            IsMainBinding = true;

            try
            {
                Globals.StatusBar.ProgressText = "Loading Main Data";
                double ProgressIncrement = 11.11111111111111;
                Globals.StatusBar.ProgressPercentage = 0;
                Globals.StatusBar.IsWorkProcessing   = true;
                using (var context = new DatabaseContext())
                {
                    #region VnInfo
                    foreach (VnInfo vnInfo in context.VnInfo.Where(t => t.Title == (_selectedVn)))
                    {
                        Globals.VnId = vnInfo.VnId;


                        foreach (string language in GetLangauges(vnInfo.Languages))
                        {
                            LanguageCollection.Add(new LanguagesCollection
                            {
                                VnMainModel = new VnMainModel {
                                    Languages = new BitmapImage(new Uri(language))
                                }
                            });
                        }

                        foreach (string platform in GetPlatforms(vnInfo.Platforms))
                        {
                            PlatformCollection.Add(new PlatformCollection
                            {
                                VnMainModel = new VnMainModel {
                                    Platforms = new BitmapImage(new Uri(platform))
                                }
                            });
                        }

                        if (Globals.StatusBar.ProgressPercentage != null)
                        {
                            Globals.StatusBar.ProgressPercentage =
                                (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                        }

                        foreach (string language in GetLangauges(vnInfo.OriginalLanguage))
                        {
                            OriginalLanguagesCollection.Add(new OriginalLanguagesCollection
                            {
                                VnMainModel =
                                    new VnMainModel {
                                    OriginalLanguages = new BitmapImage(new Uri(language))
                                }
                            });
                        }
                        if (Globals.StatusBar.ProgressPercentage != null)
                        {
                            Globals.StatusBar.ProgressPercentage =
                                (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                        }

                        VnMainModel.Description = ConvertTextBBcode.ConvertText(vnInfo.Description);
                        if (Globals.StatusBar.ProgressPercentage != null)
                        {
                            Globals.StatusBar.ProgressPercentage =
                                (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                        }

                        BindCoverImage(Convert.ToBoolean(vnInfo.ImageNsfw));
                        if (Globals.StatusBar.ProgressPercentage != null)
                        {
                            Globals.StatusBar.ProgressPercentage =
                                (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                        }

                        VnMainModel.Name     = vnInfo.Title;
                        VnMainModel.Original = vnInfo.Original;
                        VnMainModel.Released = vnInfo.Released;
                        VnMainModel.Aliases  = vnInfo.Aliases;
                        switch (vnInfo.Length)
                        {
                        case "VeryShort":
                            VnMainModel.Length = "Very short";
                            break;

                        case "VeryLong":
                            VnMainModel.Length = "Very long";
                            break;

                        default:
                            VnMainModel.Length = vnInfo.Length;
                            break;
                        }
                        VnMainModel.Popularity = Math.Round(Convert.ToDouble(vnInfo.Popularity), 2);
                        VnMainModel.Rating     = Convert.ToInt32(vnInfo.Rating);
                        break;
                    }


                    #endregion

                    #region VnIcon
                    VnMainModel.VnIcon = LoadIcon();
                    if (Globals.StatusBar.ProgressPercentage != null)
                    {
                        Globals.StatusBar.ProgressPercentage =
                            (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                    }
                    #endregion

                    #region VnAnime

                    foreach (var anime in context.VnInfoAnime.Where(v => v.VnId == Globals.VnId))
                    {
                        VnInfoAnimeCollection.Add(
                            new VnInfoAnime
                        {
                            Title        = anime.TitleEng,
                            OriginalName = anime.TitleJpn,
                            Year         = anime.Year,
                            AnimeType    = anime.AnimeType,
                            AniDb        = $"anidb.net/a{anime.AniDbId}",
                            Ann          = $"animenewsnetwork.com/encyclopedia/anime.php?id={anime.AnnId}",
                            //TODO: AnimeNFo not added because of inconsistant url naming scheme
                        });
                    }
                    if (Globals.StatusBar.ProgressPercentage != null)
                    {
                        Globals.StatusBar.ProgressPercentage =
                            (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                    }

                    #endregion

                    #region VnTags

                    SetTags();

                    if (Globals.StatusBar.ProgressPercentage != null)
                    {
                        Globals.StatusBar.ProgressPercentage =
                            (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                    }

                    #endregion

                    #region VnLinks

                    foreach (VnInfoLinks links in context.VnInfoLinks.Where(v => v.VnId == Globals.VnId))
                    {
                        string wikipedia = String.Empty;
                        string encubed   = String.Empty;
                        string renai     = String.Empty;
                        if (!string.IsNullOrEmpty(links.Wikipedia))
                        {
                            wikipedia = $@"[url=https://en.wikipedia.org/wiki/{links.Wikipedia}]Wikipedia[/url]";
                        }
                        if (!string.IsNullOrEmpty(links.Encubed))
                        {
                            encubed = $@"[url=http://novelnews.net/tag/{links.Encubed}]Encubed[/url]";
                        }
                        if (!string.IsNullOrEmpty(links.Renai))
                        {
                            renai = $@"[url=https://renai.us/game/{links.Renai}]Renai[/url]";
                        }
                        List <string> combinedList = new List <string> {
                            wikipedia, encubed, renai
                        };

                        string combined = string.Join(", ", combinedList.Where(s => !string.IsNullOrEmpty(s)));
                        VnMainModel.Links = combined;
                    }


                    #endregion

                    #region VnRelations

                    foreach (VnInfoRelations relation in context.VnInfoRelations.Where(v => v.VnId == Globals.VnId))
                    {
                        VnInfoRelation.Add(
                            new VnInfoRelation
                        {
                            Title    = relation.Title,
                            Original = relation.Original,
                            Relation = relation.Relation,
                            Official = relation.Official
                        });
                    }
                    if (Globals.StatusBar.ProgressPercentage != null)
                    {
                        Globals.StatusBar.ProgressPercentage =
                            (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                    }

                    #endregion

                    #region VnUserData

                    foreach (var userData in context.VnUserData.Where(v => v.VnId == Globals.VnId))
                    {
                        if (string.IsNullOrEmpty(userData.LastPlayed))
                        {
                            VnMainModel.LastPlayed = "Never";
                        }
                        else
                        {
                            if ((Convert.ToDateTime(userData.LastPlayed) - DateTime.Today).Days > -7) //need to set to negative, for the difference in days
                            {
                                if (Convert.ToDateTime(userData.LastPlayed) == DateTime.Today)
                                {
                                    VnMainModel.LastPlayed = "Today";
                                }
                                else if ((Convert.ToDateTime(userData.LastPlayed) - DateTime.Today).Days > -2 && (Convert.ToDateTime(userData.LastPlayed) - DateTime.Today).Days < 0)
                                {
                                    VnMainModel.LastPlayed = "Yesterday";
                                }
                                else
                                {
                                    VnMainModel.LastPlayed = Convert.ToDateTime(userData.LastPlayed).DayOfWeek.ToString();
                                }
                            }
                            else
                            {
                                VnMainModel.LastPlayed = userData.LastPlayed;
                            }
                        }



                        string[]   splitPlayTime = userData.PlayTime.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        List <int> timeList      = new List <int>(4);
                        timeList.AddRange(splitPlayTime.Select(time => Convert.ToInt32(time)));
                        TimeSpan timeSpan = new TimeSpan(timeList[0], timeList[1], timeList[2], timeList[3]);

                        if (timeSpan < new TimeSpan(0, 0, 0, 1))
                        {
                            VnMainModel.PlayTime = "Never";
                        }
                        if (timeSpan < new TimeSpan(0, 0, 0, 60))
                        {
                            VnMainModel.PlayTime = "Less than 1 minute";
                        }
                        else
                        {
                            string formatted =
                                $"{(timeSpan.Duration().Days > 0 ? $"{timeSpan.Days:0} day{(timeSpan.Days == 1 ? string.Empty : "s")}, " : string.Empty)}" +
                                $"{(timeSpan.Duration().Hours > 0 ? $"{timeSpan.Hours:0} hour{(timeSpan.Hours == 1 ? string.Empty : "s")}, " : string.Empty)}" +
                                $"{(timeSpan.Duration().Minutes > 0 ? $"{timeSpan.Minutes:0} minute{(timeSpan.Minutes == 1 ? string.Empty : "s")} " : string.Empty)}";
                            VnMainModel.PlayTime = formatted;
                        }
                    }
                    if (Globals.StatusBar.ProgressPercentage != null)
                    {
                        Globals.StatusBar.ProgressPercentage =
                            (double)Globals.StatusBar.ProgressPercentage + ProgressIncrement;
                    }

                    #endregion
                }
                if (Globals.StatusBar.ProgressPercentage != null)
                {
                    Globals.StatusBar.ProgressPercentage = 100;
                }
                Globals.StatusBar.ProgressText = "Done";
                Task.Delay(1500).Wait();
                Globals.StatusBar.ProgressPercentage = null;
                Globals.StatusBar.IsDbProcessing     = false;
                Globals.StatusBar.IsWorkProcessing   = false;
                Globals.StatusBar.ProgressText       = string.Empty;
            }
            catch (Exception exception)
            {
                Globals.Logger.Error(exception);
                throw;
            }
            finally
            {
                IsMainBinding = false;
            }
        }