diff --git a/src/main/java/young/blaybus/domain/job_search/JobSearch.java b/src/main/java/young/blaybus/domain/job_search/JobSearch.java index 69cd20f..23b5c08 100644 --- a/src/main/java/young/blaybus/domain/job_search/JobSearch.java +++ b/src/main/java/young/blaybus/domain/job_search/JobSearch.java @@ -16,6 +16,7 @@ import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import young.blaybus.domain.job_search.request.CreateJobSearchRequest; import young.blaybus.domain.job_search.request.JobSearchAreaRequest; import young.blaybus.domain.job_search.request.UpdateJobSearchRequest; import young.blaybus.domain.member.Member; @@ -95,5 +96,39 @@ public void updateFromDto(UpdateJobSearchRequest request){ } } + public void updateFromDto(CreateJobSearchRequest request){ + if(request.startTime()!=null) { + this.startTime = LocalTime.parse(request.startTime()); + } + + if(request.endTime()!=null) { + this.endTime = LocalTime.parse(request.endTime()); + } + + if(request.salary()!=null) { + this.salary = request.salary(); + } + + if(!request.jobSearchAreas().isEmpty()) { + this.jobSearchAreas.clear(); + for (JobSearchAreaRequest jobSearchAreaRequest : request.jobSearchAreas()) { + this.jobSearchAreas.add(JobSearchArea.builder() + .jobSearch(this) + .address(jobSearchAreaRequest.address()) + .build()); + } + } + + if(!request.dayList().isEmpty()) { + this.dayList.clear(); + for (DayOfWeek dayOfWeek : request.dayList()) { + this.dayList.add(JobSearchDay.builder() + .jobSearch(this) + .day(dayOfWeek) + .build()); + } + } + } + } diff --git a/src/main/java/young/blaybus/domain/job_search/service/JobSearchService.java b/src/main/java/young/blaybus/domain/job_search/service/JobSearchService.java index 9533ff7..b344cea 100644 --- a/src/main/java/young/blaybus/domain/job_search/service/JobSearchService.java +++ b/src/main/java/young/blaybus/domain/job_search/service/JobSearchService.java @@ -45,31 +45,37 @@ public void createJobSearch(CreateJobSearchRequest jobSearchRequest) { Member member = memberRepository.findById(jobSearchRequest.memberId()) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 사용자입니다.")); - JobSearch jobSearch = JobSearch.builder() - .member(member) - .startTime(LocalTime.parse(jobSearchRequest.startTime())) - .endTime(LocalTime.parse(jobSearchRequest.endTime())) - .salary(jobSearchRequest.salary()) - .createdTime(LocalDateTime.now()) - .build(); - - List jobSearchAreas = jobSearchRequest.jobSearchAreas().stream() - .map(areaRequest -> JobSearchArea.builder() - .address(areaRequest.address()) - .jobSearch(jobSearch) - .build()) - .toList(); - jobSearch.getJobSearchAreas().addAll(jobSearchAreas); - - List jobSearchDays = jobSearchRequest.dayList().stream() - .map(day -> JobSearchDay.builder() - .day(day) - .jobSearch(jobSearch) - .build()) - .toList(); - jobSearch.getDayList().addAll(jobSearchDays); - - jobSearchRepository.save(jobSearch); + JobSearch jobSearch = jobSearchRepository.findByMemberId(member.getId()).orElse(null); + if (jobSearch == null) { + + JobSearch newJobSearch = JobSearch.builder() + .member(member) + .startTime(LocalTime.parse(jobSearchRequest.startTime())) + .endTime(LocalTime.parse(jobSearchRequest.endTime())) + .salary(jobSearchRequest.salary()) + .createdTime(LocalDateTime.now()) + .build(); + + List jobSearchAreas = jobSearchRequest.jobSearchAreas().stream() + .map(areaRequest -> JobSearchArea.builder() + .address(areaRequest.address()) + .jobSearch(newJobSearch) + .build()) + .toList(); + newJobSearch.getJobSearchAreas().addAll(jobSearchAreas); + + List jobSearchDays = jobSearchRequest.dayList().stream() + .map(day -> JobSearchDay.builder() + .day(day) + .jobSearch(newJobSearch) + .build()) + .toList(); + newJobSearch.getDayList().addAll(jobSearchDays); + + jobSearchRepository.save(newJobSearch); + } else { + jobSearch.updateFromDto(jobSearchRequest); + } } @Transactional