public void FillTraitDictionary(JObject traitJson, JObject metadataJson) { TraitsRarity = new Dictionary <string, string>(); for (int i = 7; i < 19; i++) { var traitType = (string)metadataJson["attributes"][i]["trait_type"]; var traitName = (string)metadataJson["attributes"][i]["value"]; var traitRarity = ""; var traitTypeName = AvastarCommands.Capitalise(traitType.Replace('_', ' ')); foreach (var trait in traitJson[traitTypeName]) { if (trait.Type == JTokenType.Null) { continue; } if ((string)trait["name"] == traitName) { traitRarity = (string)trait["rarity"]; break; } } TraitsRarity.Add(traitType, traitRarity); } }
public static async Task MigrateAva(int id) { var oldAva = await AvastarObject.GetAva(id); var ava = new AvastarObject(); ava.id = oldAva.id; ava.Gender = oldAva.Gender; ava.Score = oldAva.Score; ava.traits = oldAva.traits; ava.Owner = "";// await Blockchain.ChainWatcher.GetOwnerOf(id); ava.TraitsRarity = new Dictionary <string, string>(); var traitJson = JObject.Parse(DiscordKeyGetter.GetFileData("app/create-traits-nosvg.json")); foreach (var pair in ava.traits) { var traitType = pair.Key; var traitName = pair.Value; var traitRarity = ""; var traitTypeName = AvastarCommands.Capitalise(traitType.Replace('_', ' ')); foreach (var trait in traitJson[traitTypeName]) { if (trait.Type == JTokenType.Null) { continue; } if ((string)trait["name"] == traitName) { traitRarity = (string)trait["rarity"]; break; } } ava.TraitsRarity.Add(traitType, traitRarity); } ava.RarityDistribution = new Dictionary <string, int>(); ava.RarityDistribution.Add("Common", 0); ava.RarityDistribution.Add("Uncommon", 0); ava.RarityDistribution.Add("Rare", 0); ava.RarityDistribution.Add("Epic", 0); ava.RarityDistribution.Add("Legendary", 0); foreach (var pair in ava.TraitsRarity) { switch (pair.Value) { case "Common": ava.RarityDistribution["Common"]++; break; case "Uncommon": ava.RarityDistribution["Uncommon"]++; break; case "Rare": ava.RarityDistribution["Rare"]++; break; case "Epic": ava.RarityDistribution["Epic"]++; break; case "Legendary": ava.RarityDistribution["Legendary"]++; break; } } var collec = DatabaseConnection.GetDb().GetCollection <AvastarObject>("AvastarCollection"); await collec.ReplaceOneAsync(a => a.id == id, ava); }