public async Task <PieChartModel <int> > Get(AssessmentFilterModel model) { var results = await _assessmentFactService.BaseQuery(model) .GroupBy(x => x.Performance.PerformanceLevel) .Select(x => new { PerformanceLevel = x.Key, Total = x.Sum(y => y.AssessmentStudentCount) }).OrderBy(x => x.PerformanceLevel) .ToListAsync(); var total = results.Sum(x => x.Total); return(new PieChartModel <int> { Title = "Performance Level", TotalRowTitle = "Assessment Peformance Total", Headers = new List <string> { "", "Performance Level", "Performance Count" }, PercentageHeaders = new List <string> { "", "Performance Level", "Performance Percentage" }, Labels = results.Select(x => x.PerformanceLevel).ToList(), Data = results.Select(x => x.Total).ToList(), Percentages = results.Select(x => GetPercentage(x.Total, total)).ToList(), ShowChart = true, Total = total }); }
public async Task <PercentageTotalBarChartModel> BySpecialEducation(AssessmentFilterModel model) { model.ExcludePerformanceKeys = await GetPerformanceKeys(model); var chart = await _assessmentPerformanceTrendService.BySpecialEducation(model); chart.HideTotal = true; return(chart); }
public async Task <PercentageTotalBarChartModel> ByEnglishLanguageLearner(AssessmentFilterModel model) { model.ExcludePerformanceKeys = await GetPerformanceKeys(model); var chart = await _assessmentPerformanceTrendService.ByEnglishLanguageLearner(model); chart.HideTotal = true; return(chart); }
public async Task <PercentageTotalBarChartModel> ByLunchStatus(AssessmentFilterModel model) { model.PerformanceKeys = await GetPerformanceKeys(model); var chart = await _assessmentPerformanceTrendService.ByLunchStatus(model); chart.HideTotal = true; return(chart); }
public async Task <BarChartModel <int> > ByEnglishLanguageLearner(AssessmentFilterModel model) { var groupings = BaseQuery(model) .GroupBy(x => new AssessmentScoreGroupBy { ScoreResult = x.Performance.ScoreResult, GroupByProperty = x.Demographic.EnglishLanguageLearnerStatus }); return(await CreateChart(groupings, "English Language Learner")); }
public async Task <PercentageTotalBarChartModel> ByGoodCauseExcemption(AssessmentFilterModel model) { var baseQuery = BaseQuery(model); if (baseQuery.All(x => x.GoodCauseExemptionKey == 3)) { return(null); } var results = await( from cause in _goodCauseExemptionRepository.GetAll().Where(x => (new[] { 1, 2 }).Contains(x.GoodCauseExemptionKey)) join fact in baseQuery on cause.GoodCauseExemptionKey equals fact.GoodCauseExemptionKey into facts from fact in facts.DefaultIfEmpty() select new { GoodCauseExemptionKey = cause.GoodCauseExemptionKey, GoodCauseExemption = cause.GoodCauseExemption, AssessmentStudentCount = fact == null ? 0 : fact.AssessmentStudentCount } ).GroupBy(x => new { GoodCauseExemptionKey = x.GoodCauseExemptionKey, GoodCauseExemption = x.GoodCauseExemption }).Select(x => new { GoodCauseExemption = x.Key.GoodCauseExemption, GoodCauseExemptionKey = x.Key.GoodCauseExemptionKey, Total = x.Sum(y => y.AssessmentStudentCount) }).ToListAsync(); var goodCause = results.Where(x => x.GoodCauseExemptionKey == 1).ToList(); return(new PercentageTotalBarChartModel { Title = "Good Cause Exemptions", Headers = new List <string> { "", "Good Cause Exemptions", "Total" }, Labels = goodCause.Select(x => x.GoodCauseExemption).ToList(), Series = new List <string> { goodCause.First().GoodCauseExemption }, Data = new List <List <PercentageTotalDataModel> > { goodCause.Select(x => new PercentageTotalDataModel { Percentage = GetPercentage(x.Total, results.Sum(y => y.Total)), Total = x.Total }).ToList() }, ShowChart = true, ShowPercentage = true, HideTotal = true }); }
public async Task <BarChartModel <int> > BySpecialEducation(AssessmentFilterModel model) { var groupings = BaseQuery(model) .GroupBy(x => new AssessmentScoreGroupBy { ScoreResult = x.Performance.ScoreResult, GroupByProperty = x.Demographic.SpecialEducationStatus }); return(await CreateChart(groupings, "Special Education")); }
public async Task <BarChartModel <int> > ByEthnicity(AssessmentFilterModel model) { var groupings = BaseQuery(model) .GroupBy(x => new AssessmentScoreGroupBy { ScoreResult = x.Performance.ScoreResult, GroupByProperty = x.Demographic.Ethnicity }); return(await CreateChart(groupings, "Ethnicity")); }
public async Task <BarChartModel <int> > ByLunchStatus(AssessmentFilterModel model) { var groupings = BaseQuery(model) .GroupBy(x => new AssessmentScoreGroupBy { ScoreResult = x.Performance.ScoreResult, GroupByProperty = x.Demographic.FreeReducedLunchStatus }); return(await CreateChart(groupings, "Free/Reduced Meal Status")); }
public async Task <PercentageTotalBarChartModel> ByEthnicity(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentChartGroupBy { PerformanceKey = x.PerformanceKey, PerformanceLevel = x.Performance.PerformanceLevel, GroupByProperty = x.Demographic.Ethnicity }); return(await CreateChart(grouping, "Ethnicities", "Ethnicity")); }
public async Task <PercentageTotalBarChartModel> ByEnglishLanguageLearner(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentChartGroupBy { PerformanceKey = x.PerformanceKey, PerformanceLevel = x.Performance.PerformanceLevel, GroupByProperty = x.Demographic.EnglishLanguageLearnerStatus }); return(await CreateChart(grouping, "Language Statuses", "Language Learners")); }
public async Task <PercentageTotalBarChartModel> BySpecialEducation(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentChartGroupBy { PerformanceKey = x.PerformanceKey, PerformanceLevel = x.Performance.PerformanceLevel, GroupByProperty = x.Demographic.SpecialEducationStatus }); return(await CreateChart(grouping, "Education Statuses", "Special Education")); }
public async Task <PercentageTotalBarChartModel> ByLunchStatus(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentChartGroupBy { PerformanceKey = x.PerformanceKey, PerformanceLevel = x.Performance.PerformanceLevel, GroupByProperty = x.Demographic.FreeReducedLunchStatus }); return(await CreateChart(grouping, "Lunch Statuses", "Free/Reduced Price Meals")); }
public async Task <PercentageTotalBarChartModel> BySpecialEducation(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentTrendChartGroupBy { SchoolYear = x.SchoolYearKey, SchoolYearDescription = x.SchoolYearDimension.SchoolYearDescription, PerformanceKey = x.PerformanceKey, Property = x.Demographic.SpecialEducationStatus }); return(await CreateChart(grouping, model.PerformanceKey, "Education Statuses", "Special Education")); }
public async Task <PercentageTotalBarChartModel> ByLunchStatus(AssessmentFilterModel model) { var grouping = _assessmentFactService.BaseQuery(model) .GroupBy(x => new AssessmentTrendChartGroupBy { SchoolYear = x.SchoolYearKey, SchoolYearDescription = x.SchoolYearDimension.SchoolYearDescription, PerformanceKey = x.PerformanceKey, Property = x.Demographic.FreeReducedLunchStatus }); return(await CreateChart(grouping, model.PerformanceKey, "Lunch Statuses", "Free/Reduced Price Meals")); }
private IQueryable <AssessmentFact> BaseQuery(AssessmentFilterModel model) { var query = _assessmentRepository .GetAll() .Where(x => x.SchoolYearKey == model.SchoolYear); if (model.Assessments != null && model.Assessments.Any()) { query = query.Where(x => model.Assessments.Contains(x.AssessmentKey)); } else { query = query.Where(x => x.Assessment.AssessmentTitle == model.AssessmentTitle && x.Assessment.AcademicSubject == model.Subject); } if (model.EnglishLanguageLearnerStatuses != null && model.EnglishLanguageLearnerStatuses.Any()) { query = query.Where(x => model.EnglishLanguageLearnerStatuses.Contains(x.Demographic.EnglishLanguageLearnerStatus)); } if (model.Ethnicities != null && model.Ethnicities.Any()) { query = query.Where(x => model.Ethnicities.Contains(x.Demographic.Ethnicity)); } if (model.GoodCauseExcemptions != null && model.GoodCauseExcemptions.Any()) { query = query.Where(x => model.GoodCauseExcemptions.Contains(x.GoodCauseExemptionKey)); } if (model.LunchStatuses != null && model.LunchStatuses.Any()) { query = query.Where(x => model.LunchStatuses.Contains(x.Demographic.FreeReducedLunchStatus)); } if (model.SpecialEducationStatuses != null && model.SpecialEducationStatuses.Any()) { query = query.Where(x => model.SpecialEducationStatuses.Contains(x.Demographic.SpecialEducationStatus)); } return(query); }
public async Task <BarChartModel <int> > Get(AssessmentFilterModel model) { var results = await BaseQuery(model) .GroupBy(x => x.Performance.ScoreResult) .Select(x => new { ScoreResult = x.Key.HasValue ? x.Key.Value : 0, Total = x.Sum(y => y.AssessmentStudentCount) }) .ToListAsync(); var resultTotal = results.Sum(x => x.ScoreResult * x.Total); var totalParticipants = results.Sum(x => x.Total); var averageScore = (totalParticipants == 0) ? 0 : resultTotal / totalParticipants; return(new BarChartModel <int> { Title = "Average Score", TotalRowTitle = "Average Score", Headers = new List <string> { "", "Assessment", "Average Score" }, Labels = new List <string> { "Score" }, Series = new List <string> { model.AssessmentTitle }, Data = new List <List <int> > { new List <int> { averageScore } }, ShowChart = true, HideTotal = true, }); }
public async Task <IHttpActionResult> Get(AssessmentFilterModel model) { var chart = await _assessmentScoresService.Get(model); return(Ok(chart)); }
public async Task <PercentageTotalBarChartModel> Get(AssessmentFilterModel model) { var query = _assessmentFactService.BaseQuery(model); var results = query.GroupBy(x => new { x.SchoolYearKey, x.SchoolYearDimension.SchoolYearDescription, x.Performance.PerformanceLevel, x.PerformanceKey }) .Select(x => new { PerformanceLevel = x.Key.PerformanceLevel, PerformanceKey = x.Key.PerformanceKey, SchoolYear = x.Key.SchoolYearKey, SchoolYearDescription = x.Key.SchoolYearDescription, Total = x.Sum(y => y.AssessmentStudentCount) }).OrderBy(x => x.SchoolYear) .ToList(); var headers = new List <string> { "", "Performance Levels" }; headers.AddRange(results.Select(x => x.SchoolYearDescription).Distinct()); var schoolYears = results.Select(x => x.SchoolYear).Distinct().ToList(); var performanceLevels = (model.PerformanceKey.HasValue ? results.Where(x => x.PerformanceKey == model.PerformanceKey) : results) .Select(x => x.PerformanceLevel).Distinct().OrderBy(x => x).ToList(); var total = results.Sum(x => x.Total); var totals = results.GroupBy(x => x.SchoolYear) .OrderBy(x => x.Key) .Select(x => new PercentageTotalDataModel { Percentage = GetPercentage(x.Sum(y => y.Total), total), Total = x.Sum(y => y.Total) }).ToList(); var data = new List <List <PercentageTotalDataModel> >(); foreach (var performanceLevel in performanceLevels) { var values = new List <PercentageTotalDataModel>(); foreach (var schoolYear in schoolYears) { var row = results.FirstOrDefault(x => x.PerformanceLevel == performanceLevel && x.SchoolYear == schoolYear); var rowTotal = row == null ? 0 : row.Total; var schoolYearTotal = results.Where(x => x.SchoolYear == schoolYear).Sum(x => x.Total); values.Add(new PercentageTotalDataModel { Percentage = rowTotal == 0 ? 0 : GetPercentage(rowTotal, schoolYearTotal), Total = rowTotal }); } data.Add(values); } string title = null; if (model.PerformanceKey.HasValue) { var performance = _performanceRepository.GetAll().FirstOrDefault(x => x.PerformanceKey == model.PerformanceKey.Value); if (performance == null) { title = "Performance Trend"; } else { title = performance.PerformanceLevel + " Trend"; } } else { title = "Performance Trend"; } return(new PercentageTotalBarChartModel { Title = title, Headers = headers, HideTotal = model.PerformanceKey.HasValue, HidePercentageTotal = true, Labels = results.Select(x => x.SchoolYearDescription).Distinct().ToList(), Series = performanceLevels.Select(x => x.ToString()).ToList(), Data = data, ShowChart = true, ShowPercentage = true, TotalRowTitle = "Participation ", Totals = totals }); }
public IQueryable <AssessmentFact> BaseQuery(AssessmentFilterModel model) { var query = _assessmentFactRepository .GetAll() .AsQueryable(); if (model.SchoolYear.HasValue) { query = query.Where(x => x.SchoolYearKey == model.SchoolYear); } if (model.SchoolYears != null && model.SchoolYears.Any()) { query = query.Where(x => model.SchoolYears.Contains(x.SchoolYearKey)); } if (model.Schools != null && model.Schools.Any()) { query = query.Where(x => model.Schools.Contains(x.SchoolKey)); } if (model.Districts != null && model.Districts.Any()) { query = query.Where(x => model.Districts.Contains(x.School.LocalEducationAgencyKey)); } if (model.Assessments != null && model.Assessments.Any()) { query = query.Where(x => model.Assessments.Contains(x.AssessmentKey)); } else { query = query.Where(x => x.Assessment.AssessmentTitle == model.AssessmentTitle && x.Assessment.AcademicSubject == model.Subject); } if (model.EnglishLanguageLearnerStatuses != null && model.EnglishLanguageLearnerStatuses.Any()) { query = query.Where(x => model.EnglishLanguageLearnerStatuses.Contains(x.Demographic.EnglishLanguageLearnerStatus)); } if (model.Ethnicities != null && model.Ethnicities.Any()) { query = query.Where(x => model.Ethnicities.Contains(x.Demographic.Ethnicity)); } if (model.PerformanceKeys != null && model.PerformanceKeys.Any()) { query = query.Where(x => model.PerformanceKeys.Contains(x.PerformanceKey)); } if (model.ExcludePerformanceKeys != null && model.ExcludePerformanceKeys.Any()) { query = query.Where(x => !model.ExcludePerformanceKeys.Contains(x.PerformanceKey)); } if (model.LunchStatuses != null && model.LunchStatuses.Any()) { query = query.Where(x => model.LunchStatuses.Contains(x.Demographic.FreeReducedLunchStatus)); } if (model.SpecialEducationStatuses != null && model.SpecialEducationStatuses.Any()) { query = query.Where(x => model.SpecialEducationStatuses.Contains(x.Demographic.SpecialEducationStatus)); } return(query); }