Пример #1
0
        public async Task <IActionResult> GetChapterSummary(int courseId, int chapterNumber, int userId, [FromQuery] DateTime?date)
        {
            if (courseId < 1 || chapterNumber < 1 || userId < 1)
            {
                return(BadRequest());
            }

            if (IsStudent())
            {
                //students can only see their own chapter summary
                if (!IsOwnUserId(userId))
                {
                    return(Forbid());
                }
            }
            else if (!IsLector())
            {
                return(Forbid());
            }

            var dateUtc = date?.ToUniversalTime();

            try
            {
                var chapter = await _chapterService.LoadChapterWithTestsAsync(courseId, chapterNumber);

                var userExerciseResults = await _chapterService.GetResultsForUserAsync(chapter.Id, userId, dateUtc);

                var model = _chapterConverter.ToChapterSummaryModel(chapter, userExerciseResults);
                return(Ok(model));
            }
            catch (DataNotFoundException)
            {
                return(NotFound());
            }
        }