public async Task <IActionResult> UpdateCourseReview(int courseId, [FromBody] CourseReviewUpdateRequestDto request) { try { var result = await _courseReviewServices.UpdateCourseReviewForCurrentUserAsync(courseId, request); return(Ok(result)); } catch (CourseReviewException ex) { return(BadRequest(ex.Message)); } catch (BadRequestException ex) { return(BadRequest(ex.Message)); } catch (NotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception ex) { _logger.LogCritical($"UpdateCourseReview() Error: {ex}"); return(StatusCode(500, "Internal Server Error")); } }
public async Task <CourseReviewDto> UpdateCourseReviewForCurrentUserAsync(int courseId, CourseReviewUpdateRequestDto request) { // 1. check user and course var user = await GetCurrentUser(); var course = await _courseRepository.GetCourseAsync(courseId); if (course == null) { throw new NotFoundException("Course not found"); } //2. update course rating var review = await _courseReviewRepository.GetCourseReviewByCourseIdAndUserIdAsync(user.Id, courseId); review.Update(user, request.Comment, request.Score); await _courseReviewRepository.SaveAsync(); return(Mapper.Map <CourseReviewDto>(review)); }