/// <summary> /// <inheritdoc/> /// </summary> public async Task <Profession> GetProfessionAsync(string professionId) { ProfessionEntity profession = await _db.Professions.SingleOrDefaultAsync(profession => profession.Id == professionId); if (profession == default) { return(null); } MainProfile mainProfile = await GetMainProfileAsync(profession.MainProfile); SecondaryProfile secondaryProfile = await GetSecondaryProfileAsync(profession.SecondaryProfile); List <string> advancesTo = await _db.Advances.Where(advance => advance.ProfessionId == professionId).Select(advance => advance.AdvanceTo).ToListAsync(); List <string> advancesFrom = await _db.Advances.Where(advance => advance.AdvanceTo == professionId).Select(advance => advance.AdvanceTo).ToListAsync(); List <string> professionTalents = await _db.ProfessionTalents.Where(professionTalent => professionTalent.ProfessionId == professionId).Select(professionTalent => professionTalent.TalentId).ToListAsync(); List <string> talents = await _db.Talents.Where(talent => professionTalents.Contains(talent.Id)).Select(talent => talent.Text).ToListAsync(); List <string> professionTrappings = await _db.ProfessionTrappings.Where(professionTrapping => professionTrapping.ProfessionId == professionId).Select(professionTrapping => professionTrapping.TrappingId).ToListAsync(); List <string> trappings = await _db.Trappings.Where(trapping => professionTrappings.Contains(trapping.Id)).Select(trapping => trapping.Text).ToListAsync(); List <Skill> skills = GetSkills(professionId).Select(s => GetChildSkills(s)).ToList(); return(new Profession(professionId, profession.Label, profession.Description, profession.Role, profession.Notes, profession.Source, profession.IsAdvanced, mainProfile, secondaryProfile, advancesFrom, advancesTo, skills, talents, trappings, profession.NumberOfAdvances)); }
/// <summary> /// Create database mock records for testing professions. /// </summary> /// <returns></returns> public void PrepareDatabase() { List <string> professionIds = new List <string>() { "ABBOT", "GAMBLER", "PIT_FIGHTER", "SERGEANT" }; ProfessionEntity baseProfession = new ProfessionEntity() { Description = "profession-description", IsAdvanced = false, Label = "profession-label", Notes = "", Source = "", MainProfile = "dab", SecondaryProfile = "abc", NumberOfAdvances = 2, Role = "", }; MainProfileEntity baseMainProfile = new MainProfileEntity() { Id = "dab", Ws = 100, Bs = 1, S = 1, T = 1, Ag = 1, Int = 1, Wp = 1, Fel = 1 }; SecondaryProfileEntity baseSecondaryProfile = new SecondaryProfileEntity() { Id = "abc", A = 100, W = 1, Sb = 1, Tb = 1, M = 1, Mag = 1, Ip = 1, Fp = 1 }; foreach (string professionId in professionIds) { SaveRecords(baseProfession, baseMainProfile, baseSecondaryProfile, professionId); } }
/// <summary> /// Save profession in the database. /// </summary> private void SaveRecords(ProfessionEntity baseProfession, MainProfileEntity baseMainProfile, SecondaryProfileEntity baseSecondaryProfile, string professionId) { MainProfileEntity mainProfile = baseMainProfile; mainProfile.Id = $"{professionId}-main-profile"; SecondaryProfileEntity secondaryProfile = baseSecondaryProfile; secondaryProfile.Id = $"{professionId}-secondary-profile"; ProfessionEntity profession = baseProfession; profession.Id = professionId; profession.MainProfile = mainProfile.Id; profession.SecondaryProfile = secondaryProfile.Id; _dbContext.MainProfiles.Add(mainProfile); _dbContext.SecondaryProfiles.Add(secondaryProfile); _dbContext.Professions.Add(profession); _dbContext.SaveChanges(); }