/// <summary>
        /// Find all dig games with cards
        /// </summary>
        /// <param name="textItemValue"> string to parse </param>
        private void FindCardGames(string textItemValue)
        {
            var updatedResult = string.Join(" ", textItemValue.Replace("Buy key", string.Empty).Split().Where(x => x != ""));

            updatedResult = updatedResult.Remove(0, updatedResult.IndexOf(' ') + 1);
            _page.Dispatcher.Invoke(() => DigGamesWithCrads.Add(updatedResult));

            var price = updatedResult.Remove(0, updatedResult.IndexOf("$") + 1).Replace(".", ",");

            PricesOnlyCards.Add(Convert.ToDouble(price));
        }
 /// <summary>
 /// Clear all page
 /// </summary>
 private void Clear()
 {
     _page.Dispatcher.Invoke(() =>
     {
         DigGames.Clear();
         DigGamesWithCrads.Clear();
         Prices.Clear();
         PricesOnlyCards.Clear();
         TotalSumm          = 0;
         TotalSummWithCards = 0;
         AllGames           = 0;
         AllGamesWithCards  = 0;
     });
 }
        /// <summary>
        /// Get all information about user
        /// </summary>
        /// <param name="enteredUserName"> Entered username by user </param>
        public void GetUserInfo(string enteredUserName)
        {
            if (enteredUserName == null)
            {
                return;
            }

            enteredUserName = enteredUserName.Remove(0, enteredUserName.LastIndexOf("/") + 1);

            var isContinue = _parseService.GetUserAccountInfo(enteredUserName);

            _page.Dispatcher.Invoke(() =>
            {
                if (isContinue)
                {
                    // write UserInfo data
                    _userData.UserName          = _parseService.UserNameParse;
                    _userData.UserGameCount     = _parseService.GameCountParse;
                    _userData.UserCountryCode   = _parseService.UserCountryCodeParse;
                    _userData.UserAvatar        = _parseService.UserAvatarParse;
                    _userData.UserProfileStatus = _parseService.UserProfileStatusParse;
                    _userData.UserProfileState  = _parseService.UserProfileStateParse;

                    // initialize ViewModel properties
                    UserName          = _userData.UserName;
                    UserGameCount     = _userData.UserGameCount;
                    UserCountryCode   = _userData.UserCountryCode;
                    UserAvatar        = _userData.UserAvatar;
                    UserProfileStatus = _userData.UserProfileStatus;
                    UserProfileState  = _userData.UserProfileState;

                    AmountGamesAll       = 0;
                    AmountGamesWithCards = 0;
                    GamesAllSumm         = 0;
                    GamesWithCardsSumm   = 0;
                    PricesAll.Clear();
                    PricesOnlyCards.Clear();
                    UserGames.Clear();

                    CanCloseAvailableAll = true;
                }
            });
        }
        /// <summary>
        /// Parse needed info from DIG
        /// </summary>
        /// <param name="token"> token to check if task was cancelled </param>
        public void Parse(CancellationToken token)
        {
            _page.Dispatcher.Invoke(() =>
            {
                DigGames.Clear();
                DigGamesWithCrads.Clear();
                Prices.Clear();
                PricesOnlyCards.Clear();
                TotalSumm          = 0;
                TotalSummWithCards = 0;
                AllGames           = 0;
                AllGamesWithCards  = 0;
            });

            for (int i = _digSettings.StartPoint; i <= _digSettings.EndPoint; i++)
            {
                var document = ParseSettingsAsync(i).Result;

                if (document is null)
                {
                    return;
                }

                if (token.IsCancellationRequested)
                {
                    return;                                                //token.ThrowIfCancellationRequested();
                }
                var menuItems = document.QuerySelectorAll("tr").Where(item => item.ClassName != null && item.ClassName.Contains("DIG3_14_Gray"));

                foreach (var item in menuItems)
                {
                    FindAllGames(item.TextContent);

                    if (item.TextContent.Contains("Yes"))
                    {
                        FindCardGames(item.TextContent);
                    }
                }
            }

            TotalSumm = Math.Round(Prices.Sum(), 3);
            AllGames  = DigGames.Count;

            TotalSummWithCards = Math.Round(PricesOnlyCards.Sum(), 3);
            AllGamesWithCards  = DigGamesWithCrads.Count;

            /// write into helper class amount and values
            ViewModelHelper.AllGamesHelper      = AllGames;
            ViewModelHelper.AllGamesCardsHelper = AllGamesWithCards;

            ViewModelHelper.AllGamesPriceHelper      = TotalSumm;
            ViewModelHelper.AllGamesPriceCardsHelper = TotalSummWithCards;

            var nameDigGames          = new ObservableCollection <string>();
            var nameDigGamesWithCards = new ObservableCollection <string>();

            foreach (var item in DigGames)
            {
                nameDigGames.Add(item.Remove(item.LastIndexOf("STEAM")).TrimEnd());
            }

            foreach (var item in DigGamesWithCrads)
            {
                var temp = item.Remove(item.LastIndexOf("STEAM")).TrimEnd();
                if (temp.Contains("Yes"))
                {
                    temp = item.Remove(item.LastIndexOf("Yes")).TrimEnd();
                }
                nameDigGamesWithCards.Add(temp);
            }

            ViewModelHelper.DigGames.Clear();
            ViewModelHelper.DigGamesWithCards.Clear();
            ViewModelHelper.PricesAll.Clear();
            ViewModelHelper.PricesWithCards.Clear();

            foreach (var item in nameDigGames)
            {
                ViewModelHelper.DigGames.Add(item);
            }

            foreach (var item in nameDigGamesWithCards)
            {
                ViewModelHelper.DigGamesWithCards.Add(item);
            }

            foreach (var item in Prices)
            {
                ViewModelHelper.PricesAll.Add(item);
            }

            foreach (var item in PricesOnlyCards)
            {
                ViewModelHelper.PricesWithCards.Add(item);
            }

            CanCloseGetAll = true;
            CanCloseClear  = true;
        }
        /// <summary>
        /// Get information abount all available games with cards
        /// </summary>
        public void GetAvailableGamesCardsInfo()
        {
            var isContinueGames = _parseService.GetUserGamesInfo();

            _page.Dispatcher.Invoke(() =>
            {
                if (UserName is null)
                {
                    MessageBox.Show("No entered user", "No user error");
                    return;
                }

                if (ViewModelHelper.DigGames.Count != 0)
                {
                    var tempList = ViewModelHelper.DigGamesWithCards
                                   .Where(item => !UserGames.Contains(item))
                                   .ToList();

                    TempList = tempList;

                    var twmpList = new int[ViewModelHelper.DigGamesWithCards.Count];

                    for (int i = 0; i < ViewModelHelper.DigGamesWithCards.Count; i++)
                    {
                        if (!UserGames.Any(x => x == ViewModelHelper.DigGamesWithCards[i]))
                        {
                            twmpList[i] = i;
                        }
                        else
                        {
                            twmpList[i] = 0;
                        }
                    }

                    PricesOnlyCards.Clear();
                    PricesOnlyCards.Add(0.1);
                    for (int i = 0; i < twmpList.Length; i++)
                    {
                        if (twmpList[i] != 0)
                        {
                            PricesOnlyCards.Add(ViewModelHelper.PricesWithCards[i]);
                        }
                    }

                    GamesWithCardsSumm = Math.Round(PricesOnlyCards.Sum(), 3);

                    AmountGamesWithCards = TempList.Distinct().Count();

                    /// write user cards info into helper class

                    ViewModelHelper.AllGamesCardsUserHelper      = AmountGamesWithCards;
                    ViewModelHelper.AllGamesPriceCardsUserHelper = GamesWithCardsSumm;

                    for (var i = 0; i < TempList.Count; i++)
                    {
                        if (!UserCardGamesDict.ContainsKey(TempList[i]))
                        {
                            UserCardGamesDict.Add(TempList[i], PricesOnlyCards[i]);
                        }
                    }

                    TempList.Clear();
                    ListViewSourse.Clear();

                    foreach (var item in UserCardGamesDict)
                    {
                        ListViewSourse.Add($"Game: {item.Key} | Price: ${item.Value}");
                    }

                    CanCloseSaveCards = true;
                }

                else
                {
                    MessageBox.Show("No games from DIG", "No dig games error");
                    return;
                }
            });
        }