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)); } }
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 "" + searchStr + ""</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 "" + searchStr + ""</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)); }
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>"); } }