diff --git a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/controller/ReviewController.java b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/controller/ReviewController.java index 28a7578..3f4a8eb 100644 --- a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/controller/ReviewController.java +++ b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/controller/ReviewController.java @@ -1,5 +1,6 @@ package com.puzzling.puzzlingServer.api.review.controller; +import com.puzzling.puzzlingServer.api.review.dto.request.Review5FRequestDto; import com.puzzling.puzzlingServer.api.review.dto.response.ReviewTemplateGetResponseDto; import com.puzzling.puzzlingServer.api.review.dto.request.ReviewTILRequestDto; import com.puzzling.puzzlingServer.api.review.service.ReviewService; @@ -28,4 +29,10 @@ public ApiResponse createReviewTIL(@PathVariable("memberId") Long memberId,@Path reviewService.createReviewTIL(memberId, projectId, reviewTILRequestDto); return ApiResponse.success(SuccessStatus.POST_REVIEW_SUCCESS.getStatusCode(), SuccessStatus.POST_REVIEW_SUCCESS.getMessage()); } + + @PostMapping("member/{memberId}/project/{projectId}/review/5F") + public ApiResponse createReview5F(@PathVariable("memberId") Long memberId,@PathVariable("projectId") Long projectId, @Valid @RequestBody Review5FRequestDto review5FRequestDto){ + reviewService.createReview5F(memberId, projectId, review5FRequestDto); + return ApiResponse.success(SuccessStatus.POST_REVIEW_SUCCESS.getStatusCode(), SuccessStatus.POST_REVIEW_SUCCESS.getMessage()); + } } diff --git a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/dto/request/Review5FRequestDto.java b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/dto/request/Review5FRequestDto.java new file mode 100644 index 0000000..a80853e --- /dev/null +++ b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/dto/request/Review5FRequestDto.java @@ -0,0 +1,28 @@ +package com.puzzling.puzzlingServer.api.review.dto.request; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +import static lombok.AccessLevel.PROTECTED; + +@Getter +@NoArgsConstructor(access = PROTECTED) +@AllArgsConstructor +public class Review5FRequestDto { + + private Long reviewTemplateId; + @NotBlank + private String fact; + @NotBlank + private String feeling; + @NotBlank + private String finding; + @NotBlank + private String feedback; + @NotBlank + private String actionPlan; + +} \ No newline at end of file diff --git a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/Impl/ReviewServiceImpl.java b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/Impl/ReviewServiceImpl.java index b1c25ec..3db25c8 100644 --- a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/Impl/ReviewServiceImpl.java +++ b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/Impl/ReviewServiceImpl.java @@ -3,12 +3,15 @@ import com.puzzling.puzzlingServer.api.project.domain.UserProject; import com.puzzling.puzzlingServer.api.project.repository.UserProjectRepository; import com.puzzling.puzzlingServer.api.review.domain.Review; +import com.puzzling.puzzlingServer.api.review.dto.request.Review5FRequestDto; import com.puzzling.puzzlingServer.api.review.dto.response.ReviewTemplateGetResponseDto; import com.puzzling.puzzlingServer.api.review.dto.request.ReviewTILRequestDto; import com.puzzling.puzzlingServer.api.review.repository.ReviewRepository; import com.puzzling.puzzlingServer.api.review.service.ReviewService; +import com.puzzling.puzzlingServer.api.template.Repository.Review5FRepository; import com.puzzling.puzzlingServer.api.template.Repository.ReviewTILRepository; import com.puzzling.puzzlingServer.api.template.Repository.ReviewTemplateRepository; +import com.puzzling.puzzlingServer.api.template.domain.Review5F; import com.puzzling.puzzlingServer.api.template.domain.ReviewTIL; import com.puzzling.puzzlingServer.api.template.domain.ReviewTemplate; import com.puzzling.puzzlingServer.common.exception.BadRequestException; @@ -27,6 +30,7 @@ public class ReviewServiceImpl implements ReviewService { private final ReviewTemplateRepository reviewTemplateRepository; private final UserProjectRepository userProjectRepository; private final ReviewTILRepository reviewTILRepository; + private final Review5FRepository review5FRepository; private final ReviewRepository reviewRepository; @Override @Transactional @@ -68,6 +72,39 @@ public void createReviewTIL(Long memberId, Long projectId, ReviewTILRequestDto r reviewTILRepository.save(reviewTIL); } + @Override + @Transactional + public void createReview5F(Long memberId, Long projectId, Review5FRequestDto review5FRequestDto) { + UserProject userProject = userProjectRepository.findByMemberIdAndProjectId(memberId,projectId); + + if ( review5FRequestDto.getReviewTemplateId() == null ) { + throw new BadRequestException("공백일 수 없습니다. (reviewTemplateId)"); + } + ReviewTemplate reviewTemplate = findReviewTemplateById(review5FRequestDto.getReviewTemplateId()); + + userProject.updatePreviousTemplateId(review5FRequestDto.getReviewTemplateId()); + + Review review = Review.builder() + .userProject(userProject) + .reviewTemplate(reviewTemplate) + .reviewDate("123") + .memberId(memberId) + .projectId(projectId) + .build(); + Review savedReview = reviewRepository.save(review); + + Review5F review5F = Review5F.builder() + .review(savedReview) + .fact(review5FRequestDto.getFact()) + .feeling(review5FRequestDto.getFeeling()) + .finding(review5FRequestDto.getFinding()) + .feedback(review5FRequestDto.getFeedback()) + .actionPlan(review5FRequestDto.getActionPlan()) + .build(); + review5FRepository.save(review5F); + } + + private ReviewTemplate findReviewTemplateById (Long reviewTemplateId) { return reviewTemplateRepository.findById(reviewTemplateId) .orElseThrow(() -> new NotFoundException("해당하는 회고 팀플릿이 없습니다")); diff --git a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/ReviewService.java b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/ReviewService.java index 067d9db..ec6536e 100644 --- a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/ReviewService.java +++ b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/review/service/ReviewService.java @@ -1,5 +1,6 @@ package com.puzzling.puzzlingServer.api.review.service; +import com.puzzling.puzzlingServer.api.review.dto.request.Review5FRequestDto; import com.puzzling.puzzlingServer.api.review.dto.response.ReviewTemplateGetResponseDto; import com.puzzling.puzzlingServer.api.review.dto.request.ReviewTILRequestDto; @@ -10,4 +11,6 @@ public interface ReviewService { List getReviewTemplateAll(); void createReviewTIL(Long memberId, Long projectId, ReviewTILRequestDto reviewTILRequestDto); + + void createReview5F(Long memberId, Long projectId, Review5FRequestDto review5FRequestDto); } diff --git a/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/template/Repository/Review5FRepository.java b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/template/Repository/Review5FRepository.java new file mode 100644 index 0000000..993deef --- /dev/null +++ b/puzzlingServer/src/main/java/com/puzzling/puzzlingServer/api/template/Repository/Review5FRepository.java @@ -0,0 +1,8 @@ +package com.puzzling.puzzlingServer.api.template.Repository; + +import com.puzzling.puzzlingServer.api.template.domain.Review5F; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface Review5FRepository extends JpaRepository { + +}