diff --git a/src/main/java/com/zenjob/challenge/service/IJobService.java b/src/main/java/com/zenjob/challenge/application/interfaces/JobService.java similarity index 73% rename from src/main/java/com/zenjob/challenge/service/IJobService.java rename to src/main/java/com/zenjob/challenge/application/interfaces/JobService.java index 3db880d..283b73f 100644 --- a/src/main/java/com/zenjob/challenge/service/IJobService.java +++ b/src/main/java/com/zenjob/challenge/application/interfaces/JobService.java @@ -1,14 +1,14 @@ -package com.zenjob.challenge.service; +package com.zenjob.challenge.application.interfaces; -import com.zenjob.challenge.entity.Job; -import com.zenjob.challenge.entity.Shift; +import com.zenjob.challenge.domain.entity.Job; +import com.zenjob.challenge.domain.entity.Shift; import java.time.LocalDate; import java.util.List; import java.util.Optional; import java.util.UUID; -public interface IJobService { +public interface JobService { Job createJob(UUID companyId, LocalDate startDate, LocalDate endDate); List getShifts(UUID id); void bookTalent(UUID talent, UUID shiftId); diff --git a/src/main/java/com/zenjob/challenge/service/JobService.java b/src/main/java/com/zenjob/challenge/application/services/JobServiceImpl.java similarity index 87% rename from src/main/java/com/zenjob/challenge/service/JobService.java rename to src/main/java/com/zenjob/challenge/application/services/JobServiceImpl.java index a934630..037426a 100644 --- a/src/main/java/com/zenjob/challenge/service/JobService.java +++ b/src/main/java/com/zenjob/challenge/application/services/JobServiceImpl.java @@ -1,10 +1,11 @@ -package com.zenjob.challenge.service; - -import com.zenjob.challenge.customexception.InvalidActionException; -import com.zenjob.challenge.customexception.InvalidEndDateException; -import com.zenjob.challenge.customexception.InvalidStartDateException; -import com.zenjob.challenge.entity.Job; -import com.zenjob.challenge.entity.Shift; +package com.zenjob.challenge.application.services; + +import com.zenjob.challenge.application.interfaces.JobService; +import com.zenjob.challenge.domain.exceptions.InvalidActionException; +import com.zenjob.challenge.domain.exceptions.InvalidEndDateException; +import com.zenjob.challenge.domain.exceptions.InvalidStartDateException; +import com.zenjob.challenge.domain.entity.Job; +import com.zenjob.challenge.domain.entity.Shift; import com.zenjob.challenge.repository.JobRepository; import com.zenjob.challenge.repository.ShiftRepository; import lombok.RequiredArgsConstructor; @@ -23,8 +24,8 @@ @RequiredArgsConstructor @Service @Transactional -public class JobService implements IJobService { - private final JobRepository jobRepository; +public class JobServiceImpl implements JobService { + private final JobRepository jobRepository; private final ShiftRepository shiftRepository; public Job createJob(UUID companyId, LocalDate startDate, LocalDate endDate) { diff --git a/src/main/java/com/zenjob/challenge/controller/JobController.java b/src/main/java/com/zenjob/challenge/controller/JobController.java deleted file mode 100644 index f3b4edb..0000000 --- a/src/main/java/com/zenjob/challenge/controller/JobController.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.zenjob.challenge.controller; - -import com.zenjob.challenge.dto.ResponseDto; -import com.zenjob.challenge.entity.Job; -import com.zenjob.challenge.service.IJobService; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import javax.validation.constraints.NotNull; -import java.time.LocalDate; -import java.util.UUID; - -@RestController -@RequestMapping(path = "/job") -@RequiredArgsConstructor -public class JobController { - private final IJobService jobService; - - @PostMapping - @ResponseBody - public ResponseDto requestJob(@RequestBody @Valid RequestJobRequestDto dto) { - Job job = jobService.createJob(dto.companyId, dto.start, dto.end); - return ResponseDto.builder() - .data(RequestJobResponse.builder() - .jobId(job.getId()) - .build()) - .build(); - } - - @DeleteMapping(path = "/{id}/cancel") - @ResponseStatus(code = HttpStatus.NO_CONTENT) - public void cancelJob(@PathVariable("id") UUID jobId, @RequestBody @Valid JobController.CancelJobRequestDto dto) { - jobService.cancelJob(dto.companyId, jobId); - } - - @NoArgsConstructor - @Data - private static class CancelJobRequestDto { - UUID companyId; - } - - @NoArgsConstructor - @AllArgsConstructor - @Data - private static class RequestJobRequestDto { - @NotNull - private UUID companyId; - @NotNull - @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) - private LocalDate start; - @NotNull - @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) - private LocalDate end; - } - - @Builder - @Data - private static class RequestJobResponse { - UUID jobId; - } -} diff --git a/src/main/java/com/zenjob/challenge/controller/ShiftController.java b/src/main/java/com/zenjob/challenge/controller/ShiftController.java deleted file mode 100644 index 8ebeccf..0000000 --- a/src/main/java/com/zenjob/challenge/controller/ShiftController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.zenjob.challenge.controller; - -import com.zenjob.challenge.dto.ResponseDto; -import com.zenjob.challenge.service.IJobService; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.time.Instant; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -@RestController -@RequestMapping(path = "/shift") -@RequiredArgsConstructor -public class ShiftController { - private final IJobService jobService; - - @GetMapping(path = "/{jobId}") - @ResponseBody - public ResponseDto getShifts(@PathVariable("jobId") UUID uuid) { - List shiftResponses = jobService.getShifts(uuid).stream() - .map(shift -> ShiftResponse.builder() - .id(shift.getId()) - .talentId(shift.getTalentId()) - .jobId(shift.getJob().getId()) - .start(shift.getCreatedAt()) - .end(shift.getEndTime()) - .build()) - .collect(Collectors.toList()); - return ResponseDto.builder() - .data(GetShiftsResponse.builder() - .shifts(shiftResponses) - .build()) - .build(); - } - - @PatchMapping(path = "/{id}/book") - @ResponseStatus(code = HttpStatus.NO_CONTENT) - public void bookTalent(@PathVariable("id") UUID shiftId, @RequestBody @Valid ShiftController.BookTalentRequestDto dto) { - jobService.bookTalent(dto.talent, shiftId); - } - - @DeleteMapping(path = "/{id}/cancel") - @ResponseStatus(code = HttpStatus.NO_CONTENT) - public void cancelShift(@PathVariable("id") UUID shiftId, @RequestBody @Valid ShiftController.CancelShiftRequestDto dto) { - jobService.cancelShift(dto.companyId, shiftId); - } - - @PatchMapping(path = "/cancel-talent") - @ResponseStatus(code = HttpStatus.NO_CONTENT) - public void cancelShiftForTalent(@RequestBody @Valid ShiftController.CancelShiftForTalentRequestDto dto) { - jobService.cancelShiftForTalent(dto.companyId, dto.talentId); - } - - @NoArgsConstructor - @Data - private static class CancelShiftRequestDto { - UUID companyId; - } - - @NoArgsConstructor - @Data - private static class CancelShiftForTalentRequestDto { - UUID talentId; - UUID companyId; - } - - @NoArgsConstructor - @Data - private static class BookTalentRequestDto { - UUID talent; - } - - @Builder - @Data - private static class GetShiftsResponse { - List shifts; - } - - @Builder - @Data - private static class ShiftResponse { - UUID id; - UUID talentId; - UUID jobId; - Instant start; - Instant end; - } -} diff --git a/src/main/java/com/zenjob/challenge/entity/Job.java b/src/main/java/com/zenjob/challenge/domain/entity/Job.java similarity index 95% rename from src/main/java/com/zenjob/challenge/entity/Job.java rename to src/main/java/com/zenjob/challenge/domain/entity/Job.java index e267296..23be490 100644 --- a/src/main/java/com/zenjob/challenge/entity/Job.java +++ b/src/main/java/com/zenjob/challenge/domain/entity/Job.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.entity; +package com.zenjob.challenge.domain.entity; import lombok.*; import org.springframework.data.annotation.CreatedDate; diff --git a/src/main/java/com/zenjob/challenge/entity/Shift.java b/src/main/java/com/zenjob/challenge/domain/entity/Shift.java similarity index 95% rename from src/main/java/com/zenjob/challenge/entity/Shift.java rename to src/main/java/com/zenjob/challenge/domain/entity/Shift.java index 2430d09..4023049 100644 --- a/src/main/java/com/zenjob/challenge/entity/Shift.java +++ b/src/main/java/com/zenjob/challenge/domain/entity/Shift.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.entity; +package com.zenjob.challenge.domain.entity; import lombok.*; import lombok.experimental.Accessors; diff --git a/src/main/java/com/zenjob/challenge/customexception/InvalidActionException.java b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidActionException.java similarity index 80% rename from src/main/java/com/zenjob/challenge/customexception/InvalidActionException.java rename to src/main/java/com/zenjob/challenge/domain/exceptions/InvalidActionException.java index faf0694..3969d66 100644 --- a/src/main/java/com/zenjob/challenge/customexception/InvalidActionException.java +++ b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidActionException.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.customexception; +package com.zenjob.challenge.domain.exceptions; public class InvalidActionException extends RuntimeException { public InvalidActionException() { diff --git a/src/main/java/com/zenjob/challenge/customexception/InvalidEndDateException.java b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidEndDateException.java similarity index 80% rename from src/main/java/com/zenjob/challenge/customexception/InvalidEndDateException.java rename to src/main/java/com/zenjob/challenge/domain/exceptions/InvalidEndDateException.java index 76e4199..308ac97 100644 --- a/src/main/java/com/zenjob/challenge/customexception/InvalidEndDateException.java +++ b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidEndDateException.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.customexception; +package com.zenjob.challenge.domain.exceptions; public class InvalidEndDateException extends RuntimeException { public InvalidEndDateException(String message) { diff --git a/src/main/java/com/zenjob/challenge/customexception/InvalidStartDateException.java b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidStartDateException.java similarity index 80% rename from src/main/java/com/zenjob/challenge/customexception/InvalidStartDateException.java rename to src/main/java/com/zenjob/challenge/domain/exceptions/InvalidStartDateException.java index 7d88fa5..47d0a99 100644 --- a/src/main/java/com/zenjob/challenge/customexception/InvalidStartDateException.java +++ b/src/main/java/com/zenjob/challenge/domain/exceptions/InvalidStartDateException.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.customexception; +package com.zenjob.challenge.domain.exceptions; public class InvalidStartDateException extends RuntimeException { public InvalidStartDateException() { diff --git a/src/main/java/com/zenjob/challenge/repository/JobRepository.java b/src/main/java/com/zenjob/challenge/repository/JobRepository.java index ec11ae5..f71538d 100644 --- a/src/main/java/com/zenjob/challenge/repository/JobRepository.java +++ b/src/main/java/com/zenjob/challenge/repository/JobRepository.java @@ -1,6 +1,6 @@ package com.zenjob.challenge.repository; -import com.zenjob.challenge.entity.Job; +import com.zenjob.challenge.domain.entity.Job; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/zenjob/challenge/repository/ShiftRepository.java b/src/main/java/com/zenjob/challenge/repository/ShiftRepository.java index 908be12..d6c4b94 100644 --- a/src/main/java/com/zenjob/challenge/repository/ShiftRepository.java +++ b/src/main/java/com/zenjob/challenge/repository/ShiftRepository.java @@ -1,6 +1,6 @@ package com.zenjob.challenge.repository; -import com.zenjob.challenge.entity.Shift; +import com.zenjob.challenge.domain.entity.Shift; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/zenjob/challenge/config/ClockConfig.java b/src/main/java/com/zenjob/challenge/rest/config/ClockConfig.java similarity index 89% rename from src/main/java/com/zenjob/challenge/config/ClockConfig.java rename to src/main/java/com/zenjob/challenge/rest/config/ClockConfig.java index b203ed0..b49734a 100644 --- a/src/main/java/com/zenjob/challenge/config/ClockConfig.java +++ b/src/main/java/com/zenjob/challenge/rest/config/ClockConfig.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.config; +package com.zenjob.challenge.rest.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/zenjob/challenge/config/TimedAspectConfig.java b/src/main/java/com/zenjob/challenge/rest/config/TimedAspectConfig.java similarity index 91% rename from src/main/java/com/zenjob/challenge/config/TimedAspectConfig.java rename to src/main/java/com/zenjob/challenge/rest/config/TimedAspectConfig.java index 89d3531..47fb0cf 100644 --- a/src/main/java/com/zenjob/challenge/config/TimedAspectConfig.java +++ b/src/main/java/com/zenjob/challenge/rest/config/TimedAspectConfig.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.config; +package com.zenjob.challenge.rest.config; import io.micrometer.core.aop.TimedAspect; import io.micrometer.core.instrument.MeterRegistry; diff --git a/src/main/java/com/zenjob/challenge/rest/controller/JobController.java b/src/main/java/com/zenjob/challenge/rest/controller/JobController.java new file mode 100644 index 0000000..1b07f43 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/controller/JobController.java @@ -0,0 +1,38 @@ +package com.zenjob.challenge.rest.controller; + +import com.zenjob.challenge.rest.dto.job.CancelJobRequestDto; +import com.zenjob.challenge.rest.dto.job.RequestJobRequestDto; +import com.zenjob.challenge.rest.dto.job.RequestJobResponseDto; +import com.zenjob.challenge.rest.dto.ResponseDto; +import com.zenjob.challenge.domain.entity.Job; +import com.zenjob.challenge.application.interfaces.JobService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.UUID; + +@RestController +@RequestMapping(path = "/job") +@RequiredArgsConstructor +public class JobController { + private final JobService jobService; + + @PostMapping + @ResponseBody + public ResponseDto requestJob(@RequestBody @Valid RequestJobRequestDto dto) { + Job job = jobService.createJob(dto.getCompanyId(), dto.getStart(), dto.getEnd()); + return ResponseDto.builder() + .data(RequestJobResponseDto.builder() + .jobId(job.getId()) + .build()) + .build(); + } + + @DeleteMapping(path = "/{id}/cancel") + @ResponseStatus(code = HttpStatus.NO_CONTENT) + public void cancelJob(@PathVariable("id") UUID jobId, @RequestBody @Valid CancelJobRequestDto dto) { + jobService.cancelJob(dto.getCompanyId(), jobId); + } +} diff --git a/src/main/java/com/zenjob/challenge/rest/controller/ShiftController.java b/src/main/java/com/zenjob/challenge/rest/controller/ShiftController.java new file mode 100644 index 0000000..649b12b --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/controller/ShiftController.java @@ -0,0 +1,57 @@ +package com.zenjob.challenge.rest.controller; + +import com.zenjob.challenge.rest.dto.ResponseDto; +import com.zenjob.challenge.application.interfaces.JobService; +import com.zenjob.challenge.rest.dto.shift.*; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@RestController +@RequestMapping(path = "/shift") +@RequiredArgsConstructor +public class ShiftController { + private final JobService jobService; + + @GetMapping(path = "/{jobId}") + @ResponseBody + public ResponseDto getShifts(@PathVariable("jobId") UUID uuid) { + List shiftResponses = jobService.getShifts(uuid).stream() + .map(shift -> ShiftResponseDto.builder() + .id(shift.getId()) + .talentId(shift.getTalentId()) + .jobId(shift.getJob().getId()) + .start(shift.getCreatedAt()) + .end(shift.getEndTime()) + .build()) + .collect(Collectors.toList()); + return ResponseDto.builder() + .data(GetShiftsResponseDto.builder() + .shifts(shiftResponses) + .build()) + .build(); + } + + @PatchMapping(path = "/{id}/book") + @ResponseStatus(code = HttpStatus.NO_CONTENT) + public void bookTalent(@PathVariable("id") UUID shiftId, @RequestBody @Valid BookTalentRequestDto dto) { + jobService.bookTalent(dto.getTalentId(), shiftId); + } + + @PatchMapping(path = "/cancel-talent") + @ResponseStatus(code = HttpStatus.NO_CONTENT) + public void cancelShiftForTalent(@RequestBody @Valid CancelShiftForTalentRequestDto dto) { + jobService.cancelShiftForTalent(dto.getCompanyId(), dto.getTalentId()); + } + + @DeleteMapping(path = "/{id}/cancel") + @ResponseStatus(code = HttpStatus.NO_CONTENT) + public void cancelShift(@PathVariable("id") UUID shiftId, @RequestBody @Valid CancelShiftRequestDto dto) { + jobService.cancelShift(dto.getCompanyId(), shiftId); + } +} diff --git a/src/main/java/com/zenjob/challenge/dto/ResponseDto.java b/src/main/java/com/zenjob/challenge/rest/dto/ResponseDto.java similarity index 72% rename from src/main/java/com/zenjob/challenge/dto/ResponseDto.java rename to src/main/java/com/zenjob/challenge/rest/dto/ResponseDto.java index 4463af2..1f8c18c 100644 --- a/src/main/java/com/zenjob/challenge/dto/ResponseDto.java +++ b/src/main/java/com/zenjob/challenge/rest/dto/ResponseDto.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.dto; +package com.zenjob.challenge.rest.dto; import lombok.Builder; import lombok.Data; diff --git a/src/main/java/com/zenjob/challenge/rest/dto/job/CancelJobRequestDto.java b/src/main/java/com/zenjob/challenge/rest/dto/job/CancelJobRequestDto.java new file mode 100644 index 0000000..a4f3a31 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/job/CancelJobRequestDto.java @@ -0,0 +1,12 @@ +package com.zenjob.challenge.rest.dto.job; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@Data +public class CancelJobRequestDto { + private UUID companyId; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobRequestDto.java b/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobRequestDto.java new file mode 100644 index 0000000..d7cff25 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobRequestDto.java @@ -0,0 +1,24 @@ +package com.zenjob.challenge.rest.dto.job; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.util.UUID; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class RequestJobRequestDto { + @NotNull + private UUID companyId; + @NotNull + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) + private LocalDate start; + @NotNull + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) + private LocalDate end; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobResponseDto.java b/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobResponseDto.java new file mode 100644 index 0000000..aa391b1 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/job/RequestJobResponseDto.java @@ -0,0 +1,12 @@ +package com.zenjob.challenge.rest.dto.job; + +import lombok.Builder; +import lombok.Data; + +import java.util.UUID; + +@Builder +@Data +public class RequestJobResponseDto { + private UUID jobId; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/shift/BookTalentRequestDto.java b/src/main/java/com/zenjob/challenge/rest/dto/shift/BookTalentRequestDto.java new file mode 100644 index 0000000..17e0bcb --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/shift/BookTalentRequestDto.java @@ -0,0 +1,12 @@ +package com.zenjob.challenge.rest.dto.shift; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@Data +public class BookTalentRequestDto { + private UUID talentId; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftForTalentRequestDto.java b/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftForTalentRequestDto.java new file mode 100644 index 0000000..806d0e3 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftForTalentRequestDto.java @@ -0,0 +1,13 @@ +package com.zenjob.challenge.rest.dto.shift; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@Data +public class CancelShiftForTalentRequestDto { + private UUID talentId; + private UUID companyId; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftRequestDto.java b/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftRequestDto.java new file mode 100644 index 0000000..e2dfc44 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/shift/CancelShiftRequestDto.java @@ -0,0 +1,12 @@ +package com.zenjob.challenge.rest.dto.shift; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@Data +public class CancelShiftRequestDto { + private UUID companyId; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/shift/GetShiftsResponseDto.java b/src/main/java/com/zenjob/challenge/rest/dto/shift/GetShiftsResponseDto.java new file mode 100644 index 0000000..76dc4ed --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/shift/GetShiftsResponseDto.java @@ -0,0 +1,12 @@ +package com.zenjob.challenge.rest.dto.shift; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Builder +@Data +public class GetShiftsResponseDto { + private List shifts; +} diff --git a/src/main/java/com/zenjob/challenge/rest/dto/shift/ShiftResponseDto.java b/src/main/java/com/zenjob/challenge/rest/dto/shift/ShiftResponseDto.java new file mode 100644 index 0000000..f572391 --- /dev/null +++ b/src/main/java/com/zenjob/challenge/rest/dto/shift/ShiftResponseDto.java @@ -0,0 +1,17 @@ +package com.zenjob.challenge.rest.dto.shift; + +import lombok.Builder; +import lombok.Data; + +import java.time.Instant; +import java.util.UUID; + +@Builder +@Data +public class ShiftResponseDto { + private UUID id; + private UUID talentId; + private UUID jobId; + private Instant start; + private Instant end; +} diff --git a/src/main/java/com/zenjob/challenge/exceptionhandler/ErrorResponseDto.java b/src/main/java/com/zenjob/challenge/rest/exceptionhandler/ErrorResponseDto.java similarity index 75% rename from src/main/java/com/zenjob/challenge/exceptionhandler/ErrorResponseDto.java rename to src/main/java/com/zenjob/challenge/rest/exceptionhandler/ErrorResponseDto.java index 1fb86f8..352b0f4 100644 --- a/src/main/java/com/zenjob/challenge/exceptionhandler/ErrorResponseDto.java +++ b/src/main/java/com/zenjob/challenge/rest/exceptionhandler/ErrorResponseDto.java @@ -1,4 +1,4 @@ -package com.zenjob.challenge.exceptionhandler; +package com.zenjob.challenge.rest.exceptionhandler; import lombok.*; diff --git a/src/main/java/com/zenjob/challenge/exceptionhandler/GlobalExceptionHandler.java b/src/main/java/com/zenjob/challenge/rest/exceptionhandler/GlobalExceptionHandler.java similarity index 87% rename from src/main/java/com/zenjob/challenge/exceptionhandler/GlobalExceptionHandler.java rename to src/main/java/com/zenjob/challenge/rest/exceptionhandler/GlobalExceptionHandler.java index d547dcb..7b70486 100644 --- a/src/main/java/com/zenjob/challenge/exceptionhandler/GlobalExceptionHandler.java +++ b/src/main/java/com/zenjob/challenge/rest/exceptionhandler/GlobalExceptionHandler.java @@ -1,8 +1,8 @@ -package com.zenjob.challenge.exceptionhandler; +package com.zenjob.challenge.rest.exceptionhandler; -import com.zenjob.challenge.customexception.InvalidActionException; -import com.zenjob.challenge.customexception.InvalidEndDateException; -import com.zenjob.challenge.customexception.InvalidStartDateException; +import com.zenjob.challenge.domain.exceptions.InvalidActionException; +import com.zenjob.challenge.domain.exceptions.InvalidEndDateException; +import com.zenjob.challenge.domain.exceptions.InvalidStartDateException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; diff --git a/src/test/java/com/zenjob/challenge/JobServiceTests.java b/src/test/java/com/zenjob/challenge/application/services/JobServiceTests.java similarity index 92% rename from src/test/java/com/zenjob/challenge/JobServiceTests.java rename to src/test/java/com/zenjob/challenge/application/services/JobServiceTests.java index 6907215..a0ef964 100644 --- a/src/test/java/com/zenjob/challenge/JobServiceTests.java +++ b/src/test/java/com/zenjob/challenge/application/services/JobServiceTests.java @@ -1,11 +1,11 @@ -package com.zenjob.challenge; - -import com.zenjob.challenge.customexception.InvalidActionException; -import com.zenjob.challenge.customexception.InvalidEndDateException; -import com.zenjob.challenge.customexception.InvalidStartDateException; -import com.zenjob.challenge.entity.Job; -import com.zenjob.challenge.entity.Shift; -import com.zenjob.challenge.service.IJobService; +package com.zenjob.challenge.application.services; + +import com.zenjob.challenge.domain.exceptions.InvalidActionException; +import com.zenjob.challenge.domain.exceptions.InvalidEndDateException; +import com.zenjob.challenge.domain.exceptions.InvalidStartDateException; +import com.zenjob.challenge.domain.entity.Job; +import com.zenjob.challenge.domain.entity.Shift; +import com.zenjob.challenge.application.interfaces.JobService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +22,7 @@ public class JobServiceTests { @Autowired - private IJobService jobService; + private JobService jobService; @Test public void job_should_have_at_least_one_shift() {