public async Task <IActionResult> Update([FromBody] CourseProcessViewModel courseProcessViewModel) { try { CourseProcess courseProcess = await courseProcessRepository.GetByStudentIdAndCourseId(courseProcessViewModel.StudentId, courseProcessViewModel.CourseId); if (courseProcess == null) { courseProcess = new CourseProcess() { StudentId = courseProcessViewModel.StudentId, CourseId = courseProcessViewModel.CourseId, LectureId = courseProcessViewModel.LectureId, LastUpdated = DateTime.Now }; await courseProcessRepository.Add(courseProcess); } else { courseProcess.LectureId = courseProcessViewModel.LectureId; courseProcess.LastUpdated = DateTime.Now; await courseProcessRepository.Update(courseProcess); } double completionRate = await lectureRepository.GetCompletionRateByCourseIdAndLectureId(courseProcessViewModel.CourseId, courseProcessViewModel.LectureId); return(Ok(new { Results = new { CourseProcess = courseProcess, CompletionRate = completionRate } })); } catch (Exception e) { Console.WriteLine($"ErrorMesages: {e}"); return(BadRequest(new { Errors = new { Code = "InvalidInputParameters", Description = "Invalid Input Parameters!" } })); } }