public static async Task <AccountInventory> GetAccountInventory(string apiKey) { var accountInv = new AccountInventory() { Account = await AccountAPI.Account(apiKey), Characters = await CharacterAPI.Characters(apiKey), Bank = await AccountAPI.Bank(apiKey), SharedInventory = await AccountAPI.SharedInventory(apiKey), Materials = await AccountAPI.MaterialStorage(apiKey), Wallet = await AccountAPI.Wallet(apiKey) }; await accountInv.SetGuildBank(apiKey); return(accountInv); }
public static async Task <AccountDifference> GetAccountDifference(string apiKey, AccountDifference oldState) { var currentState = await AccountInventory.GetAccountInventory(apiKey); var newState = new AccountDifference { Items = new List <ItemStackDifference>(), Currencies = new List <CurrencyDifference>() }; //Comparing Items and Currencies in both Old and Current state oldState.Items.ForEach(x => { if (currentState.Items.Any(y => y.Equals(x))) { var newItem = currentState.Items.Find(y => y.Equals(x)); newState.Items.Add(new ItemStackDifference { ItemID = x.ItemID, SkinID = x.SkinID, StatID = x.StatID, Count = newItem.Count, Difference = newItem.Count - x.Count }); } else { newState.Items.Add(new ItemStackDifference { ItemID = x.ItemID, SkinID = x.SkinID, StatID = x.StatID, Count = 0, Difference = x.Count * -1 }); } }); oldState.Currencies.ForEach(x => { if (currentState.Currencies.Any(y => y.ID == x.CurrencyID)) { var newItem = currentState.Currencies.Find(y => y.ID == x.CurrencyID); newState.Currencies.Add(new CurrencyDifference { CurrencyID = x.CurrencyID, Count = newItem.Value, Difference = newItem.Value - x.Count }); } else { newState.Currencies.Add(new CurrencyDifference { CurrencyID = x.CurrencyID, Count = 0, Difference = x.Count * -1 }); } }); //Completly new Items and Currencies currentState.Items.ForEach(x => { if (!oldState.Items.Any(y => y.Equals(x))) { newState.Items.Add(new ItemStackDifference { ItemID = x.ID, SkinID = x.SkinID, StatID = x.StatID, Count = x.Count, Difference = x.Count }); } }); currentState.Currencies.ForEach(x => { if (!oldState.Currencies.Any(y => y.CurrencyID == x.ID)) { newState.Currencies.Add(new CurrencyDifference { CurrencyID = x.ID, Count = x.Value, Difference = x.Value }); } }); return(newState); }