diff --git a/src/main/java/com/likelion/innerjoin/InnerjoinApplication.java b/src/main/java/com/likelion/innerjoin/InnerjoinApplication.java index 12ae773..e3ef215 100644 --- a/src/main/java/com/likelion/innerjoin/InnerjoinApplication.java +++ b/src/main/java/com/likelion/innerjoin/InnerjoinApplication.java @@ -24,7 +24,7 @@ public void addCorsMappings(CorsRegistry registry) { .allowedOrigins("http://localhost:3000", "http://localhost:3001", "https://innerjoin.vercel.app") // 허용할 도메인 - .allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS") // 허용할 HTTP 메소드 + .allowedMethods("*") // 허용할 HTTP 메소드 .allowedHeaders("*") // 허용할 헤더 .allowCredentials(true); } diff --git a/src/main/java/com/likelion/innerjoin/post/repository/MeetingTimeRepository.java b/src/main/java/com/likelion/innerjoin/post/repository/MeetingTimeRepository.java index 4ed1a53..04ca40e 100644 --- a/src/main/java/com/likelion/innerjoin/post/repository/MeetingTimeRepository.java +++ b/src/main/java/com/likelion/innerjoin/post/repository/MeetingTimeRepository.java @@ -4,9 +4,11 @@ import com.likelion.innerjoin.post.model.entity.Recruiting; import org.springframework.data.jpa.repository.JpaRepository; +import java.time.LocalDateTime; import java.util.List; public interface MeetingTimeRepository extends JpaRepository { List findByRecruiting(Recruiting recruiting); List findByRecruitingId(Long recruitingId); + MeetingTime findByMeetingStartTimeAndMeetingEndTimeAndRecruiting(LocalDateTime meetingStartTime, LocalDateTime meetingEndTime, Recruiting recruiting); } diff --git a/src/main/java/com/likelion/innerjoin/post/service/ApplicationService.java b/src/main/java/com/likelion/innerjoin/post/service/ApplicationService.java index d2a5c53..b269966 100644 --- a/src/main/java/com/likelion/innerjoin/post/service/ApplicationService.java +++ b/src/main/java/com/likelion/innerjoin/post/service/ApplicationService.java @@ -134,24 +134,22 @@ public ApplicationDto updateApplication( throw new UnauthorizedException("권한이 없습니다."); } + MeetingTime meetingTime = meetingTimeRepository.findByMeetingStartTimeAndMeetingEndTimeAndRecruiting( + applicationPutRequestDto.getMeetingStartTime(), + applicationPutRequestDto.getMeetingEndTime(), + application.getRecruiting() + ); + if(meetingTime == null) { + throw new MeetingTimeNotFound("면접시간이 존재하지 않습니다."); + } + application.setFormResult(applicationPutRequestDto.getFormResult()); application.setMeetingResult(applicationPutRequestDto.getMeetingResult()); - if(application.getMeetingTime() != null){ - application.getMeetingTime().setMeetingStartTime(applicationPutRequestDto.getMeetingStartTime()); - application.getMeetingTime().setMeetingEndTime(applicationPutRequestDto.getMeetingEndTime()); - }else{ - // 임시 meetingtime 데이터 만들기 - MeetingTime meetingTime = new MeetingTime(); - meetingTime.setMeetingStartTime(applicationPutRequestDto.getMeetingStartTime()); - meetingTime.setMeetingEndTime(applicationPutRequestDto.getMeetingEndTime()); - meetingTime.setAllowedNum(1); - - meetingTime.setApplicationList(new ArrayList<>()); - meetingTime.getApplicationList().add(application); - - application.setMeetingTime(meetingTimeRepository.save(meetingTime)); + if(meetingTime.getApplicationList().size() >= meetingTime.getAllowedNum() && !meetingTime.getApplicationList().contains(application)){ + throw new AllowedNumExceededException("허용 인원을 초과하였습니다."); } + application.setMeetingTime(meetingTime); applicationRepository.save(application); return applicationMapper.toApplicationDto(application, false);