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)); } }
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)); } }
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()); } }