protected void Page_Load(object sender, EventArgs e) { string fightName = PageUtility.GetQueryString(Request, "FightName"); List <PlayerClass> classLimits = ClassControl.GetClassLimits();//PageUtility.GetQueryString(Request, "ClassLimit", "WrIWaIWlIMaIPrIShIRoIPaIDrIHu")); List <PlayerFaction> factionLimits = ClassControl.GetFactionLimits(); bool showMultipleEntries = PageUtility.GetQueryString(Request, "MultipleEntries", "false").ToLower() != "false"; string guildLimit = PageUtility.GetQueryString(Request, "Guild", null); string playerLimit = PageUtility.GetQueryString(Request, "PlayerLimit", null); string andPlayer = PageUtility.GetQueryString(Request, "AndPlayer", null); int showEntriesCount = PageUtility.GetQueryInt(Request, "Count", 50); if (showEntriesCount > 100) { showEntriesCount = 100; } var realm = RealmControl.Realm; var realmDB = ApplicationInstance.Instance.GetRealmDB(VF_RealmPlayersDatabase.WowRealm.Emerald_Dream); //var raidCollection = ApplicationInstance.Instance.GetRaidCollection(); var summaryDatabase = ApplicationInstance.Instance.GetSummaryDatabase(); if (summaryDatabase == null) { return; } if (guildLimit != null) { this.Title = fightName + " Highscore for " + guildLimit + " | RaidStats"; } else if (playerLimit != null) { this.Title = fightName + " Highscore for " + playerLimit + " | RaidStats"; } else { this.Title = fightName + " Highscore | RaidStats"; } IEnumerable <VF_RaidDamageDatabase.Models.PurgedPlayer> purgePlayers = ApplicationInstance.Instance.GetPurgedPlayers(realm); var fightInstances = summaryDatabase.GetHSElligibleBossFights(fightName, realm, guildLimit, null, purgePlayers); //Remove fights that have too low precision if (fightInstances.Count > 0) { string breadCrumbCommon = ""; if (guildLimit != null) { breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("RaidList.aspx?Guild=" + guildLimit, guildLimit) + PageUtility.BreadCrumb_AddLink("BossList.aspx?Guild=" + guildLimit, "Bosses"); } else if (playerLimit != null) { breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("PlayerOverview.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&player=" + playerLimit, playerLimit) + PageUtility.BreadCrumb_AddLink("BossList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&player=" + playerLimit, "Bosses"); } else { breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("BossList.aspx", "Bosses"); } if (ClassControl.HasClassLimits() == true) { string colorClasses = ClassControl.GetColorClassesStr(); string breadCrumb = breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout(fightName, Request, "ClassLimit"); if (ClassControl.HasFactionLimits() == true) { breadCrumb += PageUtility.BreadCrumb_AddFinish("vs " + colorClasses); breadCrumb += PageUtility.BreadCrumb_AddFinish("Only " + ClassControl.GetColorFactionStr()); } else { breadCrumb += PageUtility.BreadCrumb_AddFinish("vs " + colorClasses); } m_BreadCrumbHTML = new MvcHtmlString(breadCrumb); } else { if (ClassControl.HasFactionLimits() == true) { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout(fightName, Request, "FactionLimit") + PageUtility.BreadCrumb_AddFinish("Only " + ClassControl.GetColorFactionStr())); } else { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddFinish(fightName)); } } string graphSection = "<h1>Highscore for "; if (playerLimit != null) { graphSection += playerLimit; } else { graphSection += "players"; } graphSection += " vs " + fightName + "</h1><p>Fights with unrealistic dmg spikes(SW_Stats reset bug) are disqualified from this list.</p>"; //graphSection += "<p>View Highscore for class: "; //foreach (var classLimit in ClassLimitConverter) //{ // graphSection += PageUtility.CreateLink(PageUtility.CreateUrlWithNewQueryValue(Request, "ClassLimit", classLimit.Key), PageUtility.CreateColorCodedName(classLimit.Value.ToString(), classLimit.Value)) + ", "; //} if (playerLimit != null) { showMultipleEntries = true;//Force it to true } else { if (showMultipleEntries == false) { graphSection += "<p>Currently <u>not</u> showing multiple entries per player/guild. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "MultipleEntries", "true") + "'>Click here if you want to show multiple entries per entities</a></p>"; } else { graphSection += "<p>Currently showing multiple entries per player/guild. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "MultipleEntries", "false") + "'>Click here if you do not want to show multiple entries per entities</a></p>"; } } //if (showEntriesCount < 50) //{ // graphSection += "<p>Currently showing " + showEntriesCount + " entries per data table. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Count", "50") + "'>Click here if you want to show up to 50</a></p>"; //} //else if (showEntriesCount >= 50) //{ // graphSection += "<p>Currently showing " + showEntriesCount + " entries per data table. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Count", "25") + "'>Click here if you want to show only 25</a></p>"; //} if (guildLimit != null) { graphSection += "<p>Note that this does only show data from the guild " + guildLimit + ".<br />If you want to see for all guilds click " + PageUtility.CreateLink(PageUtility.CreateUrlWithNewQueryValue(Request, "Guild", "null"), "here") + "</p>"; } //graphSection += "</p>"; m_InfoTextHTML = new MvcHtmlString(graphSection); PlayerFaction factionFilter = PlayerFaction.Unknown; if (factionLimits != null && factionLimits.Count == 1) { factionFilter = factionLimits[0]; } List <string> includePlayers = null; if (andPlayer != null) { includePlayers = new List <string> { andPlayer }; } m_GraphSection = new MvcHtmlString(VF.FightOverallOverviewGenerator.Generate(fightInstances, ApplicationInstance.Instance.GetRPPDatabase(), new VF.FightOverallOverviewGenerator.GenerateDetails { ClassFilter = classLimits, EntriesCount = showEntriesCount, ShowMultipleEntries = showMultipleEntries, RealmFilter = realm, GuildFilter = guildLimit, PlayerFilter = playerLimit, FactionFilter = factionFilter, IncludePlayers = includePlayers })); } }
protected void Page_Load(object sender, EventArgs e) { string playerStr = PageUtility.GetQueryString(Request, "player"); var realm = PageUtility.GetQueryRealm(Request); if (realm == VF_RealmPlayersDatabase.WowRealm.Unknown) { return; } string guildLimit = PageUtility.GetQueryString(Request, "GuildLimit", null); this.Title = playerStr + " @ " + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + " | RaidStats"; m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddFinish(realm.ToString()) + PageUtility.BreadCrumb_AddFinish(playerStr)); var summaryDatabase = ApplicationInstance.Instance.GetSummaryDatabase(); if (summaryDatabase == null) { return; } var currPlayerSummary = summaryDatabase.GetPlayerSummary(playerStr, realm); if (currPlayerSummary == null || currPlayerSummary.PlayerBossStats == null || currPlayerSummary.PlayerBossStats.Count == 0) { return; } var realmPlayer = ApplicationInstance.Instance.GetRealmPlayer(playerStr, realm); System.Text.StringBuilder pageBuilder = new System.Text.StringBuilder(10000); pageBuilder.Append("<h1>" + realmPlayer.Name + "</h1>"); pageBuilder.Append("<h4>Character profile: " + PageUtility.CreateLink_Armory_Player_Colored(realmPlayer) + "</h4>"); pageBuilder.Append("<h4>Attended raids in groups</h4>"); var orderedBossFights = currPlayerSummary.AttendedFights.OrderByDescending((_Value) => _Value.EndDateTime); List <VF_RDDatabase.Raid> attendedRaids = new List <VF_RDDatabase.Raid>(); foreach (var attendedBossFight in orderedBossFights) { attendedRaids.AddUnique(attendedBossFight.CacheRaid); } List <string> groupsAttended = new List <string>(); attendedRaids.ForEach((_Value) => groupsAttended.AddUnique(_Value.CacheGroup.GroupName)); foreach (var group in groupsAttended) { var raidsInGroup = attendedRaids.Where((_Value) => _Value.CacheGroup.GroupName == group); //Sorted, last raid attended is the first in list! var factionColor = PageUtility.GetFactionTextColor(raidsInGroup.First().CacheGroup.GetFaction(ApplicationInstance.Instance.GetRealmDB)); pageBuilder.Append(PageUtility.CreateColorString(group, factionColor) + "(" + raidsInGroup.Count() + " raids between " + raidsInGroup.Last().RaidStartDate.ToDateStr() + " and " + raidsInGroup.First().RaidEndDate.ToDateStr() + ")<br/>"); //foreach (var raid in raidsInGroup) //{ // pageBuilder.Append(PageUtility.CreateLink_RaidOverview(raid, raid.RaidStartDate.ToString("yyyy-MM-dd")) + ", "); //} //pageBuilder.Append("<br/>"); } pageBuilder.Append("<h4><a href='BossList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realmPlayer.Realm) + "&player=" + realmPlayer.Name + "'>Best boss performances</a></h4>"); //pageBuilder.Append("<p><h3>vs Everything</h3>"); //var averageAll = AverageOverview.GenerateAverageDataSet("All", null, null, realm, guildLimit); //float averageDPS, averageHPS; //var dpsRank = GetDPSRank(averageAll, realmPlayer.Name, out averageDPS); //var hpsRank = GetHPSRank(averageAll, realmPlayer.Name, out averageHPS); //pageBuilder.Append("<h4>Average DPS rank: " + PageUtility.CreateLink("AverageOverview.aspx?Instance=All&realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realmPlayer.Realm) + "&andplayer=" + realmPlayer.Name, "#" + dpsRank) + " with DPS " + averageDPS.ToStringDot("0.0") + "</h4>"); //pageBuilder.Append("<h4>Average HPS rank: " + PageUtility.CreateLink("AverageOverview.aspx?Instance=All&realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realmPlayer.Realm) + "&andplayer=" + realmPlayer.Name, "#" + hpsRank) + " with HPS " + averageHPS.ToStringDot("0.0") + "</h4>"); //pageBuilder.Append("</p>"); //pageBuilder.Append("<br />"); var realmProgress = GetRealmProgress(realm); string instanceSummary = ""; if (instanceSummary == "" && (int)realmProgress >= (int)VF_RealmPlayersDatabase.WowInstance.Naxxramas) { instanceSummary = GenerateSummaryForInstance(currPlayerSummary, realmPlayer, "Naxxramas - All Quarters", realm, guildLimit); } if (instanceSummary == "" && (int)realmProgress >= (int)VF_RealmPlayersDatabase.WowInstance.Temple_Of_Ahn_Qiraj) { instanceSummary = GenerateSummaryForInstance(currPlayerSummary, realmPlayer, "Ahn'Qiraj Temple", realm, guildLimit); } if (instanceSummary == "" && (int)realmProgress >= (int)VF_RealmPlayersDatabase.WowInstance.Blackwing_Lair) { instanceSummary = GenerateSummaryForInstance(currPlayerSummary, realmPlayer, "Blackwing Lair", realm, guildLimit); } if (instanceSummary == "") { instanceSummary = GenerateSummaryForInstance(currPlayerSummary, realmPlayer, "Molten Core", realm, guildLimit); } if (instanceSummary == "") { instanceSummary = GenerateSummaryForInstance(currPlayerSummary, realmPlayer, "Zul'Gurub", realm, guildLimit); } pageBuilder.Append(instanceSummary); ///////////////////////////////////////////// pageBuilder.Append("<h2>Attended raids</h2>"); foreach (var attendedRaid in attendedRaids) { pageBuilder.Append(PageUtility.CreateLink_RaidOverview(attendedRaid, attendedRaid.RaidInstance + " @ " + attendedRaid.RaidStartDate) + "<br/>"); } //pageBuilder.Append("<h2>Average Performance vs</h2>"); //foreach (var bossData in currPlayerSummary.PlayerBossStats) //{ // if (bossData.Value.GetSamplesCount() < 3) // continue; // List<VF_RDDatabase.PlayerFightData> dpsSamplesUsed = null; // List<VF_RDDatabase.PlayerFightData> hpsSamplesUsed = null; // List<VF_RDDatabase.PlayerFightData> deathSamplesUsed = null; // float averageDPS = bossData.Value.GetAverageDPS(5, 6, 3, out dpsSamplesUsed); // float averageEffectiveHPS = bossData.Value.GetAverageEffectiveHPS(5, 6, 3, out hpsSamplesUsed); // float averageRawHPS = bossData.Value.GetAverageRawHPS(5, 6, 3); // float averageDeaths = bossData.Value.GetAverageDeaths(5, 6, 3, out deathSamplesUsed); // pageBuilder.Append("<h3>" + bossData.Key + ":</h3>"); // if (averageDPS > 100 || averageEffectiveHPS < 20) // { // pageBuilder.Append("<br/>DPS(<font color='#ff0000'>" + averageDPS.ToStringDot("0.0") + "</font>) Samples("); // foreach (var dpsSample in dpsSamplesUsed) // { // pageBuilder.Append(PageUtility.CreateLink_FightOverview(dpsSample.CacheBossFight, dpsSample.CacheBossFight.StartDateTime.ToString("yyyy-MM-dd")) + ", "); // } // pageBuilder.Length = pageBuilder.Length - 2; // pageBuilder.Append(")"); // } // if(averageEffectiveHPS >= 20) // { // pageBuilder.Append("<br/>Effective HPS(<font color='#ff0000'>" + averageEffectiveHPS.ToStringDot("0.0") + "</font>) Samples("); // foreach (var hpsSample in hpsSamplesUsed) // { // pageBuilder.Append(PageUtility.CreateLink_FightOverview(hpsSample.CacheBossFight, hpsSample.CacheBossFight.StartDateTime.ToString("yyyy-MM-dd")) + ", "); // } // pageBuilder.Length = pageBuilder.Length - 2; // pageBuilder.Append(")"); // } // pageBuilder.Append("<br/>Deaths(<font color='#ff0000'>" + averageDeaths.ToStringDot("0%") + "</font>) Samples("); // foreach (var deathSample in deathSamplesUsed) // { // pageBuilder.Append(PageUtility.CreateLink_FightOverview(deathSample.CacheBossFight, deathSample.CacheBossFight.StartDateTime.ToString("yyyy-MM-dd")) + ", "); // } // pageBuilder.Length = pageBuilder.Length - 2; // pageBuilder.Append(")<br/>"); //} m_PageHTML = new MvcHtmlString(pageBuilder.ToString()); }
protected void Page_Load(object sender, EventArgs e) { bool showMultipleEntries = PageUtility.GetQueryString(Request, "MultipleEntries", "false").ToLower() != "false"; int maxCount = PageUtility.GetQueryInt(Request, "Count", 50); if (maxCount > 100) { maxCount = 100; } string guildLimit = PageUtility.GetQueryString(Request, "Guild", null); var realm = RealmControl.Realm; string graphSection = ""; string breadCrumbCommon = ""; if (guildLimit != null) { showMultipleEntries = true; this.Title = "Instance records for " + guildLimit + " | RaidStats"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("RaidList.aspx?Guild=" + guildLimit + "&realm=" + StaticValues.ConvertRealmParam(realm), guildLimit); // + PageUtility.BreadCrumb_AddFinish("Instances")); m_PageInfoHTML = new MvcHtmlString("<h1>Raid Instances for " + guildLimit + "</h1>" + "<p>Fastest instance clears by " + guildLimit + ". Sorted by difficulty.</p>" + "<p>Note that this does only show data from the guild " + guildLimit + ".<br />If you want to see for all guilds click " + PageUtility.CreateLink("InstanceList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm), "here") + "</p>"); } else { if (showMultipleEntries == false) { graphSection += "<p>Currently <u>not</u> showing multiple entries per guild. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "MultipleEntries", "true") + "'>Click here if you want to show multiple entries per guild</a></p>"; } else { graphSection += "<p>Currently showing multiple entries per guild. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "MultipleEntries", "false") + "'>Click here if you do not want to show multiple entries per guild</a></p>"; } this.Title = "Instance records | RaidStats"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm); // + PageUtility.BreadCrumb_AddFinish("Instances")); m_PageInfoHTML = new MvcHtmlString("<h1>Raid Instances</h1>" + "<p>Fastest instance clears by guilds. Sorted by difficulty.</p>"); } m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddFinish("Instances")); graphSection += "<style>" + PageUtility.CreateStatsBars_HTML_CSSCode() + "</style>"; PageUtility.StatsBarStyle statsBarStyle = new PageUtility.StatsBarStyle { m_TitleText = "", m_BarTextColor = "#000", m_LeftSideTitleText = "#", m_RightSideTitleText = "", m_BeforeBarWidth = 100, m_MaxWidth = 700, m_AfterBarWidth = 30 }; //var raidCollection = ApplicationInstance.Instance.GetRaidCollection(); var summaryDatabase = ApplicationInstance.Instance.GetSummaryDatabase(); if (summaryDatabase == null) { return; } Dictionary <string, List <RaidInstanceClearData> > raidInstanceClears = new Dictionary <string, List <RaidInstanceClearData> >(); foreach (var groupRC in summaryDatabase.GroupRCs) { if (realm != VF_RealmPlayersDatabase.WowRealm.All && realm != groupRC.Value.Realm) { continue; } if (groupRC.Value.Realm == VF_RealmPlayersDatabase.WowRealm.Unknown || groupRC.Value.Realm == VF_RealmPlayersDatabase.WowRealm.Test_Server) { continue; } if (guildLimit != null && guildLimit != groupRC.Value.GroupName) { continue; } foreach (var raid in groupRC.Value.Raids) { Dictionary <string, string[]> instanceRuns; if (BossInformation.InstanceRuns.TryGetValue(raid.Value.RaidInstance, out instanceRuns) == false) { continue; } foreach (var instanceRun in instanceRuns) { var instanceClearData = RaidInstanceClearData.Generate(raid, instanceRun.Value); if (instanceClearData != null) { raidInstanceClears.AddToList(instanceRun.Key, instanceClearData); } } } } var orderedInstanceClears = raidInstanceClears.OrderBy((_Value) => { if (_Value.Key == "Zul'Gurub") { return(0); } else if (_Value.Key == "Ruins of Ahn'Qiraj") { return(10); } else if (_Value.Key == "Molten Core") { return(20); } else if (_Value.Key == "Blackwing Lair") { return(30); } else if (_Value.Key == "Temple of Ahn'Qiraj") { return(40); } else if (_Value.Key == "Naxxramas - Arachnid Quarter") { return(50); } else if (_Value.Key == "Naxxramas - Construct Quarter") { return(60); } else if (_Value.Key == "Naxxramas - Plague Quarter") { return(70); } else if (_Value.Key == "Naxxramas - Military Quarter") { return(80); } else if (_Value.Key == "Naxxramas - All Quarters") { return(85); } else if (_Value.Key == "Naxxramas") { return(90); } else { return(100); } }); foreach (var riclears in orderedInstanceClears) { List <PageUtility.StatsBarData> statsBars = new List <PageUtility.StatsBarData>(); var orderedClears = riclears.Value.OrderBy((_Value) => { return(_Value.GetTimeSpan()); }); int clearNr = 0; double firstClearCompareValue = 1 / orderedClears.First().GetTimeSpan().TotalSeconds; List <string> ignoreGuilds = new List <string>(); foreach (var riclear in orderedClears) { if (showMultipleEntries == false) { if (ignoreGuilds.Contains(riclear.m_Raid.CacheGroup.GroupName + (int)riclear.m_Raid.CacheGroup.Realm) == true) { continue; } else { ignoreGuilds.Add(riclear.m_Raid.CacheGroup.GroupName + (int)riclear.m_Raid.CacheGroup.Realm); } } if (++clearNr > maxCount) { break; } double compareValue = 1 / riclear.GetTimeSpan().TotalSeconds; string totalTimeStr = "" + (int)riclear.GetTimeSpan().TotalMinutes + " mins";//ser bäst ut /*if (riclear.GetTimeSpan().Days > 0) * totalTimeStr += riclear.GetTimeSpan().Days + " days "; * if (riclear.GetTimeSpan().Hours > 0) * totalTimeStr += riclear.GetTimeSpan().Hours + " hours "; * if (riclear.GetTimeSpan().Minutes > 0) * totalTimeStr += riclear.GetTimeSpan().Minutes + " mins "; * if (riclear.GetTimeSpan().Seconds > 0) * totalTimeStr += riclear.GetTimeSpan().Seconds + " secs ";*/ string factionColor = "#CCCCCC"; try { var recordedByPlayer = ApplicationInstance.Instance.GetRealmDB(riclear.m_Raid.CacheGroup.Realm).RD_FindPlayer(riclear.m_Raid.BossFights.Last().PlayerFightData.First().Item1, riclear.m_Raid.m_RaidMembers); var guildFaction = VF_RealmPlayersDatabase.StaticValues.GetFaction(recordedByPlayer.Character.Race); if (guildFaction == VF_RealmPlayersDatabase.PlayerFaction.Horde) { factionColor = "#A75757"; } else if (guildFaction == VF_RealmPlayersDatabase.PlayerFaction.Alliance) { factionColor = "#575fA7"; } else { factionColor = "#FFFFFF"; } } catch (Exception) { factionColor = "#CCCCCC"; } statsBars.Add(new PageUtility.StatsBarData { m_BeforeBarText = "#" + clearNr + " (" + PageUtility.CreateLink("RaidOverview.aspx?Raid=" + riclear.m_Raid.UniqueRaidID , riclear.m_Raid.RaidStartDate.ToString("yyyy-MM-dd")) + ")", m_OnBarLeftText = PageUtility.CreateLink("RaidList.aspx?realm=" + StaticValues.ConvertRealmParam(riclear.m_Raid.CacheGroup.Realm) + "&Guild=" + riclear.m_Raid.CacheGroup.GroupName, riclear.m_Raid.CacheGroup.GroupName + (realm == VF_RealmPlayersDatabase.WowRealm.All ? " (" + StaticValues.ConvertRealmParam(riclear.m_Raid.CacheGroup.Realm) + ")" : "")), /*PageUtility.CreateLink("http://realmplayers.com/GuildViewer.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(riclear.m_Raid.Realm) + "&guild=" + riclear.m_Raid.RaidOwnerName, riclear.m_Raid.RaidOwnerName)*/ m_BarColor = factionColor, m_PercentageWidth = compareValue / firstClearCompareValue, m_AfterBarText = PageUtility.CreateColorisedFactor(1.0), //m_BarTextColor = "#000", m_OnBarRightText = totalTimeStr, m_OnBarTextWidth = StaticValues.MeasureStringLength(riclear.m_Raid.CacheGroup.GroupName + (realm == VF_RealmPlayersDatabase.WowRealm.All ? StaticValues.ConvertRealmParam(realm) + " ()" : "") + " " + totalTimeStr) }); } statsBarStyle.m_TitleText = riclears.Key; graphSection += PageUtility.CreateStatsBars_HTML(statsBarStyle, statsBars, 25); } m_GraphsHTML = new MvcHtmlString(graphSection); }
//public static bool derp = false; //public static void ValidateCacheOutput(HttpContext context, Object data, // ref HttpValidationStatus status) //{ // if (derp == true) // status = HttpValidationStatus.Valid; // else // status = HttpValidationStatus.Invalid; // if (context.Request.QueryString["Status"] != null) // { // string pageStatus = context.Request.QueryString["Status"]; // if (pageStatus == "invalid") // status = HttpValidationStatus.Invalid; // else if (pageStatus == "ignore") // status = HttpValidationStatus.IgnoreThisRequest; // else // status = HttpValidationStatus.Valid; // } // else // status = HttpValidationStatus.Valid; //} protected void Page_Load(object sender, EventArgs e) { //Response.Cache.AddValidationCallback( // new HttpCacheValidateHandler(ValidateCacheOutput), // null); //Response.Cache.SetExpires(DateTime.Now.AddSeconds(600)); //Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache); //Response.Cache.SetValidUntilExpires(true); bool filteredData = PageUtility.GetQueryString(Request, "Filtered", "true") == "true"; int uniqueRaidID = PageUtility.GetQueryInt(Request, "Raid", -1); if (uniqueRaidID == -1) { Response.Redirect("RaidList.aspx"); } this.Title = "Raid " + uniqueRaidID + " | RaidStats"; #if false//LIMIT_USERS_USING_LOGIN_SYSTEM if ((DateTime.Now - ApplicationInstance.Instance.GetRaidDate(uniqueRaidID)).TotalDays > 30) { var user = Authentication.GetSessionUser(Page, true); if (user.IsPremium() == false) { m_TrashHTML = new MvcHtmlString("Sorry. Raids that are older than 30 days are only viewable for Premium users!"); return; } } #endif if (PageUtility.GetQueryString(Request, "Debug", "null") != "null") { var raidFiles = ApplicationInstance.Instance.GetRaidFiles(uniqueRaidID); if (raidFiles != null) { Logger.ConsoleWriteLine("RaidOverview::Debug(): GetRaidFiles was: \"" + raidFiles.MergeToStringVF("\", \"") + "\"", ConsoleColor.DarkYellow); } else { Logger.ConsoleWriteLine("RaidOverview::Debug(): GetRaidFiles was null!", ConsoleColor.DarkYellow); } } var orderedFights = ApplicationInstance.Instance.GetRaidBossFights(uniqueRaidID); if (orderedFights == null || orderedFights.Count() == 0) { Response.Redirect("RaidList.aspx"); } var orderedTrashFights = ApplicationInstance.Instance.GetRaidTrashFights(uniqueRaidID); var realmDB = ApplicationInstance.Instance.GetRealmDB(orderedFights.First().GetRaid().Realm); var currRaid = orderedFights.First().GetRaid(); if (currRaid.Realm == VF_RealmPlayersDatabase.WowRealm.Test_Server && PageUtility.GetQueryString(Request, "Debug") == "null") { Response.Redirect("RaidList.aspx"); } m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRaidList() + PageUtility.BreadCrumb_AddLink("RaidList.aspx?Guild=" + currRaid.RaidOwnerName + "&realm=" + StaticValues.ConvertRealmParam(realmDB.Realm), currRaid.RaidOwnerName) + PageUtility.BreadCrumb_AddFinish(currRaid.RaidInstance + "(" + currRaid.RaidID.ToString() + ")")); bool displayLoot = false; if (orderedFights.FindIndex((_Value) => _Value.GetItemDrops().Count > 0) != -1) { displayLoot = true; } m_TableHeadHTML = new MvcHtmlString( PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("#Nr") + PageUtility.CreateTableColumnHead("Boss") + PageUtility.CreateTableColumnHead("Players") + (displayLoot == true ? PageUtility.CreateTableColumnHead("Items Dropped") : "") + //PageUtility.CreateTableColumnHead(PageUtility.CreateTooltipText("Recorded Damage", "Recorded damage done by players during the fight")) + PageUtility.CreateTableColumnHead("Player Deaths") + PageUtility.CreateTableColumnHead("Fight Duration") + PageUtility.CreateTableColumnHead("Kill Time") + PageUtility.CreateTableColumnHead(PageUtility.CreateTooltipText("Precision", "How much percentage of the recorded fight is vs the boss intended. Calculated using the formula: Boss+Adds DmgTaken/Recorded Damage")))); List <string> attendingRaidPlayers = new List <string>(); string tableBody = ""; foreach (var fight in orderedFights) { var attendingFightPlayers = fight.GetAttendingUnits((_Name) => { return(realmDB.RD_IsPlayer(_Name, fight)); }); attendingRaidPlayers.AddRange(attendingFightPlayers); double precision = fight.CalculatePrecision(realmDB.RD_IsPlayerFunc(fight)); var attemptType = fight.GetFightData().GetAttemptType(); string attemptStr = ""; if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.KillAttempt) { attemptStr = "(kill)"; } else if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.WipeAttempt) { attemptStr = "(attempt)"; } string trashPercentageStr = "<font color='#FF0000'>???</font>"; if (precision != 0) { double trashPercentage = precision; if (precision >= 1.0) { precision = 1.0; } trashPercentageStr = PageUtility.CreateColorisedPercentage(precision); } var realm = fight.GetRaid().Realm; /////////////////////// string lootDropped = ""; if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.KillAttempt) { lootDropped = LootGenerator.CreateLootDroppedData(fight.GetItemDrops(), realmDB, ApplicationInstance.Instance.GetItemSummaryDatabase(), ApplicationInstance.Instance.GetItemInfo); } /////////////////////// tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#" + (fight.GetRaidBossFightIndex() + 1)) + PageUtility.CreateTableColumn(PageUtility.CreateLink("FightOverview.aspx?Raid=" + uniqueRaidID + "&Fight=" + fight.GetRaidBossFightIndex(), "<font color='#f70002'>" + fight.GetFightData().FightName + "</font>") + attemptStr) + PageUtility.CreateTableColumn(attendingFightPlayers.Count.ToString()) + (displayLoot == true ? PageUtility.CreateTableColumn(lootDropped) : "") + //PageUtility.CreateTableColumn(((int)(totalValue / 1000)).ToString() + "k") + PageUtility.CreateTableColumn(((int)fight.GetTotal((_Value) => { return(_Value.I.Death); } , (_Value) => { return(realmDB.RD_IsPlayer(_Value.Item1, fight) && _Value.Item2.I.Death > 0); })).ToString()) + PageUtility.CreateTableColumn(fight.GetFightDuration().ToString() + " sec") + PageUtility.CreateTableColumn(fight.GetFightData().StartDateTime.AddSeconds(fight.GetFightData().GetFightRecordDuration()).ToLocalTime().ToString("yyy-MM-dd HH:mm:ss")) + PageUtility.CreateTableColumn(trashPercentageStr));//PageUtility.CreateTooltipText(trashPercentageStr, (bossPlusAddsDmgTaken != 0 ? bossPlusAddsDmgTaken.ToString() : "???") + "/" + totalValue.ToString()))); } m_TableBodyHTML = new MvcHtmlString(tableBody); ///////////////////// List <Tuple <string, VF_RealmPlayersDatabase.PlayerClass> > playersAttending = new List <Tuple <string, VF_RealmPlayersDatabase.PlayerClass> >(); foreach (var playerName in attendingRaidPlayers.Distinct()) { var playerData = realmDB.RD_FindPlayer(playerName, attendingRaidPlayers); if (playerData != null) { playersAttending.Add(new Tuple <string, VF_RealmPlayersDatabase.PlayerClass>(playerName, playerData.Character.Class)); } } string playersAttendingStr = "<h3>Players attending(" + playersAttending.Count + "):</h3>"; var orderedPlayersAttending = playersAttending.OrderBy((_Value) => { return("" + (int)_Value.Item2 + _Value.Item1); }); try { var lastClass = orderedPlayersAttending.First().Item2; foreach (var player in orderedPlayersAttending) { if (lastClass != player.Item2) { playersAttendingStr += "<br />"; } playersAttendingStr += PageUtility.CreateColorCodedName(player.Item1, player.Item2) + " "; lastClass = player.Item2; } } catch (Exception ex) { } ///////////////////// var recordedBy = currRaid.GetRecordedByPlayers(); string recordedByString = ""; foreach (var playerName in recordedBy) { var playerData = realmDB.RD_FindPlayer(playerName, attendingRaidPlayers); if (playerData != null) { if (recordedByString == "") { recordedByString += " by "; } recordedByString += PageUtility.CreateColorCodedName(playerData) + ", "; } } if (recordedByString != "") { recordedByString = recordedByString.Substring(0, recordedByString.Length - 2); //Get rid of last ", " if (recordedByString.Contains(", ")) { var subStr = recordedByString.Substring(recordedByString.LastIndexOf(", ")); var replacement = subStr.Replace(", ", " and "); recordedByString = recordedByString.Replace(subStr, replacement); } } var startRecordTime = orderedFights.First().GetFightData().StartDateTime.ToLocalTime(); var endRecordTime = orderedFights.Last().GetFightData().GetEndDateTime().ToLocalTime(); var totalRecordTime = " (" + ((int)(endRecordTime - startRecordTime).TotalMinutes) + " minutes and " + (endRecordTime - startRecordTime).Seconds + " seconds)"; m_RaidOverviewInfoHTML = "<h1>" + currRaid.RaidOwnerName + " vs " + currRaid.RaidInstance + "(" + currRaid.RaidID.ToString() + ")<span class='badge badge-inverse'>" + orderedFights.Count() + " fights</span></h1>" + "<p>Fights recorded" + recordedByString + " between " + startRecordTime.ToString("yyy-MM-dd HH:mm:ss") + " and " + endRecordTime.ToString("yyy-MM-dd HH:mm:ss") + totalRecordTime + "</p>" + playersAttendingStr; string graphStyle = "<style>" + PageUtility.CreateStatsBars_HTML_CSSCode() + "</style>"; string totalBossMeters = "<h2>Damage/Healing total(only bosses)</h2>" + "<p>Total for all boss fights"; string totalTrashMeters = "<h2>Damage/Healing total(only trash)</h2>" + "<p>Total for all trash fights"; if (filteredData == true) { totalBossMeters += ", unrealistic dmg/heal spikes are filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "false") + "'>View Unfiltered</a></p><br />"; totalTrashMeters += ", unrealistic dmg/heal spikes are filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "false") + "'>View Unfiltered</a></p><br />"; } else { totalBossMeters += ", unrealistic dmg/heal spikes are not filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "true") + "'>View Filtered</a></p><br />"; totalTrashMeters += ", unrealistic dmg/heal spikes are not filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "true") + "'>View Filtered</a></p><br />"; } totalBossMeters += GenerateTotalMeters(filteredData, orderedFights, realmDB, attendingRaidPlayers); if (orderedTrashFights.Count > 0) { totalTrashMeters += GenerateTotalMeters(filteredData, orderedTrashFights, realmDB, attendingRaidPlayers); } else { totalTrashMeters = ""; } m_GraphSection = new MvcHtmlString(graphStyle + "<div class='blackframe'>" + totalBossMeters + "</div><br/><div class='blackframe'>" + totalTrashMeters + "</div>"); //TRASH HANDLING { if (orderedTrashFights.Count > 0) { System.Text.StringBuilder trashSection = new System.Text.StringBuilder(4000); trashSection.Append("<div class='row'><div class='span12'><table class='table'><thead>"); trashSection.Append(PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("Trash") + PageUtility.CreateTableColumnHead("Players") + PageUtility.CreateTableColumnHead("Player Deaths") + PageUtility.CreateTableColumnHead("Trash Duration"))); trashSection.Append("</thead><tbody>"); foreach (var fight in orderedTrashFights) { var attendingFightPlayers = fight.GetAttendingUnits((_Name) => { return(realmDB.RD_IsPlayer(_Name, attendingRaidPlayers)); }); var endTime = fight.GetStartDateTime().AddSeconds(fight.GetFightData().GetFightRecordDuration()); trashSection.Append(PageUtility.CreateTableRow("", PageUtility.CreateTableColumn(PageUtility.CreateLink("FightOverview.aspx?Raid=" + uniqueRaidID + "&Trash=" + fight.GetRaidBossFightIndex(), "<font color='#f70002'>" + fight.GetStartDateTime().ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + " to " + endTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "</font>")) + PageUtility.CreateTableColumn(attendingFightPlayers.Count.ToString()) + PageUtility.CreateTableColumn(((int)fight.GetTotal((_Value) => { return(_Value.I.Death); } , (_Value) => { return(realmDB.RD_IsPlayer(_Value.Item1, attendingRaidPlayers) && _Value.Item2.I.Death > 0); })).ToString()) + PageUtility.CreateTableColumn((int)(endTime - fight.GetStartDateTime()).TotalMinutes + " min") )); } trashSection.Append("</tbody></table></div></div>"); m_TrashHTML = new MvcHtmlString(trashSection.ToString()); } } }
protected void Page_Load(object sender, EventArgs e) { string guildLimit = PageUtility.GetQueryString(Request, "Guild", "null"); string playerLimit = PageUtility.GetQueryString(Request, "player", "null"); var realm = RealmControl.Realm; string breadCrumbCommon = ""; if (guildLimit != "null") { playerLimit = "null"; this.Title = "Boss records for " + guildLimit + " | RaidStats"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("RaidList.aspx?Guild=" + guildLimit, guildLimit); m_BossListInfoHTML = new MvcHtmlString("<h1>Raid Bosses for " + guildLimit + "</h1>" + "<p>Top DPS, HPS and fastest kill times are listed below for the different bosses</p>" + "<p>Note that this does only show data from the guild " + guildLimit + ".<br />If you want to see for all guilds click " + PageUtility.CreateLink("BossList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm), "here") + "</p>"); } else if (playerLimit != "null") { this.Title = "Boss records for " + playerLimit + " | RaidStats"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddLink("PlayerOverview.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&player=" + playerLimit, playerLimit); m_BossListInfoHTML = new MvcHtmlString("<h1>Raid Boss records for " + playerLimit + "</h1>" + "<p>Top DPS, HPS and fastest kill times are listed below for the different bosses</p>" + "<p>Note that this does only show data for player " + playerLimit + ".<br />If you want to see for all players on the realm click " + PageUtility.CreateLink("BossList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm), "here") + "</p>"); } else { this.Title = "Boss records | RaidStats"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm); m_BossListInfoHTML = new MvcHtmlString("<h1>Raid Bosses</h1>" + "<p>Top DPS, HPS and fastest kill times are listed below for the different bosses</p>"); } if (ClassControl.HasClassLimits() == true) { string colorClasses = ClassControl.GetColorClassesStr(); string breadCrumb = breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout("Bosses", Request, "ClassLimit"); if (ClassControl.HasFactionLimits() == true) { breadCrumb += PageUtility.BreadCrumb_AddFinish("vs " + colorClasses); breadCrumb += PageUtility.BreadCrumb_AddFinish("Only " + ClassControl.GetColorFactionStr()); } else { breadCrumb += PageUtility.BreadCrumb_AddFinish("vs " + colorClasses); } m_BreadCrumbHTML = new MvcHtmlString(breadCrumb); } else { if (ClassControl.HasFactionLimits() == true) { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout("Bosses", Request, "FactionLimit") + PageUtility.BreadCrumb_AddFinish("Only " + ClassControl.GetColorFactionStr())); } else { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddFinish("Bosses")); } } m_TableHeadHTML = new MvcHtmlString( PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("Instance") + PageUtility.CreateTableColumnHead("Boss") + PageUtility.CreateTableColumnHead("Top DPS") + PageUtility.CreateTableColumnHead("Top HPS") + PageUtility.CreateTableColumnHead("Fastest Kill") + PageUtility.CreateTableColumnHead("Kill Count"))); DateTime earliestCompatibleDate = new DateTime(2013, 10, 23, 0, 0, 0); var realmDB = ApplicationInstance.Instance.GetRealmDB(VF_RealmPlayersDatabase.WowRealm.Emerald_Dream); //var raidCollection = ApplicationInstance.Instance.GetRaidCollection(); var summaryDatabase = ApplicationInstance.Instance.GetSummaryDatabase(); if (summaryDatabase == null) { return; } IEnumerable <VF_RaidDamageDatabase.Models.PurgedPlayer> purgePlayers = ApplicationInstance.Instance.GetPurgedPlayers(realm); var classLimits = ClassControl.GetClassLimits(); var factionLimits = ClassControl.GetFactionLimits(); string tableBody = ""; foreach (var boss in BossInformation.BossFights) { var bossFights = summaryDatabase.GetHSElligibleBossFights(boss.Key, realm, guildLimit == "null" ? null : guildLimit, playerLimit == "null" ? null : playerLimit, purgePlayers); if (bossFights.Count > 0) { //averagePrecision /= bossFights.Count; Tuple <string, int> fastestKill = new Tuple <string, int>("", int.MaxValue); Tuple <string, double> topDPS = new Tuple <string, double>("", 0.0); Tuple <string, double> topHPS = new Tuple <string, double>("", 0.0); foreach (var fight in bossFights) { if (realmDB.Realm != fight.CacheRaid.CacheGroup.Realm) { realmDB = ApplicationInstance.Instance.GetRealmDB(fight.CacheRaid.CacheGroup.Realm); } //if (fight.DataDetails.FightPrecision < averagePrecision - 0.05) // continue; if (fight.FightDuration < fastestKill.Item2) { fastestKill = new Tuple <string, int>( PageUtility.CreateLink("FightOverview.aspx?Raid=" + fight.CacheRaid.UniqueRaidID + "&Fight=" + fight.StartDateTime.ToString("ddHHmmss"), fight.FightDuration.ToString() + " seconds") , fight.FightDuration); } var unitsData = fight.PlayerFightData;//.GetFilteredPlayerUnitsData(true, realmDB.RD_GetPlayerIdentifier); Tuple <string, int> topDmg = new Tuple <string, int>("", 0); Tuple <string, int> topHeal = new Tuple <string, int>("", 0); foreach (var unit in unitsData) { if (unit.Item2.Damage > topDmg.Item2) { var playerName = unit.Item1; if (playerName == "Unknown") { continue; } if (playerLimit != "null" && playerLimit != playerName) { continue; } if (BossInformation.BossFights.ContainsKey(playerName) == true) { continue; } var playerData = realmDB.RD_FindPlayer(playerName, fight); if (playerData != null && (classLimits == null || classLimits.Contains(playerData.Character.Class)) && (factionLimits == null || factionLimits.Contains(StaticValues.GetFaction(playerData.Character.Race)))) { topDmg = new Tuple <string, int>(unit.Item1, unit.Item2.Damage); } } if (unit.Item2.EffectiveHeal > topHeal.Item2) { var playerName = unit.Item1; if (playerName == "Unknown") { continue; } if (playerLimit != "null" && playerLimit != playerName) { continue; } if (BossInformation.BossFights.ContainsKey(playerName) == true) { continue; } var playerData = realmDB.RD_FindPlayer(playerName, fight); if (playerData != null && (classLimits == null || classLimits.Contains(playerData.Character.Class)) && (factionLimits == null || factionLimits.Contains(StaticValues.GetFaction(playerData.Character.Race)))) { topHeal = new Tuple <string, int>(unit.Item1, unit.Item2.EffectiveHeal); } } } double topThisDPS = (double)topDmg.Item2 / (double)fight.FightDuration; double topThisHPS = (double)topHeal.Item2 / (double)fight.FightDuration; if (topThisDPS > topDPS.Item2) { topDPS = new Tuple <string, double>(PageUtility.CreateLink_RaidStats_Player(topDmg.Item1, realmDB.Realm , PageUtility.CreateColorCodedName(topDmg.Item1, realmDB.GetPlayer(topDmg.Item1).Character.Class)) + "(" + PageUtility.CreateLink("FightOverview.aspx?Raid=" + fight.CacheRaid.UniqueRaidID + "&Fight=" + fight.StartDateTime.ToString("ddHHmmss") , topThisDPS.ToStringDot("0.0")) + ")", topThisDPS); } if (topThisHPS > topHPS.Item2) { topHPS = new Tuple <string, double>(PageUtility.CreateLink_RaidStats_Player(topHeal.Item1, realmDB.Realm , PageUtility.CreateColorCodedName(topHeal.Item1, realmDB.GetPlayer(topHeal.Item1).Character.Class)) + "(" + PageUtility.CreateLink("FightOverview.aspx?Raid=" + fight.CacheRaid.UniqueRaidID + "&Fight=" + fight.StartDateTime.ToString("ddHHmmss") , topThisHPS.ToStringDot("0.0")) + ")", topThisHPS); } } int killCount = bossFights.Count((_Value) => { return(_Value.AttemptType == VF_RDDatabase.AttemptType.KillAttempt); }); tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn(PageUtility.CreateImage(StaticValues._RaidInstanceImages[boss.Value]) + boss.Value) + PageUtility.CreateTableColumn(PageUtility.CreateLink("FightOverallOverview.aspx?FightName=" + boss.Key + (guildLimit != "null" ? "&Guild=" + guildLimit : "") + (playerLimit != "null" ? "&realm=" + StaticValues.ConvertRealmParam(realm) + "&PlayerLimit=" + playerLimit : ""), boss.Key)) + PageUtility.CreateTableColumn(topDPS.Item1) + PageUtility.CreateTableColumn(topHPS.Item1) + PageUtility.CreateTableColumn(fastestKill.Item1) + PageUtility.CreateTableColumn(killCount.ToString())); } } m_TableBodyHTML = new MvcHtmlString(tableBody); }
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", 50); if (count > 500) { count = 500; } var realm = RealmControl.Realm; string guildStr = PageUtility.GetQueryString(Request, "Guild", null); if (guildStr != null) { this.Title = "Raids for " + guildStr + " | RaidStats"; m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddFinish(guildStr) + PageUtility.BreadCrumb_AddFinish("Raids")); m_RaidListInfoHTML = new MvcHtmlString("<h1>Recorded raids for " + guildStr + "</h1><p>Sorted by the time the raid ended</p><p>" + PageUtility.CreateLink("InstanceList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&Guild=" + guildStr, "Instances statistics by guild") + "</p><p>" + PageUtility.CreateLink("BossList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&Guild=" + guildStr, "Bosses statistics by guild") + "</p><p>" + (guildStr != "PUG" ? PageUtility.CreateLink(PageUtility.HOSTURL_Armory + "GuildViewer.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(realm) + "&Guild=" + guildStr, "View guild on RealmPlayers(Armory)") : "") + "</p>"); } else { this.Title = "Raids | RaidStats"; m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddFinish("Raids")); m_RaidListInfoHTML = new MvcHtmlString("<h1>All recorded raids</h1><p>Sorted by the time the raid ended</p>"); } var raidCollection = ApplicationInstance.Instance.GetRaidCollection(); var orderedRaids = raidCollection.m_Raids.OrderByDescending((_Value) => { return(_Value.Value.RaidEndDate); }); m_TableHeadHTML = new MvcHtmlString( PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("#Nr") + PageUtility.CreateTableColumnHead("Guild") + PageUtility.CreateTableColumnHead("Raid Instance(ID)") + PageUtility.CreateTableColumnHead("Start Date") + PageUtility.CreateTableColumnHead("End Date") + PageUtility.CreateTableColumnHead("Realm"))); VF_RaidDamageDatabase.RealmDB realmDB = null; var guildSummaryDB = ApplicationInstance.Instance.GetGuildSummaryDatabase(); int nr = 0; int i = orderedRaids.Count(); string tableBody = ""; foreach (var raid in orderedRaids) { if (raid.Value.Realm == VF_RealmPlayersDatabase.WowRealm.Test_Server) { continue;//Skip Test_Server } if (raid.Value.RaidOwnerName == "") { continue;//Skip RaidOwnerName == "" because something is obviously wrong! } if ((realm == VF_RealmPlayersDatabase.WowRealm.All || realm == raid.Value.Realm) && (guildStr == null || guildStr == raid.Value.RaidOwnerName) && InstanceControl.IsFiltered(raid.Value.RaidInstance) == true) { nr++; if (nr > pageIndex * count && nr <= (pageIndex + 1) * count) { string raidOwnerVisual = raid.Value.RaidOwnerName; var recordedBy = raid.Value.GetRecordedByPlayers(); if (recordedBy.Count > 0) { VF_RealmPlayersDatabase.PlayerFaction faction = VF_RealmPlayersDatabase.PlayerFaction.Unknown; if (raid.Value.RaidOwnerName != "PUG") { try { faction = guildSummaryDB.GetGuildSummary(raid.Value.Realm, raid.Value.RaidOwnerName).Faction; } catch (Exception) {} } else { if (realmDB == null || realmDB.Realm != raid.Value.Realm) { realmDB = ApplicationInstance.Instance.GetRealmDB(raid.Value.Realm); } faction = RealmPlayersServer.StaticValues.GetFaction(realmDB.GetPlayer(recordedBy.First()).Character.Race); } if (faction == VF_RealmPlayersDatabase.PlayerFaction.Horde) { raidOwnerVisual = PageUtility.CreateImage("assets/img/Horde_32.png") + raidOwnerVisual; } else if (faction == VF_RealmPlayersDatabase.PlayerFaction.Alliance) { raidOwnerVisual = PageUtility.CreateImage("assets/img/Alliance_32.png") + raidOwnerVisual; } } tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#" + i) + PageUtility.CreateTableColumn(PageUtility.CreateLink("RaidList.aspx?realm=" + RealmPlayersServer.StaticValues.ConvertRealmParam(raid.Value.Realm) + "&Guild=" + raid.Value.RaidOwnerName, raidOwnerVisual)) + PageUtility.CreateTableColumn(PageUtility.CreateLink("RaidOverview.aspx?Raid=" + raid.Value.UniqueRaidID, PageUtility.CreateImage(StaticValues._RaidInstanceImages[raid.Value.RaidInstance]) + " " + raid.Value.RaidInstance + "(" + raid.Value.RaidID + ")")) + PageUtility.CreateTableColumn(raid.Value.RaidStartDate.ToLocalTime().ToString("yyy-MM-dd HH:mm:ss")) + PageUtility.CreateTableColumn(raid.Value.RaidEndDate.ToLocalTime().ToString("yyy-MM-dd HH:mm:ss")) + PageUtility.CreateTableColumn(RealmPlayersServer.StaticValues.ConvertRealmViewing(raid.Value.Realm))); } if (nr >= (pageIndex + 1) * count) { break; } } --i; } if (nr != 0 && nr <= pageIndex * count) { pageIndex = (nr - 1) / count; Response.Redirect(PageUtility.CreateUrlWithNewQueryValue(Request, "page", (pageIndex + 1).ToString())); } m_TableBodyHTML = new MvcHtmlString(tableBody); m_PaginationHTML = new MvcHtmlString(PageUtility.CreatePagination(Request, pageNr, ((orderedRaids.Count() - 1) / count) + 1)); }
protected void Page_Load(object sender, EventArgs e) { this.Title = "Contributors | RealmPlayers"; var statisticsData = DatabaseAccess.GetContributorStatistics(); if (statisticsData == null) { PageUtility.RedirectErrorLoading(this, "contributors"); return; } m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddFinish("Contributors")); var statsRealms = new WowRealm[] { WowRealm.Emerald_Dream, WowRealm.Warsong, WowRealm.Al_Akir, WowRealm.Rebirth, WowRealm.Nostalrius, WowRealm.Kronos, WowRealm.Archangel }; Dictionary <WowRealm, int> totalRealmInspects = new Dictionary <WowRealm, int>(); string realmInspectsHeaderColumns = ""; foreach (var statsRealm in statsRealms) { realmInspectsHeaderColumns += PageUtility.CreateTableColumnHead(StaticValues.ConvertRealmViewing(statsRealm)); totalRealmInspects.Add(statsRealm, 0); } m_TableHeadHTML = new MvcHtmlString(PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("#Nr") + PageUtility.CreateTableColumnHead("Name") + PageUtility.CreateTableColumnHead("Total inspects") + realmInspectsHeaderColumns + PageUtility.CreateTableColumnHead("Active since") + PageUtility.CreateTableColumnHead("Last active"))); SortedList <int, string> tableRows = new SortedList <int, string>(); string tableBody = ""; var contributors = ContributorDB.GetAllTrustWorthyContributors(); foreach (var data in contributors) { DateTime earliestActive = DateTime.MaxValue; DateTime latestActive = DateTime.MinValue; int totalInspects = 0; string realmInspectsColumns = ""; foreach (var statRealm in statsRealms) { int inspects = 0; Code.ContributorStatisticItem stats = null; if (statisticsData[statRealm].TryGetValue(data.ContributorID, out stats) == false) { stats = new Code.ContributorStatisticItem(-1); } earliestActive = (stats.m_EarliestActiveUTC < earliestActive ? stats.m_EarliestActiveUTC : earliestActive); latestActive = (stats.m_LatestActiveUTC > latestActive ? stats.m_LatestActiveUTC : latestActive); foreach (var inspection in stats.m_PlayerInspects) { inspects += inspection.Value; } totalInspects += inspects; totalRealmInspects[statRealm] += inspects; realmInspectsColumns += PageUtility.CreateTableColumn(inspects.ToString()); } if (totalInspects > 0 && data.Name != "Unknown" && ((DateTime.UtcNow - latestActive).TotalDays < 15 || (totalInspects > 5000 && (DateTime.UtcNow - latestActive).TotalDays < 60))) { int keyToUse = int.MaxValue - totalInspects * 100; while (tableRows.ContainsKey(keyToUse) == true) { keyToUse += 1; } tableRows.Add(keyToUse, PageUtility.CreateTableColumn(data.Name) + PageUtility.CreateTableColumn(totalInspects.ToString()) + realmInspectsColumns + PageUtility.CreateTableColumn(earliestActive.ToString("yyy-MM-dd")) + PageUtility.CreateTableColumn(StaticValues.GetTimeSinceLastSeenUTC(latestActive))); } } int totalALLInspects = 0; string totalRealmInspectsColumn = ""; foreach (var statRealm in statsRealms) { totalRealmInspectsColumn += PageUtility.CreateTableColumn(totalRealmInspects[statRealm].ToString()); totalALLInspects += totalRealmInspects[statRealm]; } tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#ALL") + PageUtility.CreateTableColumn("TOTAL") + PageUtility.CreateTableColumn(totalALLInspects.ToString()) + totalRealmInspectsColumn + PageUtility.CreateTableColumn("-") + PageUtility.CreateTableColumn("-")); int i = 1; foreach (var tableRow in tableRows) { tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#" + i++) + tableRow.Value); } m_TableBodyHTML = new MvcHtmlString(tableBody); m_ContributorsInfoHTML = new MvcHtmlString( "<h1>Contributors<span class='badge badge-inverse'>" + tableRows.Count() + " Players</span></h1>" + "<p>List displays the persons that contribute data to this project. Sorted by the amount of inspects they have contributed with.</p>" + "<br/><p>The more contributors the better! If you are interested in being a contributor to help out the project please do not hesitate contacting <a href='http://forum.realmplayers.com/memberlist.php?mode=viewprofile&u=51'>Sethzer</a> on RealmPlayers forums. Make sure you also read the thread: <a href='http://realmplayers.com:5555/viewtopic.php?f=14&t=15'>About Data Contribution</a>.</p><br/>"); }
protected void Page_Load(object sender, EventArgs e) { string dataStr = PageUtility.GetQueryString(Request, "data"); string charStr = PageUtility.GetQueryString(Request, "char"); string itemsStr = PageUtility.GetQueryString(Request, "items"); WowRealm realm = PageUtility.GetQueryRealm(Request); if (realm == WowRealm.Unknown) { realm = WowRealm.All; } var wowVersion = PageUtility.GetQueryWowVersion(Request); if (PageUtility.GetQueryString(Request, "generateShortURL") != "null") { var fullURL = "http://realmplayers.com/CharacterDesigner.aspx?char=" + charStr + "&items=" + itemsStr; string shortURL = ""; if (g_CachedShortURLs.TryGetValue(fullURL, out shortURL) == false) { shortURL = VF.URLShortener.CreateShortURL(fullURL); if (shortURL == "") { Response.Redirect(PageUtility.CreateUrlWithNewQueryValue(Request, "generateShortURL", "null")); } g_CachedShortURLs.TryAdd(fullURL, shortURL); g_CachedShortURLs.TryAdd(shortURL, fullURL); } //if (Request.Url.Host == "localhost") // Response.Redirect("localhost:4633/CharacterDesigner.aspx?char=" + charStr + "&items=" + itemsStr); //else Response.Redirect("CharacterDesigner.aspx?data=" + shortURL.Substring(shortURL.LastIndexOf("/"))); } if (dataStr == "null" && itemsStr == "null") { return; } if (dataStr != "null" && itemsStr == "null") { try { string fullURL = ""; if (g_CachedShortURLs.TryGetValue("http://goo.gl/" + dataStr, out fullURL) == false) { fullURL = VF.URLShortener.GetFullURL("http://goo.gl/" + dataStr); if (fullURL == "") { return; } g_CachedShortURLs.TryAdd("http://goo.gl/" + dataStr, fullURL); } var url = new Uri(fullURL); var queryString = System.Web.HttpUtility.ParseQueryString(url.Query); itemsStr = queryString.Get("items"); if (itemsStr == null) { return; } var tempcharStr = queryString.Get("char"); if (tempcharStr != null) { charStr = tempcharStr; } } catch (Exception) { return; } } m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddFinish("Character Designer")); List <PlayerItemInfo> itemsList = new List <PlayerItemInfo>(); var itemsStrSplit = itemsStr.Split(',', '+', ' '); Func <PlayerItemInfo, PlayerItemInfo, bool> slotEqualFunc = (_Value1, _Value2) => _Value1.Slot == _Value2.Slot; foreach (string itemLink in itemsStrSplit) { try { itemsList.AddUnique(new PlayerItemInfo(itemLink, wowVersion), slotEqualFunc); } catch (Exception) { try { var splittedLink = itemLink.Split(':', 'x'); if (splittedLink.Length > 1) { PlayerItemInfo itemInfo = new PlayerItemInfo("1:0:0:0:0:0:0:0:0", wowVersion); if (Enum.TryParse(splittedLink[0], true, out itemInfo.Slot) == false) { itemInfo.Slot = (ItemSlot)int.Parse(splittedLink[0]); } itemInfo.ItemID = int.Parse(splittedLink[1]); if (splittedLink.Length > 2) { itemInfo.EnchantID = int.Parse(splittedLink[2]); } if (splittedLink.Length > 3) { itemInfo.SuffixID = int.Parse(splittedLink[3]); } if (splittedLink.Length > 4) { itemInfo.UniqueID = int.Parse(splittedLink[4]); } if (splittedLink.Length > 5 && wowVersion == WowVersionEnum.TBC) { itemInfo.GemIDs = new int[4]; itemInfo.GemIDs[0] = int.Parse(splittedLink[5]); itemInfo.GemIDs[1] = 0; itemInfo.GemIDs[2] = 0; itemInfo.GemIDs[3] = 0; if (splittedLink.Length > 6) { itemInfo.GemIDs[1] = int.Parse(splittedLink[6]); } if (splittedLink.Length > 7) { itemInfo.GemIDs[2] = int.Parse(splittedLink[7]); } if (splittedLink.Length > 8) { itemInfo.GemIDs[3] = int.Parse(splittedLink[8]); } } itemsList.AddUnique(itemInfo, slotEqualFunc); } } catch (Exception) {} } } PlayerRace playerRace = PlayerRace.Orc; PlayerClass playerClass = PlayerClass.Warrior; PlayerSex playerSex = PlayerSex.Male; if (charStr != "null") { try { var charStrSplit = charStr.Split(',', '+', ' '); if (charStrSplit.Length > 0) { if (Enum.TryParse(charStrSplit[0], true, out playerRace) == false) { playerRace = (PlayerRace)int.Parse(charStrSplit[0]); } } if (charStrSplit.Length > 1) { if (Enum.TryParse(charStrSplit[1], true, out playerClass) == false) { playerClass = (PlayerClass)int.Parse(charStrSplit[1]); } } if (charStrSplit.Length > 2) { if (Enum.TryParse(charStrSplit[2], true, out playerSex) == false) { playerSex = (PlayerSex)int.Parse(charStrSplit[2]); } } } catch (Exception) {} } if (playerRace == PlayerRace.Unknown) { playerRace = PlayerRace.Orc; } if (playerClass == PlayerClass.Unknown) { playerClass = PlayerClass.Warrior; } if (playerSex == PlayerSex.Unknown) { playerSex = PlayerSex.Male; } m_InventoryInfoHTML = new MvcHtmlString(CreateInventoryInfo(itemsList, playerRace, playerClass, playerSex, realm, wowVersion)); GenerateGearStats(itemsList, wowVersion); if (dataStr != "null") { m_CharacterDesignerInfo = new MvcHtmlString("Short link for this Character: <br /><a href='http://realmplayers.com/vchar/" + dataStr + ".aspx'>http://realmplayers.com/vchar/" + dataStr + ".aspx</a> or <a href='http://goo.gl/" + dataStr + "'>http://goo.gl/" + dataStr + "</a>"); } else { m_CharacterDesignerInfo = new MvcHtmlString("<a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "generateShortURL", "true") + "'>Click here to create a short link for this Character</a>"); } if (IsPostBack == false) { foreach (var item in itemsList) { int gemIDcount = item.GetGemIDCount(); string itemStr = item.ItemID.ToString(); if (item.EnchantID != 0 || item.SuffixID != 0 || item.UniqueID != 0 || gemIDcount != 0) { itemStr += "x" + item.EnchantID.ToString(); if (item.SuffixID != 0 || item.UniqueID != 0 || gemIDcount != 0) { itemStr += "x" + item.SuffixID.ToString(); } if (item.UniqueID != 0 || gemIDcount != 0) { itemStr += "x" + item.UniqueID.ToString(); } if (gemIDcount != 0) { for (int i = 0; i < gemIDcount; ++i) { itemStr += "x" + item.GemIDs[i].ToString(); } } } switch (item.Slot) { case ItemSlot.Head: txtHeadSlot.Text = itemStr; break; case ItemSlot.Neck: txtNeckSlot.Text = itemStr; break; case ItemSlot.Shoulder: txtShoulderSlot.Text = itemStr; break; case ItemSlot.Shirt: txtShirtSlot.Text = itemStr; break; case ItemSlot.Chest: txtChestSlot.Text = itemStr; break; case ItemSlot.Belt: txtBeltSlot.Text = itemStr; break; case ItemSlot.Legs: txtLegsSlot.Text = itemStr; break; case ItemSlot.Feet: txtFeetSlot.Text = itemStr; break; case ItemSlot.Wrist: txtWristSlot.Text = itemStr; break; case ItemSlot.Gloves: txtGlovesSlot.Text = itemStr; break; case ItemSlot.Finger_1: txtRing1Slot.Text = itemStr; break; case ItemSlot.Finger_2: txtRing2Slot.Text = itemStr; break; case ItemSlot.Trinket_1: txtTrinket1Slot.Text = itemStr; break; case ItemSlot.Trinket_2: txtTrinket2Slot.Text = itemStr; break; case ItemSlot.Back: txtBackSlot.Text = itemStr; break; case ItemSlot.Main_Hand: txtMainhandSlot.Text = itemStr; break; case ItemSlot.Off_Hand: txtOffhandSlot.Text = itemStr; break; case ItemSlot.Ranged: txtRangedSlot.Text = itemStr; break; case ItemSlot.Tabard: txtTabardSlot.Text = itemStr; break; default: break; } } ddlRace.SelectedValue = playerRace.ToString(); if (StaticValues.GetFaction(playerRace) == VF_RealmPlayersDatabase.PlayerFaction.Horde) { ddlRace.Style.Add("color", "#ff4546"); } else { ddlRace.Style.Add("color", "#45a3ff"); } ddlClass.SelectedValue = playerClass.ToString(); ddlClass.Style.Add("color", PageUtility.GetClassColor(playerClass)); ddlSex.SelectedValue = playerSex.ToString(); } }
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", ""); 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) { bool filteredData = PageUtility.GetQueryString(Request, "Filtered", "true") == "true"; int uniqueDungeonID = PageUtility.GetQueryInt(Request, "Dungeon", -1); if (uniqueDungeonID == -1) { Response.Redirect("DungeonList.aspx"); } this.Title = "Dungeon " + uniqueDungeonID + " | RaidStats"; var orderedFights = ApplicationInstance.Instance.GetDungeonBossFights(uniqueDungeonID); if (orderedFights == null || orderedFights.Count() == 0) { Response.Redirect("DungeonList.aspx"); } var realmDB = ApplicationInstance.Instance.GetRealmDB(orderedFights.First().GetDungeon().Realm); var currDungeon = orderedFights.First().GetDungeon(); if (currDungeon.Realm == VF_RealmPlayersDatabase.WowRealm.Test_Server && PageUtility.GetQueryString(Request, "Debug") == "null") { Response.Redirect("DungeonList.aspx"); } m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddDungeonList() + PageUtility.BreadCrumb_AddFinish(currDungeon.m_Dungeon + "(" + currDungeon.m_UniqueDungeonID.ToString() + ")")); bool displayLoot = false; if (orderedFights.FindIndex((_Value) => _Value.GetItemDrops().Count > 0) != -1) { displayLoot = true; } m_TableHeadHTML = new MvcHtmlString( PageUtility.CreateTableRow("", PageUtility.CreateTableColumnHead("#Nr") + PageUtility.CreateTableColumnHead("Boss") + PageUtility.CreateTableColumnHead("Players") + (displayLoot == true ? PageUtility.CreateTableColumnHead("Items Dropped") : "") + PageUtility.CreateTableColumnHead("Player Deaths") + PageUtility.CreateTableColumnHead("Fight Duration") + PageUtility.CreateTableColumnHead("Kill Time") + PageUtility.CreateTableColumnHead(PageUtility.CreateTooltipText("Precision", "How much percentage of the recorded fight is vs the boss intended. Calculated using the formula: Boss+Adds DmgTaken/Recorded Damage")))); List <string> attendingDungeonPlayers = new List <string>(); string tableBody = ""; foreach (var fight in orderedFights) { var attendingFightPlayers = fight.GetAttendingUnits((_Name) => { return(realmDB.RD_IsPlayer(_Name, fight)); }); attendingDungeonPlayers.AddRange(attendingFightPlayers); double precision = fight.CalculatePrecision(realmDB.RD_IsPlayerFunc(fight)); var attemptType = fight.GetFightData().GetAttemptType(); string attemptStr = ""; if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.KillAttempt) { attemptStr = "(kill)"; } else if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.WipeAttempt) { attemptStr = "(attempt)"; } string trashPercentageStr = "<font color='#FF0000'>???</font>"; if (precision != 0) { double trashPercentage = precision; if (precision >= 1.0) { precision = 1.0; } trashPercentageStr = PageUtility.CreateColorisedPercentage(precision); } var realm = fight.GetDungeon().Realm; /////////////////////// string lootDropped = ""; if (attemptType == VF_RaidDamageDatabase.FightData.AttemptType.KillAttempt) { lootDropped = LootGenerator.CreateLootDroppedData(fight.GetItemDrops(), realmDB, ApplicationInstance.Instance.GetItemSummaryDatabase(), ApplicationInstance.Instance.GetItemInfo); } /////////////////////// tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#" + (fight.GetRaidBossFightIndex() + 1)) + PageUtility.CreateTableColumn(/*PageUtility.CreateLink("FightOverview.aspx?Dungeon=" + uniqueDungeonID + "&Fight=" + fight.GetRaidBossFightIndex(), */ "<font color='#f70002'>" + fight.GetFightData().FightName + "</font>" /*)*/ + attemptStr) + PageUtility.CreateTableColumn(attendingFightPlayers.Count.ToString()) + (displayLoot == true ? PageUtility.CreateTableColumn(lootDropped) : "") + PageUtility.CreateTableColumn(((int)fight.GetTotal((_Value) => { return(_Value.I.Death); } , (_Value) => { return(realmDB.RD_IsPlayer(_Value.Item1, fight) && _Value.Item2.I.Death > 0); })).ToString()) + PageUtility.CreateTableColumn(fight.GetFightDuration().ToString() + " sec") + PageUtility.CreateTableColumn(fight.GetFightData().StartDateTime.AddSeconds(fight.GetFightData().GetFightRecordDuration()).ToLocalTime().ToString("yyy-MM-dd HH:mm:ss")) + PageUtility.CreateTableColumn(trashPercentageStr)); } m_TableBodyHTML = new MvcHtmlString(tableBody); ///////////////////// List <Tuple <string, VF_RealmPlayersDatabase.PlayerClass> > playersAttending = new List <Tuple <string, VF_RealmPlayersDatabase.PlayerClass> >(); foreach (var playerName in attendingDungeonPlayers.Distinct()) { var playerData = realmDB.RD_FindPlayer(playerName, attendingDungeonPlayers); if (playerData != null) { playersAttending.Add(new Tuple <string, VF_RealmPlayersDatabase.PlayerClass>(playerName, playerData.Character.Class)); } } string playersAttendingStr = "<h3>Players attending(" + playersAttending.Count + "):</h3>"; var orderedPlayersAttending = playersAttending.OrderBy((_Value) => { return("" + (int)_Value.Item2 + _Value.Item1); }); try { var lastClass = orderedPlayersAttending.First().Item2; foreach (var player in orderedPlayersAttending) { if (lastClass != player.Item2) { playersAttendingStr += "<br />"; } playersAttendingStr += PageUtility.CreateColorCodedName(player.Item1, player.Item2) + " "; lastClass = player.Item2; } } catch (Exception ex) { } ///////////////////// var recordedBy = currDungeon.GetRecordedByPlayers(); string recordedByString = ""; foreach (var playerName in recordedBy) { var playerData = realmDB.RD_FindPlayer(playerName, attendingDungeonPlayers); if (playerData != null) { if (recordedByString == "") { recordedByString += " by "; } recordedByString += PageUtility.CreateColorCodedName(playerData) + ", "; } } if (recordedByString != "") { recordedByString = recordedByString.Substring(0, recordedByString.Length - 2); //Get rid of last ", " if (recordedByString.Contains(", ")) { var subStr = recordedByString.Substring(recordedByString.LastIndexOf(", ")); var replacement = subStr.Replace(", ", " and "); recordedByString = recordedByString.Replace(subStr, replacement); } } var startRecordTime = orderedFights.First().GetFightData().StartDateTime.ToLocalTime(); var endRecordTime = orderedFights.Last().GetFightData().GetEndDateTime().ToLocalTime(); var totalRecordTime = " (" + ((int)(endRecordTime - startRecordTime).TotalMinutes) + " minutes and " + (endRecordTime - startRecordTime).Seconds + " seconds)"; m_RaidOverviewInfoHTML = "<h1>\"" + currDungeon.m_GroupMembers.MergeToStringVF("\", \"") + "\" vs " + currDungeon.m_Dungeon + "(" + currDungeon.m_UniqueDungeonID.ToString() + ")<span class='badge badge-inverse'>" + orderedFights.Count() + " fights</span></h1>" + "<p>Fights recorded" + recordedByString + " between " + startRecordTime.ToString("yyy-MM-dd HH:mm:ss") + " and " + endRecordTime.ToString("yyy-MM-dd HH:mm:ss") + totalRecordTime + "</p>" + "<p><font color='red'>Did you attend this dungeon run and dont want this dungeon recording being publicly available? Send a PM to <a href='http://realmplayers.com:5555/memberlist.php?mode=viewprofile&u=2'>Dilatazu</a> on <a href='http://forum.realmplayers.com'>RealmPlayers forum</a>. Include some kind of proof that you are the player you say you are, dont forget to mention the unique DungeonID of the dungeon run. I will remove any dungeon recordings that requests to be hidden by any attending player.</font></p>" + playersAttendingStr; string graphStyle = "<style>" + PageUtility.CreateStatsBars_HTML_CSSCode() + "</style>"; string totalBossMeters = "<h2>Damage/Healing total(only bosses)</h2>" + "<p>Total for all boss fights"; string totalTrashMeters = "<h2>Damage/Healing total(only trash)</h2>" + "<p>Total for all trash fights"; if (filteredData == true) { totalBossMeters += ", unrealistic dmg/heal spikes are filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "false") + "'>View Unfiltered</a></p><br />"; totalTrashMeters += ", unrealistic dmg/heal spikes are filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "false") + "'>View Unfiltered</a></p><br />"; } else { totalBossMeters += ", unrealistic dmg/heal spikes are not filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "true") + "'>View Filtered</a></p><br />"; totalTrashMeters += ", unrealistic dmg/heal spikes are not filtered. <a href='" + PageUtility.CreateUrlWithNewQueryValue(Request, "Filtered", "true") + "'>View Filtered</a></p><br />"; } totalBossMeters += RaidOverview.GenerateTotalMeters(filteredData, orderedFights, realmDB, attendingDungeonPlayers); m_GraphSection = new MvcHtmlString(graphStyle + "<div class='blackframe'>" + totalBossMeters + "</div><br/><div class='blackframe'>" + totalTrashMeters + "</div>"); }
protected void Page_Load(object sender, EventArgs e) { string bossName = PageUtility.GetQueryString(Request, "Boss", "All"); string instanceName = PageUtility.GetQueryString(Request, "Instance", null); string andPlayer = PageUtility.GetQueryString(Request, "AndPlayer", null); int showPlayerCount = PageUtility.GetQueryInt(Request, "Count", 100); if (showPlayerCount > 200) { showPlayerCount = 200; } if (VF_RaidDamageDatabase.BossInformation.BossFights.ContainsKey(bossName) == false && instanceName == null) { instanceName = bossName; } else if (instanceName != null) { bossName = instanceName; } this.Title = bossName + " Rankings | RaidStats"; List <PlayerClass> classLimits = ClassControl.GetClassLimits();// FightOverallOverview.GetClassLimits(PageUtility.GetQueryString(Request, "ClassLimit", "WrIWaIWlIMaIPrIShIRoIPaIDrIHu")); List <PlayerFaction> factionLimits = ClassControl.GetFactionLimits(); bool showMultipleEntries = PageUtility.GetQueryString(Request, "MultipleEntries", "false").ToLower() != "false"; var realm = RealmControl.Realm; string guildLimit = PageUtility.GetQueryString(Request, "Guild", null); List <VF_RDDatabase.BossFight> fightInstances = new List <VF_RDDatabase.BossFight>(); DateTime earliestCompatibleDate = new DateTime(2013, 10, 23, 0, 0, 0); //var raidCollection = ApplicationInstance.Instance.GetRaidCollection(); List <Tuple <PlayerData, AverageStats> > dataset = GenerateAverageDataSet(bossName, instanceName, classLimits, factionLimits, realm, guildLimit); if (dataset == null) { return; } string infoText = ""; string breadCrumbCommon = ""; if (guildLimit != null) { string colorClasses = ClassControl.GetColorClassesStr(); infoText = "<h1>Average Performance for players in " + guildLimit + " vs " + bossName + "</h1>"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddGuildRaidList(guildLimit); } else { infoText = "<h1>Average Performance for players vs " + bossName + "</h1>"; breadCrumbCommon = PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm); } if (ClassControl.HasClassLimits() == true) { string colorClasses = ClassControl.GetColorClassesStr(); string breadCrumb = breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout("Average Performance vs " + bossName, Request, "ClassLimit"); if (ClassControl.HasFactionLimits() == true) { breadCrumb += PageUtility.BreadCrumb_AddFinish("for " + colorClasses); breadCrumb += PageUtility.BreadCrumb_AddFinish(ClassControl.GetColorFactionStr()); } else { breadCrumb += PageUtility.BreadCrumb_AddFinish("for " + colorClasses); } m_BreadCrumbHTML = new MvcHtmlString(breadCrumb); } else { if (ClassControl.HasFactionLimits() == true) { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddThisPageWithout("Average Performance vs " + bossName, Request, "FactionLimit") + PageUtility.BreadCrumb_AddFinish(ClassControl.GetColorFactionStr())); } else { m_BreadCrumbHTML = new MvcHtmlString(breadCrumbCommon + PageUtility.BreadCrumb_AddFinish("Average Performance vs " + bossName)); } } if (instanceName != null) { infoText += "<p>Instance fight average is calculated by averaging every boss fight averages from " + instanceName + ".<br/>"; infoText += "Boss fight average is calculated by taking the 5 best performing(for the player) encounters out of the last 6 attended.</p>"; infoText += "<p>If there are less than 3 encounters for the player for any of the bosses in the database or the last attended encounter was more than 1 month ago, the player will not be included in the list.</p>"; } else { infoText += "<p>Boss fight average is calculated by taking the 5 best performing(for the player) encounters out of the last 6 attended.</p>"; infoText += "<p>If there are less than 3 encounters for the player in the database or the last attended encounter was more than 1 month ago, the player will not be included in the list.</p>"; } m_InfoTextHTML = new MvcHtmlString(infoText); if (dataset.Count == 0) { return; } string graphSection = "<style>" + PageUtility.CreateStatsBars_HTML_CSSCode() + "</style>"; PageUtility.StatsBarStyle statsBarStyle = new PageUtility.StatsBarStyle { m_TitleText = "Average DPS", m_BarTextColor = "#000", m_LeftSideTitleText = "#", m_RightSideTitleText = "", m_BeforeBarWidth = 30, m_MaxWidth = 400, m_AfterBarWidth = 0 }; { int maxCount = showPlayerCount; var orderedByDPS = dataset.OrderByDescending((_Value) => _Value.Item2.m_DPS); float highestDPS = orderedByDPS.First().Item2.m_DPS; int players = 0; List <PageUtility.StatsBarData> dpsStatsBars = new List <PageUtility.StatsBarData>(); foreach (var data in orderedByDPS) { if (++players > maxCount || data.Item2.m_DPS < 1) { if (andPlayer == null) { break; } else if (data.Item1.Name != andPlayer) { continue; } } float averageDPS = data.Item2.m_DPS; double displayPercentage = averageDPS / highestDPS; string rightSideText = averageDPS.ToStringDot("0.0") + "/s"; dpsStatsBars.Add(new PageUtility.StatsBarData { m_BeforeBarText = "#" + players, m_OnBarLeftText = PageUtility.CreateLink_RaidStats_Player(data.Item1), m_BarColor = PageUtility.GetClassColor(data.Item1), m_PercentageWidth = displayPercentage, m_AfterBarText = "", //m_BarTextColor = "#000", m_OnBarRightText = rightSideText, m_OnBarTextWidth = StaticValues.MeasureStringLength(data.Item1.Name + " " + rightSideText) }); } var orderedByHPS = dataset.OrderByDescending((_Value) => _Value.Item2.m_HPS); float highestHPS = orderedByHPS.First().Item2.m_HPS; players = 0; List <PageUtility.StatsBarData> hpsStatsBars = new List <PageUtility.StatsBarData>(); foreach (var data in orderedByHPS) { if (++players > maxCount || data.Item2.m_HPS < 1) { if (andPlayer == null) { break; } else if (data.Item1.Name != andPlayer) { continue; } } float averageHPS = data.Item2.m_HPS; double displayPercentage = averageHPS / highestHPS; string rightSideText = averageHPS.ToStringDot("0.0") + "/s"; hpsStatsBars.Add(new PageUtility.StatsBarData { m_BeforeBarText = "#" + players, m_OnBarLeftText = PageUtility.CreateLink_RaidStats_Player(data.Item1), m_BarColor = PageUtility.GetClassColor(data.Item1), m_PercentageWidth = displayPercentage, m_AfterBarText = "", //m_BarTextColor = "#000", m_OnBarRightText = rightSideText, m_OnBarTextWidth = StaticValues.MeasureStringLength(data.Item1.Name + " " + rightSideText) }); } while (dpsStatsBars.Count > hpsStatsBars.Count) { hpsStatsBars.Add(new PageUtility.StatsBarData { m_AfterBarText = "", m_BarColor = "#CCCCCC", m_BeforeBarText = "", m_OnBarLeftText = "", m_OnBarRightText = "", m_PercentageWidth = 0.0, }); } while (hpsStatsBars.Count > dpsStatsBars.Count) { dpsStatsBars.Add(new PageUtility.StatsBarData { m_AfterBarText = "", m_BarColor = "#CCCCCC", m_BeforeBarText = "", m_OnBarLeftText = "", m_OnBarRightText = "", m_PercentageWidth = 0.0, }); } statsBarStyle.m_TitleText = "Average DPS vs " + bossName; graphSection += PageUtility.CreateStatsBars_HTML(statsBarStyle, dpsStatsBars, 50, 1); graphSection += " "; statsBarStyle.m_TitleText = "Average Effective HPS vs " + bossName; graphSection += PageUtility.CreateStatsBars_HTML(statsBarStyle, hpsStatsBars, 50, 1); } m_GraphSection = new MvcHtmlString(graphSection); }
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", 50); if (count > 500) { count = 500; } var realm = RealmControl.Realm; if (realm == WowRealm.Unknown) { return; } this.Title = "Guilds @ " + StaticValues.ConvertRealmParam(realm) + " | RealmPlayers"; var realmDB = DatabaseAccess.GetRealmPlayers(this, realm, NotLoadedDecision.RedirectAndWait); var guildSummaryDB = Hidden.ApplicationInstance.Instance.GetGuildSummaryDatabase(); //;// DatabaseAccess.GetRealmGuilds(this, realm, NotLoadedDecision.RedirectAndWait).Where((guild) => { return guild.Value.GetTotalPlayers() > 0; }) var guildArray = guildSummaryDB.GetGuilds(realm);//.OrderByDescending((guild) => { return guild.Value.Players.Count; }); string page = ""; int nr = 0; string guildProgressData = ""; List <Tuple <int, Tuple <VF_RPDatabase.GuildSummary, string> > > progressGuilds = new List <Tuple <int, Tuple <VF_RPDatabase.GuildSummary, string> > >(); foreach (var guild in guildArray) { guild.Value.GenerateCache(realmDB); if (guild.Value.GetMembers().Count > 0) { string thisGuildProgressData = guild.Value.m_GuildProgressData.Item1; int progressComparisonValue = guild.Value.m_GuildProgressData.Item2; if (thisGuildProgressData == "" && guild.Value.Stats_GetTotalMaxLevels() >= 25) { try { thisGuildProgressData = CreateProgressStr(this, guild.Value, realm, out progressComparisonValue); guild.Value.m_GuildProgressData = Tuple.Create(thisGuildProgressData, progressComparisonValue); } catch (Exception ex) { Logger.LogException(ex); } } progressGuilds.Add(Tuple.Create(progressComparisonValue, Tuple.Create(guild.Value, thisGuildProgressData))); } } var orderedProgressGuilds = progressGuilds.OrderByDescending(_Value => { UInt64 sortValue = (((UInt64)_Value.Item1) << 32); if (sortValue != 0) { //sortValue |= (((UInt64)(UInt32)_Value.Item2.Item1.Stats_GetAveragePVPRank()) << 16) | ((UInt64)(UInt32)_Value.Item2.Item1.GetMembers().Count); sortValue |= (((UInt64)(UInt32)_Value.Item2.Item1.Stats_GetAverageMemberHKs()) << 16) | ((UInt64)(UInt32)_Value.Item2.Item1.GetMembers().Count); } else { sortValue |= (UInt64)(UInt32)_Value.Item2.Item1.Stats_GetTotalMaxLevels(); } return(sortValue); }); if (orderedProgressGuilds.Count() > 0) { if (GuildProgress.GetProgressAQ40(orderedProgressGuilds.First().Item1) == 0) //AQ Content not released { guildProgressData += "g_AQReleased = false;"; } else { guildProgressData += "g_AQReleased = true;"; } if (GuildProgress.GetProgressNaxx(orderedProgressGuilds.First().Item1) == 0) //Naxx Content not released { guildProgressData += "g_NaxxReleased = false;"; } else { guildProgressData += "g_NaxxReleased = true;"; } } foreach (var guild in orderedProgressGuilds) { nr++; if (nr > pageIndex * count && nr <= (pageIndex + 1) * count) { page += PageUtility.CreateGuildRow(nr, guild.Item2.Item1, Table_Columns); guildProgressData += guild.Item2.Item2; } 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_AddRealm(RealmControl.Realm) + PageUtility.BreadCrumb_AddFinish("Guilds")); m_GuildListInfoHTML = new MvcHtmlString(CreateGuildListInfo(StaticValues.GetWowVersion(RealmControl.Realm), progressGuilds.Count)); m_TableHeadHTML = new MvcHtmlString(PageUtility.CreateGuildTableHeaderRow(Table_Columns)); m_TableBodyHTML = new MvcHtmlString(page); m_PaginationHTML = new MvcHtmlString(PageUtility.CreatePagination(Request, pageNr, ((guildArray.Count() - 1) / count) + 1)); m_GuildScriptData = new MvcHtmlString("<script>var guildProgress = new Array();" + guildProgressData + "</script>"); }
protected void Page_Load(object sender, EventArgs e) { string pageView = RealmPlayersServer.PageUtility.GetQueryString(Request, "view", "players"); var realm = PageUtility.GetQueryRealm(Request); if (realm == WowRealm.Unknown) { return; } var wowVersion = StaticValues.GetWowVersion(realm); string guildStr = PageUtility.GetQueryString(Request, "guild"); var realmDB = DatabaseAccess.GetRealmPlayers(this, realm); var guildSummaryDB = Hidden.ApplicationInstance.Instance.GetGuildSummaryDatabase(); var guild = guildSummaryDB.GetGuildSummary(realm, guildStr);// DatabaseAccess.GetRealmGuild(this, realm, guildStr, NotLoadedDecision.RedirectAndWait); if (guild == null) { return; } guild.GenerateCache(realmDB); this.Title = guildStr + " @ " + StaticValues.ConvertRealmParam(realm) + " | RealmPlayers"; m_ProgressInfoHTML = new MvcHtmlString("<div id='" + guild.GuildName.Replace(' ', '_') + "-Progress'></div>"); var membersArray = guild.GetMembers(); var orderedPlayersArray = membersArray.OrderBy((player) => { return(player.Item2.History.Last().GuildRankNr); }); int progressComparisonValue = 0; string guildProgressData = GuildList.CreateProgressStr(this, guild, realm, out progressComparisonValue); m_GuildScriptData = new MvcHtmlString("<script>var guildProgress = new Array();" + guildProgressData + "</script>"); if (pageView == "players") { m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddGuilds(realm) + PageUtility.BreadCrumb_AddFinish(guild.GuildName)); m_GuildInfoHTML = new MvcHtmlString("<h1><img src='assets/img/icons/ui-pvp-" + StaticValues.GetFactionCSSName(guild.Faction) + ".png'/><span class='" + StaticValues.GetFactionCSSName(guild.Faction) + "-color'>" + guild.GuildName + "</span><span class='badge badge-inverse'>" + membersArray.Count + " Members</span></h1>" + "<p>Guild on the server " + StaticValues.ConvertRealmViewing(realm) + "</p>" + "<p><a href='/GuildViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "&view=latestevents'>View Latest Events</a></p>" + "<p><a href='/RaidStats/RaidList.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View recorded raids on RaidStats</a></p>"); string page = ""; foreach (var player in orderedPlayersArray) { page += PageUtility.CreatePlayerRow(0, realm, player.Item1, Table_Columns); } m_CharactersTableHeadHTML = new MvcHtmlString(PageUtility.CreatePlayerTableHeaderRow(Table_Columns)); m_CharactersTableBodyHTML = new MvcHtmlString(page); } else if (pageView == "latestmembers") { m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddGuilds(realm) + PageUtility.BreadCrumb_AddGuild(realm, guild.GuildName) + PageUtility.BreadCrumb_AddFinish("Latest Members")); m_GuildInfoHTML = new MvcHtmlString("<h1><img src='assets/img/icons/ui-pvp-" + StaticValues.GetFactionCSSName(guild.Faction) + ".png'/><span class='" + StaticValues.GetFactionCSSName(guild.Faction) + "-color'>" + guild.GuildName + "</span><span class='badge badge-inverse'>" + membersArray.Count + " Members</span></h1>" + "<p>Guild on the server " + StaticValues.ConvertRealmViewing(realm) + "</p>" + "<p><a href='/GuildViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View Members</a></p>" + "<p><a href='/RaidStats/RaidList.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View recorded raids on RaidStats</a></p>"); } else if (pageView == "latestitems") { m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddGuilds(realm) + PageUtility.BreadCrumb_AddGuild(realm, guild.GuildName) + PageUtility.BreadCrumb_AddFinish("Latest Items")); m_GuildInfoHTML = new MvcHtmlString("<h1><img src='assets/img/icons/ui-pvp-" + StaticValues.GetFactionCSSName(guild.Faction) + ".png'/><span class='" + StaticValues.GetFactionCSSName(guild.Faction) + "-color'>" + guild.GuildName + "</span><span class='badge badge-inverse'>" + membersArray.Count + " Members</span></h1>" + "<p>Guild on the server " + StaticValues.ConvertRealmViewing(realm) + "</p>" + "<p><a href='/GuildViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View Members</a></p>" + "<p><a href='/RaidStats/RaidList.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View recorded raids on RaidStats</a></p>"); } else if (pageView == "latestevents") { m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddRealm(realm) + PageUtility.BreadCrumb_AddGuilds(realm) + PageUtility.BreadCrumb_AddGuild(realm, guild.GuildName) + PageUtility.BreadCrumb_AddFinish("Latest Events")); m_GuildInfoHTML = new MvcHtmlString("<h1><img src='assets/img/icons/ui-pvp-" + StaticValues.GetFactionCSSName(guild.Faction) + ".png'/><span class='" + StaticValues.GetFactionCSSName(guild.Faction) + "-color'>" + guild.GuildName + "</span><span class='badge badge-inverse'>" + membersArray.Count + " Members</span></h1>" + "<p>Guild on the server " + StaticValues.ConvertRealmViewing(realm) + "</p>" + "<p><a href='/GuildViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View Members</a></p>" + "<p><a href='/RaidStats/RaidList.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + guildStr + "'>View recorded raids on RaidStats</a></p>"); } if (pageView == "latestmembers" || pageView == "latestevents") { var guildSummary = Hidden.ApplicationInstance.Instance.GetGuildSummary(realm, guildStr); if (guildSummary == null) { return; } var statusChanges = guildSummary.GenerateLatestStatusChanges(DateTime.UtcNow.AddDays(-14)); string latestmembersStr = ""; statusChanges.Reverse(); foreach (var sChange in statusChanges) { if (realmDB.ContainsKey(sChange.Player)) { var playerData = realmDB[sChange.Player]; string statusChangeDescription = ""; if (sChange.FromStatus == null || sChange.FromStatus.IsInGuild == false) { if (sChange.ToStatus.IsInGuild == true) { statusChangeDescription = "Added to the Guild as Rank \"" + sChange.ToStatus.GuildRank + "\""; } else { continue; } } else if (sChange.ToStatus.IsInGuild == false) { statusChangeDescription = "Removed from the Guild"; } else { statusChangeDescription = "Changed Rank From \"" + sChange.FromStatus.GuildRank + "\" to \"" + sChange.ToStatus.GuildRank + "\""; } latestmembersStr += PageUtility.CreateTableRow("" , PageUtility.CreateTableColumn(PageUtility.CreateColorCodedPlayerLink(realm, playerData)) + PageUtility.CreateTableColumn("<div style='overflow: hidden;white-space: nowrap;'>" + statusChangeDescription + "</div>") + PageUtility.CreateTableColumn("<div style='overflow: hidden;white-space: nowrap;'>" + sChange.ToStatus.DateTime.ToLocalTime().ToString("yyyy-MM-dd") + "</div>")); } } m_LatestMembersHTML = new MvcHtmlString(latestmembersStr); } if (pageView == "latestitems" || pageView == "latestevents") { List <Tuple <DateTime, Player, List <Tuple <PlayerItemInfo, ItemInfo> > > > latestItems = new List <Tuple <DateTime, Player, List <Tuple <PlayerItemInfo, ItemInfo> > > >(); var realmHistory = DatabaseAccess._GetRealmPlayersHistory(this, realm, NotLoadedDecision.SpinWait); foreach (var data in orderedPlayersArray) { Player player = data.Item1; PlayerHistory playerHistory = null; if (realmHistory.TryGetValue(player.Name, out playerHistory) == true) { var recvItems = HistoryGenerator.GenerateLatestReceivedItems(playerHistory, DateTime.MinValue); var orderedRecvItems = recvItems.OrderByDescending(_Value => _Value.Key); int i = 0; foreach (var recvItem in orderedRecvItems) { if (i++ > 10) { break; } List <Tuple <PlayerItemInfo, ItemInfo> > newestItems = new List <Tuple <PlayerItemInfo, ItemInfo> >(); foreach (var item in recvItem.Value) { var itemInfo = DatabaseAccess.GetItemInfo(item.ItemID, wowVersion); if (itemInfo.ItemQuality >= 4) //Atleast epic(4) { newestItems.Add(Tuple.Create(item, itemInfo)); } } if (newestItems.Count > 0) { latestItems.Add(Tuple.Create(recvItem.Key, player, newestItems)); } } } } string latestItemsStr = ""; { var itemSummaryDB = Hidden.ApplicationInstance.Instance.GetItemSummaryDatabase(); string currentItemDatabase = DatabaseAccess.GetCurrentItemDatabaseAddress(); var orderedLatestItems = latestItems.OrderByDescending((_Value) => _Value.Item1); int i = 0; foreach (var recvItem in orderedLatestItems) { if (i++ > 100) { break; } int recvItemIndex = 0; int xMax = 58 * 3; int yMax = (int)((recvItem.Item3.Count - 1) / 3) * 58; yMax += 58; string itemLinks = "<div class='inventory' style='background: none; width: " + xMax + "px; height: " + yMax + "px;'>"; foreach (var item in recvItem.Item3) { int xPos = (recvItemIndex % 3) * 58; int yPos = (int)(recvItemIndex / 3) * 58; //string itemLink = currentItemDatabase + "?item=" + item.Item1.ItemID + "' rel='rand=" + item.Item1.SuffixID + ";ench=0"; var itemInfo = item.Item2; itemLinks += "<div style='background: none; width: 58px; height: 58px;margin: " + yPos + "px " + xPos + "px;'>" + "<img class='itempic' src='" + "http://realmplayers.com/" + itemInfo.GetIconImageAddress() + "'/>" + "<div class='quality' id='" + CharacterViewer.ItemQualityConversion[itemInfo.ItemQuality] + "'></div>" + "<img class='itemframe' src='assets/img/icons/ItemNormalFrame.png'/>" + CharacterViewer.GenerateItemLink(currentItemDatabase, item.Item1, wowVersion); var itemUsageCount = itemSummaryDB.GetItemUsageCount(realm, item.Item1); itemLinks += "<a class='itemplayersframe' href='ItemUsageInfo.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&item=" + item.Item1.ItemID + (item.Item1.SuffixID != 0 ? "&suffix=" + item.Item1.SuffixID : "") + "'>" + itemUsageCount + "</a>"; itemLinks += "</div>"; ++recvItemIndex; } itemLinks += "</div>"; latestItemsStr += PageUtility.CreateTableRow("" , PageUtility.CreateTableColumn(itemLinks) + PageUtility.CreateTableColumn(PageUtility.CreateColorCodedPlayerLink(realm, recvItem.Item2)) + PageUtility.CreateTableColumn("<div style='overflow: hidden;white-space: nowrap;'>" + recvItem.Item1.ToString("yyyy-MM-dd") + "</div>")); } } m_LatestItemsHTML = new MvcHtmlString(latestItemsStr); } }
protected void Page_Load(object sender, EventArgs e) { m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddFinish("RareItemsList")); var realm = RealmControl.Realm; if (realm == WowRealm.Unknown) { return; } var wowVersion = StaticValues.GetWowVersion(realm); int count = PageUtility.GetQueryInt(Request, "count", 100); var itemSummaryDB = Hidden.ApplicationInstance.Instance.GetItemSummaryDatabase(); m_ItemUsageInfoHTML = new MvcHtmlString("<h1>Rarest items<span class='badge badge-inverse'>" + count + " Items</span></h1>" + "<p>List contains the most rarest items on the realm.</p>"); Dictionary <PlayerColumn, string[]> extraColumns = new Dictionary <PlayerColumn, string[]>(); PlayerColumn ItemAndAquiredDateAfterColumn = PlayerColumn.Number; extraColumns.Add(ItemAndAquiredDateAfterColumn, new string[] { "Item", "Count", "First Aquired", "First Player(s)" }); m_TableHeadHTML = new MvcHtmlString(PageUtility.CreatePlayerTableHeaderRow(Table_Columns, extraColumns)); string currentItemDatabase = DatabaseAccess.GetCurrentItemDatabaseAddress(); string tableBody = ""; int nr = 1; Func <KeyValuePair <ulong, VF_RPDatabase.ItemSummary>, int> lambdaComparison = (_Tuple) => { return(_Tuple.Value.m_ItemOwners.Count((_Value) => (itemSummaryDB.GetPlayerRealm(_Value.Item1) == realm))); }; Func <Tuple <ulong, DateTime>, DateTime> lambdaDateTimeComparison = (_Tuple) => { return(_Tuple.Item2); }; var rareItemsList = itemSummaryDB.m_Items.OrderBy(lambdaComparison); foreach (var rareItem in rareItemsList) { if (nr >= count) { break; } int rareItemCount = rareItem.Value.m_ItemOwners.Count((_Value) => (itemSummaryDB.GetPlayerRealm(_Value.Item1) == realm)); if (rareItemCount > 0 && Code.Resources.ItemAnalyzer.IsRareItem(rareItem.Value.m_ItemID) == true) { var itemInfo = DatabaseAccess.GetItemInfo(rareItem.Value.m_ItemID, wowVersion); if (itemInfo.ItemQuality < 4) { continue; } //rareItem. Player player = null; var orderedAquires = rareItem.Value.m_ItemOwners.OrderBy(lambdaDateTimeComparison); DateTime dateTimeCutoff = orderedAquires.First((_Value) => (itemSummaryDB.GetPlayerRealm(_Value.Item1) == realm)).Item2; if (dateTimeCutoff < new DateTime(2013, 8, 1, 0, 0, 0)) { dateTimeCutoff = new DateTime(2013, 8, 1, 0, 0, 0); } else { dateTimeCutoff = dateTimeCutoff.AddDays(3); } string firstPlayers = "<div style='overflow: hidden; display: table; height: 58px;'>"; var interestingItems = orderedAquires.Where((_Tuple) => { return(_Tuple.Item2 < dateTimeCutoff && (itemSummaryDB.GetPlayerRealm(_Tuple.Item1) == realm)); }); if (interestingItems.Count() < 5) { foreach (var playerAquire in interestingItems) { if (playerAquire.Item2 < dateTimeCutoff) { player = DatabaseAccess.FindRealmPlayer(this, realm, itemSummaryDB.GetPlayerName(playerAquire.Item1)); if (player != null) { var playerFaction = StaticValues.GetFaction(player.Character.Race); firstPlayers += "<div class='" + StaticValues.GetFactionCSSName(playerFaction) + "_col' style='display: table-cell; width:160px;" /*"background-color: " + (playerFaction == PlayerFaction.Horde ? "#372727" : "#272f37")*/ + "'>"; firstPlayers += "<p style='text-align:center;'><a href='CharacterViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&player=" + System.Web.HttpUtility.HtmlEncode(player.Name) + "'>" + PageUtility.CreateColorCodedName(player.Name, player.Character.Class) + "</a>"; if (player.Guild.GuildName != "nil") { string visualGuildName = PageUtility.BreakLongStr(player.Guild.GuildName, 16, 8); firstPlayers += "<br>" + PageUtility.CreateLink("GuildViewer.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&guild=" + System.Web.HttpUtility.HtmlEncode(player.Guild.GuildName), "<" + visualGuildName + ">") + "</p>"; } firstPlayers += "</div>"; } } else { break; } } } else { firstPlayers += "Data not detailed enough<br>(more than 5 players within aquire timespan)"; } firstPlayers += "</div>"; extraColumns[ItemAndAquiredDateAfterColumn] = new string[] { "<div class='inventory' style='background: none; width: 58px; height: 58px;'><div>" + "<img class='itempic' src='" + "http://realmplayers.com/" + itemInfo.GetIconImageAddress() + "'/>" + "<div class='quality' id='" + CharacterViewer.ItemQualityConversion[itemInfo.ItemQuality] + "'></div>" + "<img class='itemframe' src='assets/img/icons/ItemNormalFrame.png'/>" + CharacterViewer.GenerateItemLink(currentItemDatabase, rareItem.Value.m_ItemID, rareItem.Value.m_SuffixID, wowVersion) + "<a class='itemplayersframe' href='ItemUsageInfo.aspx?realm=" + StaticValues.ConvertRealmParam(realm) + "&item=" + rareItem.Value.m_ItemID + (rareItem.Value.m_SuffixID != 0 ? "&suffix=" + rareItem.Value.m_SuffixID : "") + "'>" + rareItemCount.ToString() + "</a>" + "</div></div>" , rareItemCount.ToString() , " > " + interestingItems.First().Item2.ToString("yyyy-MM-dd") + "<br> < " + dateTimeCutoff.ToString("yyyy-MM-dd") , firstPlayers }; tableBody += PageUtility.CreateTableRow("", PageUtility.CreateTableColumn("#" + (nr++)) + PageUtility.CreateTableColumn(extraColumns[ItemAndAquiredDateAfterColumn][0]) + PageUtility.CreateTableColumn(extraColumns[ItemAndAquiredDateAfterColumn][1]) + PageUtility.CreateTableColumn(extraColumns[ItemAndAquiredDateAfterColumn][2]) + PageUtility.CreateTableColumn(extraColumns[ItemAndAquiredDateAfterColumn][3])); } } m_TableBodyHTML = new MvcHtmlString(tableBody); }
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; } var realm = RealmControl.Realm; if (realm == VF_RealmPlayersDatabase.WowRealm.Unknown) { return; } var wowVersion = StaticValues.GetWowVersion(realm); int itemID = PageUtility.GetQueryInt(Request, "item", 19364); int suffixID = PageUtility.GetQueryInt(Request, "suffix", 0); this.Title = "\"" + itemID + "\" ItemUsage @ " + StaticValues.ConvertRealmParam(realm) + " | RealmPlayers"; m_BreadCrumbHTML = new MvcHtmlString(PageUtility.BreadCrumb_AddHome() + PageUtility.BreadCrumb_AddFinish("ItemUsage")); var itemSummaryDB = Hidden.ApplicationInstance.Instance.GetItemSummaryDatabase(); #if NO_SQL #else /*Disable this for now. it is too slow...*/ //using (VF.SQLComm comm = new VF.SQLComm()) #endif { List <Tuple <DateTime, string> > players = null; players = itemSummaryDB.GetItemUsage(realm, itemID, suffixID);//, out players) == true) { string currentItemDatabase = DatabaseAccess.GetCurrentItemDatabaseAddress(); var itemInfo = DatabaseAccess.GetItemInfo(itemID, wowVersion); m_ItemUsageInfoHTML = new MvcHtmlString("<div style='overflow: hidden; display: table;'><div style='display: table-cell;'><h1>Players with <h1></div>" + "<div class='inventory' style='background: none; width: 58px; height: 58px; display: table-cell;'><div>" + "<img class='itempic' src='" + "http://realmplayers.com/" + itemInfo.GetIconImageAddress() + "'/>" + "<div class='quality' id='" + CharacterViewer.ItemQualityConversion[itemInfo.ItemQuality] + "'></div>" + "<img class='itemframe' src='assets/img/icons/ItemNormalFrame.png'/>" + CharacterViewer.GenerateItemLink(currentItemDatabase, itemID, suffixID, wowVersion) + "</div></div>" + "<span class='badge badge-inverse'>" + players.Count + " Players</span></div>" + "<p>Sorted by date \"aquired\"</p>"); Dictionary <PlayerColumn, string[]> extraColumns = new Dictionary <PlayerColumn, string[]>(); PlayerColumn ItemAndAquiredDateAfterColumn = PlayerColumn.Number; extraColumns.Add(ItemAndAquiredDateAfterColumn, new string[] { "Item", "Date Aquired" }); m_TableHeadHTML = new MvcHtmlString(PageUtility.CreatePlayerTableHeaderRow(Table_Columns, extraColumns)); string tableBody = ""; int nr = 0; Func <Tuple <DateTime, string>, DateTime> lambdaComparison = (_Tuple) => { return(_Tuple.Item1); }; players = players.OrderBy(lambdaComparison).ToList(); foreach (var playerDateAndName in players) { Player player = DatabaseAccess.FindRealmPlayer(this, realm, playerDateAndName.Item2); if (player != null) { ++nr; // style='position: absolute; margin: auto; width:58px; height:58px;' if (nr > pageIndex * count && nr <= (pageIndex + 1) * count) { //string itemLink = ""; VF_RealmPlayersDatabase.PlayerData.ItemInfo playerItemData = null; try { playerItemData = player.Gear.Items.First((_Item) => { return(_Item.Value.ItemID == itemID); }).Value; } catch (Exception) { playerItemData = null; } if (playerItemData != null) { //Data fanns i gearen som playern använder för tillfället! //itemLink = currentItemDatabase + "?item=" + playerItemData.ItemID + "' rel='rand=" + playerItemData.SuffixID + ";ench=" + playerItemData.EnchantID; } else { //Måste titta igenom history! #if NO_SQL PlayerHistory playerHistory = DatabaseAccess.FindRealmPlayerHistory(this, realm, playerDateAndName.Item2); if (playerHistory != null) { for (int i = playerHistory.GearHistory.Count - 1; i >= 0; --i) { try { playerItemData = playerHistory.GearHistory[i].Data.Items.First((_Item) => { return(_Item.Value.ItemID == itemID); }).Value; } catch (Exception) { playerItemData = null; } if (playerItemData != null) { //Data fanns i gearen som playern använder för tillfället! //itemLink = currentItemDatabase + "?item=" + playerItemData.ItemID + "' rel='rand=" + playerItemData.SuffixID + ";ench=" + playerItemData.EnchantID; break; } } } #else /*Disable this for now. it is too slow...*/ //playerItemData = comm.GetLatestItemInfoForPlayer(playerDateAndName.Item2, realm, itemID); #endif } if (playerItemData == null) { playerItemData = new VF_RealmPlayersDatabase.PlayerData.ItemInfo { Slot = VF_RealmPlayersDatabase.ItemSlot.Unknown, ItemID = itemID, SuffixID = 0, EnchantID = 0, UniqueID = 0, GemIDs = null }; } extraColumns[ItemAndAquiredDateAfterColumn] = new string[] { "<div class='inventory' style='background: none; width: 58px; height: 58px;'><div>" + "<img class='itempic' src='" + "http://realmplayers.com/" + itemInfo.GetIconImageAddress() + "'/>" + "<div class='quality' id='" + CharacterViewer.ItemQualityConversion[itemInfo.ItemQuality] + "'></div>" + "<img class='itemframe' src='assets/img/icons/ItemNormalFrame.png'/>" + CharacterViewer.GenerateItemLink(currentItemDatabase, playerItemData, wowVersion) + "</div></div>" , playerDateAndName.Item1.ToString("yyyy-MM-dd") }; tableBody += PageUtility.CreatePlayerRow(nr, realm, player, Table_Columns, null, extraColumns); } 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_TableBodyHTML = new MvcHtmlString(tableBody); int maxPageNr = 1000000 / count; m_PaginationHTML = new MvcHtmlString(PageUtility.CreatePagination(Request, pageNr, ((players.Count - 1) / count) + 1)); } } }