diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleController.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleController.java index cda59f4d..72c6f9cc 100644 --- a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleController.java +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleController.java @@ -1,9 +1,12 @@ package com.dreamteam.alter.adapter.inbound.manager.schedule.controller; +import java.util.List; + import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -12,14 +15,17 @@ import org.springframework.web.bind.annotation.RestController; import com.dreamteam.alter.adapter.inbound.common.dto.CommonApiResponse; +import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.FixedWorkerScheduleResponseDto; import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.UpdateWorkerScheduleRequestDto; import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.CreateWorkerScheduleRequestDto; import com.dreamteam.alter.application.aop.ManagerActionContext; import com.dreamteam.alter.domain.user.context.ManagerActor; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerCreateFixedWorkerScheduleUseCase; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerDeleteFixedWorkerScheduleUseCase; +import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetFixedWorkerScheduleListUseCase; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerUpdateFixedWorkerScheduleUseCase; +import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -30,10 +36,18 @@ @RequestMapping("/manager/workspaces/{workspaceId}/fixed-worker-schedules") public class ManagerFixedWorkerScheduleController implements ManagerFixedWorkerScheduleControllerSpec { + @Resource(name = "managerCreateFixedWorkerSchedule") private final ManagerCreateFixedWorkerScheduleUseCase managerCreateFixedWorkerSchedule; - private final ManagerUpdateFixedWorkerScheduleUseCase managerUpdateWorkerSchedule; + + @Resource(name = "managerUpdateFixedWorkerSchedule") + private final ManagerUpdateFixedWorkerScheduleUseCase managerUpdateFixedWorkerSchedule; + + @Resource(name = "managerDeleteFixedWorkerSchedule") private final ManagerDeleteFixedWorkerScheduleUseCase managerDeleteFixedWorkerSchedule; + @Resource(name = "managerGetFixedWorkerScheduleList") + private final ManagerGetFixedWorkerScheduleListUseCase managerGetFixedWorkerScheduleList; + @Override @PostMapping public ResponseEntity> createWorkerSchedule( @@ -53,7 +67,7 @@ public ResponseEntity> updateWorkerSchedule( @RequestBody @Valid UpdateWorkerScheduleRequestDto request ) { ManagerActor actor = ManagerActionContext.getInstance().getActor(); - managerUpdateWorkerSchedule.execute(actor, workspaceId, workerScheduleId, request); + managerUpdateFixedWorkerSchedule.execute(actor, workspaceId, workerScheduleId, request); return ResponseEntity.ok(CommonApiResponse.empty()); } @@ -67,4 +81,13 @@ public ResponseEntity> deleteWorkerSchedule( managerDeleteFixedWorkerSchedule.execute(actor, workspaceId, workerScheduleId); return ResponseEntity.ok(CommonApiResponse.empty()); } + + @Override + @GetMapping + public ResponseEntity>> getWorkerScheduleList( + @PathVariable Long workspaceId + ) { + ManagerActor actor = ManagerActionContext.getInstance().getActor(); + return ResponseEntity.ok(CommonApiResponse.of(managerGetFixedWorkerScheduleList.execute(actor, workspaceId))); + } } diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleControllerSpec.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleControllerSpec.java index d9dcf424..69e1700f 100644 --- a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleControllerSpec.java +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/controller/ManagerFixedWorkerScheduleControllerSpec.java @@ -1,11 +1,14 @@ package com.dreamteam.alter.adapter.inbound.manager.schedule.controller; +import java.util.List; + import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import com.dreamteam.alter.adapter.inbound.common.dto.CommonApiResponse; import com.dreamteam.alter.adapter.inbound.common.dto.ErrorResponse; +import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.FixedWorkerScheduleResponseDto; import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.UpdateWorkerScheduleRequestDto; import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.CreateWorkerScheduleRequestDto; @@ -130,4 +133,22 @@ ResponseEntity> deleteWorkerSchedule( @PathVariable Long workspaceId, @PathVariable Long workerScheduleId ); + + @Operation(summary = "매니저 - 근무자 고정 스케줄 목록 조회", description = "업장의 활성화된 모든 고정 스케줄 목록을 반환합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "고정 스케줄 목록 조회 성공"), + @ApiResponse(responseCode = "404", description = "404 Error 실패 케이스", + content = @Content( + mediaType = "application/json", + schema = @Schema(implementation = ErrorResponse.class), + examples = { + @ExampleObject( + name = "존재하지 않는 업장입니다.", + value = "{\"code\" : \"B019\"}" + ), + })), + }) + ResponseEntity>> getWorkerScheduleList( + @PathVariable Long workspaceId + ); } diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/dto/FixedWorkerScheduleResponseDto.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/dto/FixedWorkerScheduleResponseDto.java new file mode 100644 index 00000000..fd329875 --- /dev/null +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/schedule/dto/FixedWorkerScheduleResponseDto.java @@ -0,0 +1,52 @@ +package com.dreamteam.alter.adapter.inbound.manager.schedule.dto; + +import java.time.DayOfWeek; +import java.time.LocalTime; + +import com.dreamteam.alter.domain.workspace.entity.WorkspaceWorkerSchedule; +import com.dreamteam.alter.domain.workspace.type.WorkspaceWorkerScheduleStatus; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Schema(description = "고정 근무 스케줄 응답") +public class FixedWorkerScheduleResponseDto { + @Schema(description = "고정 스케줄 ID", example = "1") + private Long id; + + @Schema(description = "업장 근무자 ID", example = "10") + private Long workspaceWorkerId; + + @Schema(description = "시작 요일", example = "MONDAY") + private DayOfWeek startDayOfWeek; + + @Schema(description = "시작 시간", example = "09:00:00") + private LocalTime startTime; + + @Schema(description = "종료 요일", example = "MONDAY") + private DayOfWeek endDayOfWeek; + + @Schema(description = "종료 시간", example = "18:00:00") + private LocalTime endTime; + + @Schema(description = "스케줄 상태", example = "ACTIVATED") + private WorkspaceWorkerScheduleStatus status; + + public static FixedWorkerScheduleResponseDto of(WorkspaceWorkerSchedule s) { + return new FixedWorkerScheduleResponseDto( + s.getId(), + s.getWorkspaceWorker().getId(), + s.getStartDayOfWeek(), + s.getStartTime(), + s.getEndDayOfWeek(), + s.getEndTime(), + s.getStatus() + ); + } +} diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceController.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceController.java index bf3ddd62..56234cfa 100644 --- a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceController.java +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceController.java @@ -1,26 +1,37 @@ package com.dreamteam.alter.adapter.inbound.manager.workspace.controller; +import java.util.List; + +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.dreamteam.alter.adapter.inbound.common.dto.CommonApiResponse; import com.dreamteam.alter.adapter.inbound.common.dto.CursorPageRequestDto; import com.dreamteam.alter.adapter.inbound.common.dto.CursorPaginatedApiResponse; -import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.*; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.ManagerWorkspaceListResponseDto; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.ManagerWorkspaceManagerListResponseDto; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.ManagerWorkspaceResponseDto; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.ManagerWorkspaceWorkerListFilterDto; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.ManagerWorkspaceWorkerListResponseDto; +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.UpdateFixedScheduleDateRequestDto; import com.dreamteam.alter.application.aop.ManagerActionContext; import com.dreamteam.alter.domain.user.context.ManagerActor; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetWorkspaceListUseCase; +import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetWorkspaceManagerListUseCase; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetWorkspaceUseCase; import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetWorkspaceWorkerListUseCase; -import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetWorkspaceManagerListUseCase; +import com.dreamteam.alter.domain.workspace.port.inbound.ManagerUpdateFixedScheduleDateUseCase; + import jakarta.annotation.Resource; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; @RestController @RequestMapping("/manager/workspaces") @@ -41,6 +52,9 @@ public class ManagerWorkspaceController implements ManagerWorkspaceControllerSpe @Resource(name = "managerGetWorkspaceManagerList") private final ManagerGetWorkspaceManagerListUseCase managerGetWorkspaceManagerList; + @Resource(name = "managerUpdateFixedScheduleDate") + private final ManagerUpdateFixedScheduleDateUseCase managerUpdateFixedScheduleDate; + @Override @GetMapping public ResponseEntity>> getWorkspaceList() { @@ -82,4 +96,14 @@ public ResponseEntity> updateFixedScheduleDate( + @PathVariable Long workspaceId, + @RequestBody @Valid UpdateFixedScheduleDateRequestDto request + ) { + ManagerActor actor = ManagerActionContext.getInstance().getActor(); + managerUpdateFixedScheduleDate.execute(actor, workspaceId, request); + return ResponseEntity.ok(CommonApiResponse.empty()); + } } diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceControllerSpec.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceControllerSpec.java index 09cf2909..8aa504c4 100644 --- a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceControllerSpec.java +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/controller/ManagerWorkspaceControllerSpec.java @@ -4,12 +4,19 @@ import com.dreamteam.alter.adapter.inbound.common.dto.CursorPageRequestDto; import com.dreamteam.alter.adapter.inbound.common.dto.CursorPaginatedApiResponse; import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.*; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; + +import com.dreamteam.alter.adapter.inbound.common.dto.ErrorResponse; import java.util.List; @@ -50,6 +57,35 @@ ResponseEntity> updateFixedScheduleDate( + @PathVariable Long workspaceId, + @RequestBody @Valid UpdateFixedScheduleDateRequestDto request + ); + // 업장 근무자 상세 정보 조회 // 업장 근무자 상태 변경 diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/ManagerWorkspaceResponseDto.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/ManagerWorkspaceResponseDto.java index e3d8ccaa..615b6251 100644 --- a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/ManagerWorkspaceResponseDto.java +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/ManagerWorkspaceResponseDto.java @@ -59,6 +59,9 @@ public class ManagerWorkspaceResponseDto { @Schema(description = "업장 경도", example = "126.9780") private BigDecimal longitude; + @Schema(description = "다음달 고정근무 생성일", example = "20") + private int nextMonthShiftGenDay; + @NotNull @Schema(description = "업장 등록 일시", example = "2023-10-01T12:00:00") private LocalDateTime createdAt; @@ -78,6 +81,7 @@ public static ManagerWorkspaceResponseDto of(ManagerWorkspaceResponse entity) { .fullAddress(entity.getFullAddress()) .latitude(entity.getLatitude()) .longitude(entity.getLongitude()) + .nextMonthShiftGenDay(entity.getNextMonthShiftGenDay()) .createdAt(entity.getCreatedAt()) .reputationSummary(SelfReputationSummaryDto.from(entity.getReputationSummary())) .build(); diff --git a/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/UpdateFixedScheduleDateRequestDto.java b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/UpdateFixedScheduleDateRequestDto.java new file mode 100644 index 00000000..f77745b7 --- /dev/null +++ b/src/main/java/com/dreamteam/alter/adapter/inbound/manager/workspace/dto/UpdateFixedScheduleDateRequestDto.java @@ -0,0 +1,22 @@ +package com.dreamteam.alter.adapter.inbound.manager.workspace.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Schema(description = "매니저 - 고정근무 생성일 변경 DTO") +public class UpdateFixedScheduleDateRequestDto { + + @NotNull(message = "시작 요일은 필수입니다") + @Min(value = 1, message = "1 보다 커야합니다.") + @Max(value = 31, message = "31 보다 작아야합니다") + @Schema(description = "변경일", example = "15") + Integer nextMonthShiftGenDay; +} diff --git a/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/WorkspaceQueryRepositoryImpl.java b/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/WorkspaceQueryRepositoryImpl.java index 431d8aa8..0811b40d 100644 --- a/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/WorkspaceQueryRepositoryImpl.java +++ b/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/WorkspaceQueryRepositoryImpl.java @@ -97,6 +97,7 @@ public ManagerWorkspaceResponse getByManagerUserAndId(ManagerUser managerUser, L qWorkspace.fullAddress, qWorkspace.latitude, qWorkspace.longitude, + qWorkspace.nextMonthShiftGenDay, qWorkspace.createdAt, qReputationSummary ) diff --git a/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/readonly/ManagerWorkspaceResponse.java b/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/readonly/ManagerWorkspaceResponse.java index 0502f64a..66b66119 100644 --- a/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/readonly/ManagerWorkspaceResponse.java +++ b/src/main/java/com/dreamteam/alter/adapter/outbound/workspace/persistence/readonly/ManagerWorkspaceResponse.java @@ -37,6 +37,8 @@ public class ManagerWorkspaceResponse { private BigDecimal longitude; + private int nextMonthShiftGenDay; + private LocalDateTime createdAt; private ReputationSummary reputationSummary; diff --git a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerCreateFixedWorkerSchedule.java b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerCreateFixedWorkerSchedule.java index 4ab9e3b7..9c0e6c51 100644 --- a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerCreateFixedWorkerSchedule.java +++ b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerCreateFixedWorkerSchedule.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; -@Service +@Service("managerCreateFixedWorkerSchedule") @RequiredArgsConstructor @Transactional public class ManagerCreateFixedWorkerSchedule implements ManagerCreateFixedWorkerScheduleUseCase { diff --git a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerGetFixedWorkerScheduleList.java b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerGetFixedWorkerScheduleList.java new file mode 100644 index 00000000..01175c47 --- /dev/null +++ b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerGetFixedWorkerScheduleList.java @@ -0,0 +1,35 @@ +package com.dreamteam.alter.application.workspace.usecase; + +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.FixedWorkerScheduleResponseDto; +import com.dreamteam.alter.common.exception.CustomException; +import com.dreamteam.alter.common.exception.ErrorCode; +import com.dreamteam.alter.domain.user.context.ManagerActor; +import com.dreamteam.alter.domain.workspace.port.inbound.ManagerGetFixedWorkerScheduleListUseCase; +import com.dreamteam.alter.domain.workspace.port.outbound.WorkspaceQueryRepository; +import com.dreamteam.alter.domain.workspace.port.outbound.WorkspaceWorkerScheduleQueryRepository; + +import lombok.RequiredArgsConstructor; + +@Service("managerGetFixedWorkerScheduleList") +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class ManagerGetFixedWorkerScheduleList implements ManagerGetFixedWorkerScheduleListUseCase { + + private final WorkspaceQueryRepository workspaceQueryRepository; + private final WorkspaceWorkerScheduleQueryRepository workspaceWorkerScheduleQueryRepository; + + @Override + public List execute(ManagerActor actor, Long workspaceId) { + if (!workspaceQueryRepository.existsByIdAndManagerUser(workspaceId, actor.getManagerUser())) + throw new CustomException(ErrorCode.WORKSPACE_NOT_FOUND); + + return workspaceWorkerScheduleQueryRepository.findAllActivatedWithWorkspaceWorkerByWorkspaceIds(List.of(workspaceId)).stream() + .map(FixedWorkerScheduleResponseDto::of) + .toList(); + } +} diff --git a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedScheduleDate.java b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedScheduleDate.java new file mode 100644 index 00000000..6b385efc --- /dev/null +++ b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedScheduleDate.java @@ -0,0 +1,34 @@ +package com.dreamteam.alter.application.workspace.usecase; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.UpdateFixedScheduleDateRequestDto; +import com.dreamteam.alter.common.exception.CustomException; +import com.dreamteam.alter.common.exception.ErrorCode; +import com.dreamteam.alter.domain.user.context.ManagerActor; +import com.dreamteam.alter.domain.workspace.entity.Workspace; +import com.dreamteam.alter.domain.workspace.port.inbound.ManagerUpdateFixedScheduleDateUseCase; +import com.dreamteam.alter.domain.workspace.port.outbound.WorkspaceQueryRepository; + +import lombok.RequiredArgsConstructor; + +@Service("managerUpdateFixedScheduleDate") +@RequiredArgsConstructor +@Transactional +public class ManagerUpdateFixedScheduleDate implements ManagerUpdateFixedScheduleDateUseCase { + + private final WorkspaceQueryRepository workspaceQueryRepository; + + @Override + public void execute(ManagerActor actor, Long workspaceId, UpdateFixedScheduleDateRequestDto request) { + if (!workspaceQueryRepository.existsByIdAndManagerUser(workspaceId, actor.getManagerUser())) { + throw new CustomException(ErrorCode.WORKSPACE_NOT_FOUND); + } + + Workspace workspace = workspaceQueryRepository.findById(workspaceId) + .orElseThrow(() -> new CustomException(ErrorCode.WORKSPACE_NOT_FOUND)); + + workspace.updateNextMonthShiftGenDay(request.getNextMonthShiftGenDay()); + } +} diff --git a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedWorkerSchedule.java b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedWorkerSchedule.java index f9fb8b63..96e6ffca 100644 --- a/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedWorkerSchedule.java +++ b/src/main/java/com/dreamteam/alter/application/workspace/usecase/ManagerUpdateFixedWorkerSchedule.java @@ -16,7 +16,7 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -@Service +@Service("managerUpdateFixedWorkerSchedule") @RequiredArgsConstructor @Transactional public class ManagerUpdateFixedWorkerSchedule implements ManagerUpdateFixedWorkerScheduleUseCase { diff --git a/src/main/java/com/dreamteam/alter/domain/workspace/entity/Workspace.java b/src/main/java/com/dreamteam/alter/domain/workspace/entity/Workspace.java index 9a9a289e..cf05264c 100644 --- a/src/main/java/com/dreamteam/alter/domain/workspace/entity/Workspace.java +++ b/src/main/java/com/dreamteam/alter/domain/workspace/entity/Workspace.java @@ -1,5 +1,7 @@ package com.dreamteam.alter.domain.workspace.entity; +import com.dreamteam.alter.common.exception.CustomException; +import com.dreamteam.alter.common.exception.ErrorCode; import com.dreamteam.alter.domain.user.entity.ManagerUser; import com.dreamteam.alter.domain.workspace.type.WorkspaceStatus; import jakarta.persistence.*; @@ -110,4 +112,12 @@ public static Workspace create( .build(); } + public void updateNextMonthShiftGenDay(int day) { + if (day < 1 || day > 31) { + throw new CustomException(ErrorCode.ILLEGAL_ARGUMENT, "1~31 범위를 벗어난 값입니다."); + } + + this.nextMonthShiftGenDay = day; + } + } diff --git a/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerGetFixedWorkerScheduleListUseCase.java b/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerGetFixedWorkerScheduleListUseCase.java new file mode 100644 index 00000000..403aed3f --- /dev/null +++ b/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerGetFixedWorkerScheduleListUseCase.java @@ -0,0 +1,10 @@ +package com.dreamteam.alter.domain.workspace.port.inbound; + +import java.util.List; + +import com.dreamteam.alter.adapter.inbound.manager.schedule.dto.FixedWorkerScheduleResponseDto; +import com.dreamteam.alter.domain.user.context.ManagerActor; + +public interface ManagerGetFixedWorkerScheduleListUseCase { + List execute(ManagerActor actor, Long workspaceId); +} diff --git a/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerUpdateFixedScheduleDateUseCase.java b/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerUpdateFixedScheduleDateUseCase.java new file mode 100644 index 00000000..74da5541 --- /dev/null +++ b/src/main/java/com/dreamteam/alter/domain/workspace/port/inbound/ManagerUpdateFixedScheduleDateUseCase.java @@ -0,0 +1,8 @@ +package com.dreamteam.alter.domain.workspace.port.inbound; + +import com.dreamteam.alter.adapter.inbound.manager.workspace.dto.UpdateFixedScheduleDateRequestDto; +import com.dreamteam.alter.domain.user.context.ManagerActor; + +public interface ManagerUpdateFixedScheduleDateUseCase { + void execute(ManagerActor actor, Long workspaceId, UpdateFixedScheduleDateRequestDto request); +}