/// <summary> /// Gets the encounters and items by instance identifier. /// </summary> /// <param name="instanceModel">The instance model.</param> /// <returns> /// The encounters for the dungeon. /// </returns> public async Task <List <EncounterModel> > GetEncountersAndItemsByInstanceId(int instanceId) { List <EncounterModel> encModels = new List <EncounterModel>(); //On récupère les instances name grâce à la fct getInstanceById var resInstance = await InstanceRepoAPI.GetInstanceById(staticNamespace, localeUS, instanceId); var resEnc = await EncounterRepoAPI.SearchEncounter(staticNamespace, locale, resInstance.name); if (resEnc != null) { foreach (ResultEncounter result in resEnc.results) { EncounterModel encModel = new EncounterModel() { Id = result.data.id, Name = result.data.name.fr_FR, IdInstance = result.data.instance.id, Items = await GetItemsByID(result.data.items.Select(i => i.item.id).ToList()), }; int idMedia = result.data.creatures[0].creature_display.id; var resMediaCreature = await ItemRepoAPI.GetMediaCreatureById(staticNamespace, localeUS, idMedia); encModel.Media = resMediaCreature?.assets[0]?.value; encModels.Add(encModel); } } return(encModels); }
public async Task <List <InstanceModel> > GetAllInstances() { //Récupération des instances et de leur id var resInstId = await InstanceRepoAPI.GetInstanceIndex(staticNamespace, locale); List <InstanceModel> instModels = new List <InstanceModel>(); if (resInstId != null) { // On prend que deux instances pour le test var resInst2 = resInstId.instances.Take(2); foreach (var instance in resInstId.instances) { var resInstance = await InstanceRepoAPI.GetInstanceById(staticNamespace, locale, instance.id); InstanceModel instModel = new InstanceModel() { Id = instance.id, // TODO : tu devrais avoir tes ids perso et mettre les ids blizzard dans une autre propriété Name = resInstance.name, Description = resInstance.description, }; if (resInstance.category.type == "WORLD_BOSS") { instModel.Type = "WORLD BOSS"; instModel.Location = resInstance.name; } else if (resInstance.category.type == "DUNGEON") { instModel.Type = "DONJON"; instModel.Location = resInstance.location?.name; } else { instModel.Type = resInstance.category.type; instModel.Location = resInstance.location?.name; } var resMediaInstance = await InstanceRepoAPI.GetMediaInstanceById(staticNamespace, locale, instance.id); int count = 0; do { instModel.Media = resMediaInstance.assets[0].value; count += 1; } while (resMediaInstance.assets[0].value == null && count < 3); instModels.Add(instModel); } } return(instModels); }
public async Task <List <EncounterModel> > GetEncountersByInstanceId(int idInstance, List <int> idItems) { List <EncounterModel> encModels = new List <EncounterModel>(); //On récupère les instances name grâce à la fct getInstanceById var resInstance = await InstanceRepoAPI.GetInstanceById(staticNamespace, localeUS, idInstance); var resEnc = await EncounterRepoAPI.SearchEncounter(staticNamespace, locale, resInstance.name); if (resEnc != null) { foreach (ResultEncounter result in resEnc.results) { EncounterModel encModel = new EncounterModel(); encModel.Id = result.data.id; encModel.Name = result.data.name.fr_FR; encModel.IdInstance = result.data.instance.id; encModel.IdItems = new List <int>(); int idMedia = result.data.creatures[0].creature_display.id; var resMediaCreature = await ItemRepoAPI.GetMediaCreatureById(staticNamespace, localeUS, idMedia); encModel.Media = resMediaCreature.assets[0].value; foreach (var item in result.data.items) { encModel.IdItems.Add(item.item.id); //Je remplis une liste d'idItems récupérée de l'extérieur pour pouvoir //remplir ma table ITEM indépendamment des boss (récupérer tous les id dans une liste, //Enlever les doublons, récupérer les ITEMMODEL avec "GetItemsByID" et les insérer dans la db" idItems.Add(item.item.id); } encModels.Add(encModel); } } return(encModels); }