Esempio n. 1
0
        public Player[] FindPlayersMatching(string _PartOfName, string _Realm, string _Race, string _Class, string _Level, string _SortBy = "NameSearch")
        {
            //FIX PARAMS
            _PartOfName = _PartOfName.ToLower();

            WowRealm realm = StaticValues.ConvertRealm(_Realm);

            if (realm == WowRealm.Unknown)
            {
                realm = WowRealm.All;
            }

            int lowerLevel = int.MinValue;
            int upperLevel = int.MaxValue;

            if (_Level != "All")
            {
                try
                {
                    string[] levelsStr = _Level.SplitVF("to");
                    if (levelsStr.Length >= 2)
                    {
                        lowerLevel = int.Parse(levelsStr[0]);
                        upperLevel = int.Parse(levelsStr[1]);
                    }
                }
                catch (Exception)
                { }
            }

            if (lowerLevel < 1 || upperLevel > 60 || upperLevel < lowerLevel)
            {
                _Level = "All";
            }
            else
            {
                _Level = lowerLevel + "to" + upperLevel;
            }

            PlayerRace[] races = null;
            if (_Race != "All")
            {
                try
                {
                    if (_Race == "Horde")
                    {
                        races = new PlayerRace[] { PlayerRace.Orc, PlayerRace.Undead, PlayerRace.Troll, PlayerRace.Tauren, PlayerRace.Blood_Elf }
                    }
                    ;
                    else if (_Race == "Alliance")
                    {
                        races = new PlayerRace[] { PlayerRace.Human, PlayerRace.Night_Elf, PlayerRace.Gnome, PlayerRace.Dwarf, PlayerRace.Draenei }
                    }
                    ;
                    else
                    {
                        PlayerRace currRace = StaticValues.ConvertRace(_Race);
                        if (currRace != PlayerRace.Unknown)
                        {
                            races = new PlayerRace[] { currRace };
                            _Race = currRace.ToString();
                        }
                    }
                }
                catch (Exception)
                { }
            }
            if (races == null)
            {
                _Race = "All";
            }

            PlayerClass[] classes = null;
            if (_Class != "All")
            {
                var currClass = StaticValues.ConvertClass(_Class);
                if (currClass != PlayerClass.Unknown)
                {
                    classes = new PlayerClass[] { currClass };
                    _Class  = currClass.ToString();
                }
            }

            if (classes == null)
            {
                _Class = "All";
            }

            PlayersMatchingSortBy sortBy = PlayersMatchingSortBy.SortBy_NameSearch;

            if (Enum.TryParse("SortBy_" + _SortBy, true, out sortBy) == false)
            {
                sortBy = PlayersMatchingSortBy.SortBy_NameSearch;
            }
            //FIX PARAMS

            if (_PartOfName.Length >= 3 || (_Race != "All" && _Class != "All"))
            {
                return(_NotCached_FindPlayersMatching(_PartOfName, realm, _Race, _Class, _Level, sortBy));
            }
            else
            {
                return(Hidden.ApplicationInstance.Instance.m_ThreadSafeCache.Get("FindPlayersMatching", _NotCached_FindPlayersMatching, _PartOfName, realm, _Race, _Class, _Level, sortBy));
            }
        }
Esempio n. 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            int pageNr    = PageUtility.GetQueryInt(Request, "page", 1);
            int pageIndex = pageNr - 1;//Change range from 0 to * instead of 1 to *
            int count     = PageUtility.GetQueryInt(Request, "count", 100);

            if (count > 500)
            {
                count = 500;
            }

            string searchStr   = PageUtility.GetQueryString(Request, "search", "null");
            string searchRealm = PageUtility.GetQueryString(Request, "realm", "All");
            string searchRace  = PageUtility.GetQueryString(Request, "race", "All");
            string searchClass = PageUtility.GetQueryString(Request, "class", "All");
            string searchLevel = PageUtility.GetQueryString(Request, "level", "All");
            string searchSort  = PageUtility.GetQueryString(Request, "sort", "NameSearch");

            if (searchStr != "")
            {
                this.Title = "Search \"" + searchStr + "\" | RealmPlayers";
            }
            else
            {
                this.Title = "Search | RealmPlayers";
            }
            //List<Tuple<WowRealm, Player>>

            WowRealm realm = StaticValues.ConvertRealm(searchRealm);

            if (realm == WowRealm.Unknown)
            {
                realm = WowRealm.All;
            }

            int nr = 0;

            if (searchStr.Length >= 4 || searchStr.Contains(' '))
            {
                var guildSummaryDB = Hidden.ApplicationInstance.Instance.GetGuildSummaryDatabase();

                var searchStrLower = searchStr.ToLower();
                var guildArray     = guildSummaryDB.GetGuilds(realm).Where((_Value) => _Value.Value.GuildName.ToLower().Contains(searchStrLower));

                if (guildArray.Count() > pageIndex * count)
                {
                    Dictionary <string, Player> realmDB = null;
                    if (realm != WowRealm.All)
                    {
                        realmDB = DatabaseAccess.GetRealmPlayers(this, realm);
                    }
                    var realmDBRealm = realm;

                    System.Text.StringBuilder guildResultTable = new System.Text.StringBuilder(10000);
                    guildResultTable.Append("<h3>Guilds matching &quot;" + searchStr + "&quot;</h3>");
                    guildResultTable.Append("<table id=\"guild-table\" class=\"table\"><thead>");
                    guildResultTable.Append(PageUtility.CreateGuildTableHeaderRow(Table_GuildColumns));
                    guildResultTable.Append("</thead><tbody>");
                    var orderedGuildArray = guildArray.OrderBy((_Value) => _Value.Key);
                    foreach (var guild in orderedGuildArray)
                    {
                        if (realmDBRealm != guild.Value.Realm)
                        {
                            realmDB      = DatabaseAccess.GetRealmPlayers(this, guild.Value.Realm);
                            realmDBRealm = guild.Value.Realm;
                        }
                        guild.Value.GenerateCache(realmDB);
                    }
                    orderedGuildArray = orderedGuildArray.OrderByDescending((_Value) => _Value.Value.GetMembers().Count);
                    foreach (var guild in orderedGuildArray)
                    {
                        if (guild.Value.GetMembers().Count < 2)
                        {
                            continue;
                        }
                        nr++;
                        if (nr > pageIndex * count && nr <= (pageIndex + 1) * count)
                        {
                            guildResultTable.Append(PageUtility.CreateGuildRow(0, guild.Value, Table_GuildColumns));
                        }
                        if (nr >= (pageIndex + 1) * count)
                        {
                            break;
                        }
                    }
                    guildResultTable.Append("</tbody></table>");
                    guildResultTable.Append("<h3>Players matching &quot;" + searchStr + "&quot;</h3>");
                    if (nr > 0)
                    {
                        m_GuildResultTableHTML = new MvcHtmlString(guildResultTable.ToString());
                    }
                }
                else
                {
                    m_GuildResultTableHTML = null;
                    nr += guildArray.Count();
                }
            }

            var playersList = FindPlayersMatching(searchStr, searchRealm, searchRace, searchClass, searchLevel, searchSort);//.OrderBy((_Value) => { return ((int)_Value.Item1).ToString() + _Value.Item2.Name; });

            System.Text.StringBuilder page = new System.Text.StringBuilder(10000);

            IEnumerable <Player> orderedPlayersList = playersList;
            //if (playersList.Count() > 500 || searchStr.Length < 2)
            //    orderedPlayersList = playersList;//.OrderBy(_Player => _Player.Item2.Name);
            //else
            //if (searchStr.Length >= 1)
            //{
            //    string nameFormattedSearchStr = char.ToUpper(searchStr[0]) + searchStr.Substring(1).ToLower();
            //    orderedPlayersList = playersList.OrderByDescending(_Player => _Player.LastSeen.AddYears(_Player.Name.StartsWith(nameFormattedSearchStr) ? 2 : 0));
            //}
            //else
            //{
            //    orderedPlayersList = playersList.OrderBy(_Player => _Player.Name);
            //}
            var playerListCount = playersList.Count();

            foreach (Player player in orderedPlayersList)
            {
                if (playerListCount < count && player.Character.Level < 10 && searchStr.Length <= (double)player.Name.Length * 0.7)
                {
                    continue;
                }

                nr++;
                if (nr > pageIndex * count && nr <= (pageIndex + 1) * count)
                {
                    page.Append(PageUtility.CreatePlayerRow(0, player.Realm, player, Table_Columns));
                }
                if (nr >= (pageIndex + 1) * count)
                {
                    break;
                }
            }
            if (nr != 0 && nr <= pageIndex * count)
            {
                pageIndex = (nr - 1) / count;
                Response.Redirect(PageUtility.CreateUrlWithNewQueryValue(Request, "page", (pageIndex + 1).ToString()));
            }

            m_BreadCrumbHTML   = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddFinish("Characters"));
            m_CharListInfoHTML = new MvcHtmlString(CreateCharListInfo(searchStr, playersList.Count()));
            m_TableHeadHTML    = new MvcHtmlString(PageUtility.CreatePlayerTableHeaderRow(Table_Columns, null, Request));
            m_TableBodyHTML    = new MvcHtmlString(page.ToString());

            m_PaginationHTML = new MvcHtmlString(PageUtility.CreatePagination(Request, pageNr, ((playersList.Count() - 1) / count) + 1));
        }
Esempio n. 3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Title = "Error | RealmPlayers";
            string reasonStr = Request.QueryString.Get("reason");

            if (reasonStr == "loading")
            {
                Response.AppendHeader("Refresh", "10");

                string returnStr = Request.QueryString.Get("return");
                if (returnStr != null)
                {
                    returnStr = System.Web.HttpUtility.UrlDecode(returnStr);
                }
                else
                {
                    returnStr = "";
                }

                var rppDatabase      = Hidden.ApplicationInstance.Instance.GetRPPDatabase(false);
                var itemInfoCache    = Hidden.ApplicationInstance.Instance.GetItemInfoCache(VF_RealmPlayersDatabase.WowVersionEnum.Vanilla, false);
                var itemInfoCacheTBC = Hidden.ApplicationInstance.Instance.GetItemInfoCache(VF_RealmPlayersDatabase.WowVersionEnum.TBC, false);

                m_ErrorTextData = new MvcHtmlString("<h1>Website Database Loading</h1>" +
                                                    "<p>The website is currently loading the database which means you will unfortunately have to wait a bit before it is done."
                                                    + "<br />Depending on what section you are trying to visit this may take anywhere between 10 seconds and 5 minutes."
                                                    + "<br />You can have a look around other parts of the website while the database is loading" + (rppDatabase != null ? ", may i suggest <a class='nav' href='PVPList.aspx?section=lifetime_kills'>Lifetime Kills</a>?" : "")
                                                    + "<br /><br />The website auto refreshes every 10 seconds and when loading is done will redirect you automatically to"
                                                    + "<br /><a class='nav' href='" + returnStr + "'>" + returnStr + "</a></p>");

                if (rppDatabase != null && itemInfoCache != null && itemInfoCacheTBC != null)
                {
                    string waitStr = Request.QueryString.Get("wait");
                    if (waitStr != null)
                    {
                        if (waitStr.Contains('-'))
                        {
                            string[] waitParts = waitStr.Split('-');
                            var      realm     = StaticValues.ConvertRealm(waitParts[0]);
                            if (realm != VF_RealmPlayersDatabase.WowRealm.Unknown)
                            {
                                var realmDatabase = rppDatabase.GetRealm(realm);
                                if (realmDatabase.IsPlayersLoadComplete() == false)
                                {
                                    return;
                                }
                                if (waitParts.Length > 1)
                                {
                                    if (waitParts[1] == "history")
                                    {
                                        if (realmDatabase.IsPlayersHistoryLoadComplete() == false)
                                        {
                                            return;
                                        }
                                    }
                                    //else if (waitParts[1] == "itemsused")
                                    //{
                                    //    if (realmDatabase.IsLoadComplete() == false)
                                    //        return;
                                    //    var cacheDB = realmDatabase.GetCacheDatabase(false, true);
                                    //    if (cacheDB == null || cacheDB.IsItemsUsedLoaded() == false)
                                    //        return;
                                    //}
                                    else if (waitParts[1] == "guilds")
                                    {
                                        if (realmDatabase.IsLoadComplete() == false)
                                        {
                                            return;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (waitParts[0] == "itemdropdatabase")
                                {
                                    if (DatabaseAccess.GetItemDropDatabase(this, VF_RealmPlayersDatabase.WowVersionEnum.Vanilla, NotLoadedDecision.ReturnNull) == null)
                                    {
                                        return;
                                    }
                                }
                            }
                        }
                        else if (waitStr == "contributors")
                        {
                            if (DatabaseAccess.GetContributorStatistics() == null)
                            {
                                return;
                            }
                        }
                    }
                    Response.Redirect(returnStr);
                }
            }
            else if (reasonStr == "website_error")
            {
                string returnStr = Request.QueryString.Get("return");
                if (returnStr != null)
                {
                    returnStr = System.Web.HttpUtility.UrlDecode(returnStr);
                }
                else
                {
                    returnStr = "";
                }

                Response.AppendHeader("Refresh", "20;URL=" + returnStr);

                m_ErrorTextData = new MvcHtmlString("<h1>Website Error</h1>" +
                                                    "<p>There was some error that caused you to be redirect to this site."
                                                    + "<br />The error you encountered has been logged. Please report this error at the forum <a href='http://forum.realmplayers.com'>http://forum.realmplayers.com</a> so i can investigate it and solve it as soon as possible."
                                                    + "<br />You will get redirected to another section of the website to avoid further errors."
                                                    + "<br /><br />The website will refresh after 20 seconds and will redirect you automatically to"
                                                    + "<br /><a class='nav' href='" + returnStr + "'>" + returnStr + "</a></p>");
            }
        }