public PlayerGameBuildViewModel GetPlayerGameBuild(int gameId, string playerName) { PlayerGameBuildViewModel vm = new PlayerGameBuildViewModel(); PlayerGameBuildData data = _detailDal.GetPlayerGameBuildDetail(playerName, gameId); //TO DO: Is there any cleaner way of doing this? vm.PlayerName = playerName; vm.HeroIconURL = ContentURL.GetHeroIconURL(data.HeroUnitTypeId); vm.Strength = data.StatBuildDic.GetValueOrDefault("A02W"); vm.Agility = data.StatBuildDic.GetValueOrDefault("A03D"); vm.Intelligence = data.StatBuildDic.GetValueOrDefault("A03E"); vm.Attack = data.StatBuildDic.GetValueOrDefault("A03W"); vm.Armor = data.StatBuildDic.GetValueOrDefault("A03X"); vm.HealthRegen = data.StatBuildDic.GetValueOrDefault("A03Y"); vm.ManaRegen = data.StatBuildDic.GetValueOrDefault("A03Z"); vm.MoveSpeed = data.StatBuildDic.GetValueOrDefault("A04Y"); vm.GoldRegen = data.StatBuildDic.GetValueOrDefault("A0A9"); vm.PrelatiMana = data.StatBuildDic.GetValueOrDefault("A0CJ"); vm.WardCount += data.PurchasedItemsDic.GetValueOrDefault("I003"); vm.WardCount += data.PurchasedItemsDic.GetValueOrDefault("I00N"); vm.WardCount += data.PurchasedItemsDic.GetValueOrDefault("SWAR"); vm.FamiliarCount += data.PurchasedItemsDic.GetValueOrDefault("I002"); vm.FamiliarCount += data.PurchasedItemsDic.GetValueOrDefault("I005"); vm.SpiritLinkCount += data.PurchasedItemsDic.GetValueOrDefault("I00G"); vm.SpiritLinkCount += data.PurchasedItemsDic.GetValueOrDefault("I00R"); vm.FirstCS = data.CommandSealDic.GetValueOrDefault("A094"); vm.SecondCS = data.CommandSealDic.GetValueOrDefault("A043"); vm.ThirdCS = data.CommandSealDic.GetValueOrDefault("A044"); vm.FourthCS = data.CommandSealDic.GetValueOrDefault("A05Q"); vm.AttributeList = new List <PlayerGameBuildAttribute>(); foreach (Tuple <string, string> attributeData in data.LearnedAttributeList) { PlayerGameBuildAttribute attr = new PlayerGameBuildAttribute { AttributeImgUrl = ContentURL.GetAttributeIconURL(attributeData.Item1), AttributeName = attributeData.Item2 }; vm.AttributeList.Add(attr); } return(vm); }
public PlayerGameBuildData GetPlayerGameBuildDetail(string playerName, int gameId) { using (frsDatabase db = frsDatabase.Create()) { //Find gamePlayerDetailId first int gamePlayerDetailId = ( from game in db.game join gameDetail in db.gameplayerdetail on game.GameID equals gameDetail.FK_GameID join player in db.player on gameDetail.FK_PlayerID equals player.PlayerID where game.GameID == gameId && player.PlayerName == playerName select gameDetail.GamePlayerDetailID).FirstOrDefault(); if (gamePlayerDetailId == 0) { return(null); } //Find HeroUnitTypeId string heroTypeUnitId = ( from herotype in db.herotype join gameDetail in db.gameplayerdetail on herotype.HeroTypeID equals gameDetail.FK_HeroTypeID where gameDetail.GamePlayerDetailID == gamePlayerDetailId select herotype.HeroUnitTypeID).First(); PlayerGameBuildData buildData = new PlayerGameBuildData { HeroUnitTypeId = heroTypeUnitId }; //Find stat learn information var heroStatLearnQuery = ( from herostatinfo in db.herostatinfo join herostatlearn in db.herostatlearn on herostatinfo.HeroStatInfoID equals herostatlearn.FK_HeroStatInfoID where herostatlearn.FK_GamePlayerDetailID == gamePlayerDetailId select new { herostatinfo.HeroStatAbilID, herostatlearn.LearnCount }); buildData.StatBuildDic = new Dictionary <string, int>(); foreach (var heroStat in heroStatLearnQuery) { buildData.StatBuildDic.Add(heroStat.HeroStatAbilID, heroStat.LearnCount); } //Find attribute information var heroAttributeQuery = ( from attributeinfo in db.attributeinfo join attributelearn in db.attributelearn on attributeinfo.AttributeInfoID equals attributelearn.FK_AttributeInfoID where attributelearn.FK_GamePlayerDetailID == gamePlayerDetailId select new { attributeinfo.AttributeAbilID, attributeinfo.AttributeName }); buildData.LearnedAttributeList = new List <Tuple <string, string> >(); foreach (var attribute in heroAttributeQuery) { Tuple <string, string> attrTuple = new Tuple <string, string>(attribute.AttributeAbilID, attribute.AttributeName); buildData.LearnedAttributeList.Add(attrTuple); } //Find Ward/Familiar Information var itemKeys = new[] { "I003", "I00N", "SWAR", "I002", "I005", "I00R", "I00G" }; var itemsQuery = ( from iteminfo in db.iteminfo join itembuy in db.gameitempurchase on iteminfo.ItemID equals itembuy.FK_ItemID where itembuy.FK_GamePlayerDetailID == gamePlayerDetailId && itemKeys.Contains(iteminfo.ItemTypeID) select new { iteminfo.ItemTypeID, itembuy.ItemPurchaseCount }); buildData.PurchasedItemsDic = new Dictionary <string, int>(); foreach (var item in itemsQuery) { buildData.PurchasedItemsDic.Add(item.ItemTypeID, item.ItemPurchaseCount); } //Find CommandSeal Info var commandSealKeys = new[] { "A05Q", "A094", "A043", "A044" }; var commandSealQuery = ( from commandseal in db.commandsealuse where commandseal.FK_GamePlayerDetailID == gamePlayerDetailId && commandSealKeys.Contains(commandseal.CommandSealAbilID) select new { commandseal.CommandSealAbilID, commandseal.UseCount }); buildData.CommandSealDic = new Dictionary <string, int>(); foreach (var cs in commandSealQuery) { buildData.CommandSealDic.Add(cs.CommandSealAbilID, cs.UseCount); } return(buildData); } }