public async Task OnGetAsync() { FeatureCategories = new List <FeatureCategoryViewModel>(); Users = await DataContext.AppUsers.ToListAsync(); BaseScoreModifiers = await DataContext.HomeReviewBaseScoreModifiers.ToListAsync(); foreach (var category in DataContext.HomeReviewFeatureCategories.Include(r => r.Features).OrderBy(r => r.SortOrder)) { var categoryViewModel = new FeatureCategoryViewModel { Id = category.Id, Title = category.Title, Features = new List <FeatureViewModel>() }; FeatureCategories.Add(categoryViewModel); foreach (var detail in category.Features.OrderBy(r => r.SortOrder)) { var detailViewModel = new FeatureViewModel { Id = detail.Id, Title = detail.Title, Weights = new List <FeatureWeightViewModel>() }; categoryViewModel.Features.Add(detailViewModel); } } }
public async Task <IActionResult> OnGetAsync(string id) { if (id?.Length > 0) { AppUser = await DataContext.AppUsers.FindAsync(id); if (AppUser is null) { return(NotFound()); } } else { AppUser = await AppUsers.Get(User); } FeatureCategories = new List <FeatureCategoryViewModel>(); foreach (var featureCategory in DataContext.HomeReviewFeatureCategories.Include(r => r.Features).ThenInclude(r => r.FeatureChoices).OrderBy(r => r.SortOrder)) { var featureCategoryViewModel = new FeatureCategoryViewModel { Title = featureCategory.Title, Features = new List <FeatureViewModel>() }; FeatureCategories.Add(featureCategoryViewModel); foreach (var feature in featureCategory.Features.OrderBy(r => r.SortOrder)) { var featureUserWeight = await DataContext.HomeReviewUserWeights.FirstOrDefaultAsync(r => r.UserId == AppUser.Id && r.FeatureId == feature.Id); var featureViewModel = new FeatureViewModel { Title = feature.Title, FeatureId = feature.Id, Value = featureUserWeight?.Weight, FeatureChoices = new List <FeatureChoiceViewModel>() }; featureCategoryViewModel.Features.Add(featureViewModel); var choices = await DataContext.HomeReviewFeatureChoices.Where(r => r.FeatureId == feature.Id).OrderBy(o => o.SortOrder).ToListAsync(); foreach (var choice in choices) { var featureChoiceUserWeight = await DataContext.HomeReviewUserWeights.FirstOrDefaultAsync(r => r.UserId == AppUser.Id && r.FeatureChoiceId == choice.Id); var featureChoiceViewModel = new FeatureChoiceViewModel { Title = choice.Title, FeatureChoiceId = choice.Id, Value = featureChoiceUserWeight?.Weight }; featureViewModel.FeatureChoices.Add(featureChoiceViewModel); } } } return(Page()); }