Skip to content

Commit

Permalink
Merge pull request #21 from Team-Puzzling/feat/#20-review-5F-post-api
Browse files Browse the repository at this point in the history
#20 [FEAT] 5F 템플릿 회고 작성 API
  • Loading branch information
yeseul106 authored Jul 15, 2023
2 parents 8b41741 + 0a0cb45 commit 1b82b73
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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());
}
}
Original file line number Diff line number Diff line change
@@ -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;

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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("해당하는 회고 팀플릿이 없습니다"));
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -10,4 +11,6 @@ public interface ReviewService {
List<ReviewTemplateGetResponseDto> getReviewTemplateAll();

void createReviewTIL(Long memberId, Long projectId, ReviewTILRequestDto reviewTILRequestDto);

void createReview5F(Long memberId, Long projectId, Review5FRequestDto review5FRequestDto);
}
Original file line number Diff line number Diff line change
@@ -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<Review5F, Long> {

}

0 comments on commit 1b82b73

Please sign in to comment.