public async Task <IEnumerable <EducatorSubjectOverviewResponse> > Handle(GetEducatorSubjectOverviewQuery query)
        {
            var workResults = await _repository.GetWorkResults();

            var linqQuery = from workResult in workResults
                            where workResult.Subject == query.Subject &&
                            workResult.SubmitDateTime >= query.StartDateTimeUtc &&
                            workResult.SubmitDateTime <= query.EndDateTimeUtc
                            group workResult by new
            {
                workResult.Subject,
                workResult.Domain,
                workResult.LearningObjective,
                workResult.UserId
            } into grp
                select new EducatorSubjectOverviewResponse
            {
                Domain                   = grp.Key.Domain,
                LearningObjective        = grp.Key.LearningObjective,
                UserId                   = grp.Key.UserId,
                AssessedSkillLevelChange = grp.Select(x => (decimal)x.Progress).Sum()
            };

            var response = linqQuery.ToList();

            return(response);
        }
        public async Task <IEnumerable <SubjectStudentOverviewDto> > Get(string subject, DateTime startDateTimeUtc, DateTime endDateTimeUtc)
        {
            //TODO: Date range validation
            var query = new GetEducatorSubjectOverviewQuery
            {
                Subject          = subject,
                StartDateTimeUtc = startDateTimeUtc,
                EndDateTimeUtc   = endDateTimeUtc
            };

            var queryResponse = await _queryHandler.Handle(query);

            var response = queryResponse.Select(_mapper.Map).ToList();

            return(response);
        }