From 345a41cf1376ca5344ff76b83995e2687c8d21a8 Mon Sep 17 00:00:00 2001 From: Gabriel Santana de Menezes Date: Thu, 14 May 2026 21:33:44 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20salvar=20hist=C3=B3rico=20ao=20criar=20t?= =?UTF-8?q?ask?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Propagava o campo history do CreateTaskRequest até o use case e persistência. O mapeamento em TaskControllerMapper ignorava o history; CreateTaskInput não tinha o campo; e CreateTaskUseCase não aplicava os itens à entidade antes de salvar. Closes #22 Co-Authored-By: Claude Sonnet 4.6 --- .../controllers/task/CreateTaskRequest.java | 2 +- .../controllers/task/TaskControllerMapper.java | 5 ++++- .../beetask/usecase/task/create/CreateTaskInput.java | 5 ++++- .../usecase/task/create/CreateTaskUseCase.java | 12 ++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/CreateTaskRequest.java b/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/CreateTaskRequest.java index 5ad2956..79b3ea4 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/CreateTaskRequest.java +++ b/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/CreateTaskRequest.java @@ -9,5 +9,5 @@ public record CreateTaskRequest( String description, TaskStatus status, Long projectId, - List history) { + List history) { } diff --git a/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/TaskControllerMapper.java b/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/TaskControllerMapper.java index ad41b9f..ded52f9 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/TaskControllerMapper.java +++ b/backend/src/main/java/net/beetechgroup/beetask/interfaceadapters/controllers/task/TaskControllerMapper.java @@ -16,7 +16,10 @@ public class TaskControllerMapper { request.description(), request.status(), request.projectId(), - userEmail + userEmail, + Objects.nonNull(request.history()) ? request.history().stream() + .map(h -> new TaskHistoryItemInput(h.id(), h.startAt(), h.endAt())) + .toList() : null ); } diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskInput.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskInput.java index 9bcaa28..8d66c27 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskInput.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskInput.java @@ -1,11 +1,14 @@ package net.beetechgroup.beetask.usecase.task.create; +import java.util.List; import net.beetechgroup.beetask.entities.task.TaskStatus; +import net.beetechgroup.beetask.usecase.task.update.TaskHistoryItemInput; public record CreateTaskInput( String title, String description, TaskStatus status, Long projectId, - String userEmail) { + String userEmail, + List history) { } diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskUseCase.java index 097d2fd..a3c136d 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/task/create/CreateTaskUseCase.java @@ -1,8 +1,10 @@ package net.beetechgroup.beetask.usecase.task.create; +import java.util.List; import java.util.Objects; import net.beetechgroup.beetask.entities.Project; import net.beetechgroup.beetask.entities.task.Task; +import net.beetechgroup.beetask.entities.task.TaskHistoryItem; import net.beetechgroup.beetask.usecase.repository.ProjectRepository; import net.beetechgroup.beetask.usecase.repository.TaskRepository; import net.beetechgroup.beetask.usecase.repository.UserRepository; @@ -42,6 +44,16 @@ public class CreateTaskUseCase { return new IllegalArgumentException("Usuário não encontrado: " + input.userEmail()); })); + if (Objects.nonNull(input.history())) { + List historyItems = input.history().stream().map(h -> { + TaskHistoryItem item = new TaskHistoryItem(); + item.setStartAt(h.startAt()); + item.setEndAt(h.endAt()); + return item; + }).toList(); + task.getHistory().addAll(historyItems); + } + CreateTaskOutput output = CreateTaskMapper.toCreateTaskOutput(taskRepository.saveTask(task)); LOGGER.infof("Task %d created for user %s", output.id(), input.userEmail()); return output;