Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ public enum FileDomainType {
TASK_DRAFT_PRESENTATION,
TASK_AGREEMENT_FINAL_PROPOSAL,
TASK_AGREEMENT_FINAL_SUBMISSION,
TASK_PERIOD,
TEMP
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import java.time.LocalDate;
import java.util.List;
import java.util.UUID;

public record TaskPeriodUpdateRequest(
@Schema(description = "시작일", example = "2025-03-01")
Expand All @@ -19,6 +20,9 @@ public record TaskPeriodUpdateRequest(
Long managerId,

@Schema(description = "과제 참여자 ID 목록")
List<Long> memberIds
List<Long> memberIds,

@Schema(description = "연차별 첨부파일 ID 목록")
List<UUID> fileIds
) {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.bmilab.backend.domain.task.dto.response;

import com.bmilab.backend.domain.file.dto.response.FileSummary;
import com.bmilab.backend.domain.task.entity.TaskPeriod;
import io.swagger.v3.oas.annotations.media.Schema;

Expand Down Expand Up @@ -27,7 +28,10 @@ public record TaskPeriodResponse(
String managerName,

@Schema(description = "과제 참여자 목록")
List<TaskMemberSummary> members
List<TaskMemberSummary> members,

@Schema(description = "연차별 첨부파일 목록")
List<FileSummary> files
) {
public static TaskPeriodResponse from(TaskPeriod period) {
List<TaskMemberSummary> members = period.getMembers().stream()
Expand All @@ -41,7 +45,25 @@ public static TaskPeriodResponse from(TaskPeriod period) {
period.getEndDate(),
period.getManager() != null ? period.getManager().getId() : null,
period.getManager() != null ? period.getManager().getName() : null,
members
members,
List.of()
);
}

public static TaskPeriodResponse from(TaskPeriod period, List<FileSummary> files) {
List<TaskMemberSummary> members = period.getMembers().stream()
.map(user -> new TaskMemberSummary(user.getId(), user.getName(), user.getEmail()))
.collect(Collectors.toList());

return new TaskPeriodResponse(
period.getId(),
period.getYearNumber(),
period.getStartDate(),
period.getEndDate(),
period.getManager() != null ? period.getManager().getId() : null,
period.getManager() != null ? period.getManager().getName() : null,
members,
files
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,12 @@ public TaskPeriodResponse getTaskPeriod(Long userId, Long taskId, Long periodId)
TaskPeriod period = taskPeriodRepository.findById(periodId)
.orElseThrow(() -> new ApiException(TaskErrorCode.TASK_NOT_FOUND));

return TaskPeriodResponse.from(period);
List<FileSummary> files = fileService.findAllByDomainTypeAndEntityId(FileDomainType.TASK_PERIOD, periodId)
.stream()
.map(FileSummary::from)
.collect(Collectors.toList());

return TaskPeriodResponse.from(period, files);
}

@Transactional
Expand All @@ -565,6 +570,10 @@ public void updateTaskPeriod(Long userId, Long taskId, Long periodId, TaskPeriod
period.update(manager, members, request.startDate(), request.endDate());

taskPeriodRepository.save(period);

if (request.fileIds() != null) {
fileService.syncFiles(request.fileIds(), FileDomainType.TASK_PERIOD, periodId);
}
}

@Transactional
Expand Down
Loading