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(); using (VF.SQLComm comm = new VF.SQLComm()) { 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)); } } }
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); }