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);
        }
Exemple #4
0
        public async Task <PercentageTotalBarChartModel> ByLunchStatus(AssessmentFilterModel model)
        {
            model.PerformanceKeys = await GetPerformanceKeys(model);

            var chart = await _assessmentPerformanceTrendService.ByLunchStatus(model);

            chart.HideTotal = true;
            return(chart);
        }
Exemple #5
0
        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
            });
        }
Exemple #7
0
        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"));
        }
Exemple #8
0
        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"));
        }
Exemple #9
0
        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);
        }
Exemple #17
0
        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,
            });
        }
Exemple #18
0
        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);
        }