Skip to content

Commit f54880b

Browse files
authored
Merge pull request #300 from prgrms-web-devcourse-final-project/refactor/EA3-209-recuritment-post-edit
[EA3-209] refactor: 모집글 저장시 모집 기간 수정
2 parents 7fe060c + adafab1 commit f54880b

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

src/main/java/grep/neogulcoder/domain/recruitment/RecruitmentErrorCode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public enum RecruitmentErrorCode implements ErrorCode {
1515
NOT_FOUND_STUDY_MEMBER(HttpStatus.NOT_FOUND, HttpStatus.NOT_FOUND.name(), "스터디에 참여하고 있지 않은 회원 입니다."),
1616
NOT_FOUND_COMMENT(HttpStatus.NOT_FOUND, HttpStatus.NOT_FOUND.name(), "댓글을 찾지 못했습니다"),
1717
NOT_OWNER(HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST.name(), "모집글을 등록한 당사자가 아닙니다."),
18-
END_DATE_ERROR(HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST.name(), "모집글은 스터디가 시작되고 종료될 때까지 작성 가능 합니다.");
18+
END_DATE_ERROR(HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST.name(), "모집글은 스터디가 시작되고 종료될 때까지 작성 가능 합니다."),
19+
END_DATE_BEFORE_NOW_NOT_ALLOWED(HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST.name(), "모집글 마감기간은 오늘 이전으로 선택은 불가능 합니다.");
1920

2021
private static final String BASIC_MESSAGE = "RECRUITMENT";
2122
private final HttpStatus status;

src/main/java/grep/neogulcoder/domain/recruitment/post/controller/RecruitmentPostSaveController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import grep.neogulcoder.domain.recruitment.post.controller.dto.response.save.JoinedStudyLoadInfo;
66
import grep.neogulcoder.domain.recruitment.post.service.RecruitmentPostSaveService;
77
import grep.neogulcoder.global.auth.Principal;
8+
import grep.neogulcoder.global.exception.validation.ValidationException;
89
import grep.neogulcoder.global.response.ApiResponse;
910
import jakarta.validation.Valid;
1011
import lombok.RequiredArgsConstructor;
1112
import org.springframework.http.ResponseEntity;
1213
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1314
import org.springframework.web.bind.annotation.*;
1415

16+
import java.time.LocalDate;
17+
18+
import static grep.neogulcoder.domain.recruitment.RecruitmentErrorCode.END_DATE_BEFORE_NOW_NOT_ALLOWED;
19+
1520
@RequestMapping("/recruitment-posts")
1621
@RequiredArgsConstructor
1722
@RestController
@@ -22,6 +27,11 @@ public class RecruitmentPostSaveController implements RecruitmentPostSaveSpecifi
2227
@PostMapping
2328
public ResponseEntity<ApiResponse<Long>> save(@Valid @RequestBody RecruitmentPostCreateRequest request,
2429
@AuthenticationPrincipal Principal userDetails) {
30+
31+
if (request.hasExpiredDateBefore(LocalDate.now())) {
32+
throw new ValidationException(END_DATE_BEFORE_NOW_NOT_ALLOWED);
33+
}
34+
2535
long postId = recruitmentPostService.create(request.toServiceRequest(), userDetails.getUserId());
2636
return ResponseEntity.ok(ApiResponse.success(postId));
2737
}

src/main/java/grep/neogulcoder/domain/recruitment/post/controller/dto/request/save/RecruitmentPostCreateRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import lombok.Builder;
99
import lombok.Getter;
1010

11+
import java.time.LocalDate;
1112
import java.time.LocalDateTime;
1213

1314
@Getter
@@ -55,4 +56,8 @@ public RecruitmentPostCreateServiceRequest toServiceRequest() {
5556
.expiredDate(this.expiredDate)
5657
.build();
5758
}
59+
60+
public boolean hasExpiredDateBefore(LocalDate date) {
61+
return this.expiredDate.toLocalDate().isBefore(date);
62+
}
5863
}

src/main/java/grep/neogulcoder/domain/recruitment/post/service/RecruitmentPostSaveService.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package grep.neogulcoder.domain.recruitment.post.service;
22

3-
import grep.neogulcoder.domain.recruitment.post.controller.dto.response.save.JoinedStudyLoadInfo;
43
import grep.neogulcoder.domain.recruitment.post.controller.dto.response.save.JoinedStudiesInfo;
4+
import grep.neogulcoder.domain.recruitment.post.controller.dto.response.save.JoinedStudyLoadInfo;
55
import grep.neogulcoder.domain.recruitment.post.repository.RecruitmentPostRepository;
66
import grep.neogulcoder.domain.recruitment.post.service.request.RecruitmentPostCreateServiceRequest;
77
import grep.neogulcoder.domain.study.Study;
@@ -13,12 +13,9 @@
1313
import org.springframework.stereotype.Service;
1414
import org.springframework.transaction.annotation.Transactional;
1515

16-
import java.time.LocalDateTime;
1716
import java.util.List;
1817

1918
import static grep.neogulcoder.domain.recruitment.RecruitmentErrorCode.*;
20-
import static grep.neogulcoder.domain.recruitment.RecruitmentErrorCode.NOT_FOUND_STUDY_MEMBER;
21-
import static grep.neogulcoder.domain.recruitment.RecruitmentErrorCode.NOT_STUDY_LEADER;
2219

2320
@RequiredArgsConstructor
2421
@Transactional(readOnly = true)
@@ -36,7 +33,7 @@ public long create(RecruitmentPostCreateServiceRequest request, long userId) {
3633
throw new BusinessException(NOT_STUDY_LEADER);
3734
}
3835

39-
if(studyMember.getStudy().hasEndDateBefore(request.getExpiredDate())){
36+
if (studyMember.getStudy().hasEndDateBefore(request.getExpiredDate())) {
4037
throw new BusinessException(END_DATE_ERROR);
4138
}
4239

@@ -70,7 +67,7 @@ private List<Study> toStudyList(List<StudyMember> studyMembers) {
7067
private Study findValidStudy(long studyId, long userId) {
7168
StudyMember studyMember = studyMemberRepository.findByStudyIdAndUserId(studyId, userId);
7269

73-
if(isNotParticipated(studyMember)){
70+
if (isNotParticipated(studyMember)) {
7471
throw new NotFoundException(NOT_FOUND_STUDY_MEMBER);
7572
}
7673
return studyMember.getStudy();

src/main/java/grep/neogulcoder/domain/study/Study.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public boolean isReviewableAt(LocalDateTime currentDateTime) {
126126
}
127127

128128
public boolean hasEndDateBefore(LocalDateTime dateTime) {
129-
return this.endDate.isBefore(dateTime);
129+
return this.endDate.toLocalDate().isBefore(dateTime.toLocalDate());
130130
}
131131

132132
public static boolean isOverJoinLimit(int joinedStudyCount) {

0 commit comments

Comments
 (0)