コード例 #1
0
        public IActionResult Enroll([FromHeader] string authorization, [FromBody] Course course)
        {
            try
            {
                var courseId = _context.Courses.SingleOrDefault(x => x.UrlName == course.UrlName).Id;
                var userId   = _tokenService.getClaimsId(authorization);

                if (!String.IsNullOrEmpty(course.UrlName) && !String.IsNullOrEmpty(courseId))
                {
                    _context.CourseUsers.Add(new CourseUser
                    {
                        CourseId   = courseId,
                        UserId     = userId,
                        EnrolledAt = DateTime.Now
                    });
                    _context.SaveChanges();

                    return(Ok());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #2
0
        public IActionResult Complete([FromHeader] string authorization, [FromBody] JObject body)
        {
            try
            {
                var lectureId     = body.Value <Int32>("id");
                var urlName       = body.Value <String>("urlName");
                var isLastLecture = body.Value <Boolean>("isLastLecture");

                var userId = _tokenService.getClaimsId(authorization);

                if (!String.IsNullOrEmpty(urlName) && lectureId > 0)
                {
                    var courseUser = _context.CourseUsers
                                     .Include(x => x.CompletedLectures)
                                     .Include(x => x.User)
                                     .Include(x => x.Course)
                                     .SingleOrDefault(x => x.Course.UrlName == urlName && x.User.Id == userId);

                    // save lectureId to completeLecture table
                    var completedLecture = new CompletedLectures {
                        LectureId = lectureId
                    };
                    _context.CompletedLectures.Add(completedLecture);

                    // if the lecture is also the last mark the course as completed
                    if (isLastLecture)
                    {
                        courseUser.IsCompleted = true;
                    }

                    _context.SaveChanges();

                    // add table to users list of completed courses;
                    courseUser.CompletedLectures.Add(completedLecture);
                    _context.SaveChanges();
                    _log.LogInformation($"User {userId} completed lecture {lectureId}");


                    var newCompletedLectures = _context.CourseUsers
                                               .Include(x => x.CompletedLectures)
                                               .Include(x => x.User)
                                               .Include(x => x.Course)
                                               .SingleOrDefault(x => x.Course.UrlName == urlName && x.User.Id == userId);

                    return(new ObjectResult(new
                    {
                        data = newCompletedLectures.CompletedLectures,
                    }));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #3
0
        public IActionResult Answer([FromHeader] string authorization, [FromBody] JObject body)
        {
            var choices   = body.Value <String>("choices");
            var choiceArr = JsonConvert.DeserializeObject <String[]>(choices);
            var urlName   = body.Value <String>("urlName");
            var userId    = _tokenService.getClaimsId(authorization);

            if (String.IsNullOrEmpty(urlName))
            {
                return(BadRequest());
            }
            else
            {
                var courseUser = _context.CourseUsers
                                 .Include(x => x.QuizAttempts)
                                 .SingleOrDefault(x => x.Course.UrlName == urlName && x.User.Id == userId);

                var attempt = new QuizAttempt();
                attempt.SubmissionTime = DateTime.Now;
                foreach (var stringId in choiceArr)
                {
                    var id     = int.Parse(stringId);
                    var answer = new Answer()
                    {
                        UserChoiceId = id
                    };
                    _context.Answers.Add(answer);
                    _context.SaveChanges();
                    attempt.Answers.Add(answer);
                }
                courseUser.QuizAttempts.Add(attempt);

                _context.SaveChanges();
                _log.LogInformation($"Added quizattempt for for {userId}");
                return(Ok());
            }
        }