Esempio n. 1
0
        /// <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();
        }