listagem apenas das minhas tasks
This commit is contained in:
parent
b7803fef05
commit
6800688284
8 changed files with 51 additions and 4 deletions
|
|
@ -7,6 +7,7 @@ import net.beetechgroup.beetask.usecase.repository.TaskRepository;
|
|||
import net.beetechgroup.beetask.usecase.repository.UserRepository;
|
||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.listall.ListAllTasksUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.listall.ListMyTasksUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.start.StartTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
||||
|
|
@ -36,6 +37,11 @@ public class TaskUseCaseConfig {
|
|||
return new ListAllTasksUseCase(taskRepository);
|
||||
}
|
||||
|
||||
@Produces
|
||||
public ListMyTasksUseCase listMyTasksUseCase(TaskRepository taskRepository) {
|
||||
return new ListMyTasksUseCase(taskRepository);
|
||||
}
|
||||
|
||||
@Produces
|
||||
public UpdateTaskStatusUseCase updateTaskStatusUseCase(TaskRepository taskRepository) {
|
||||
return new UpdateTaskStatusUseCase(taskRepository);
|
||||
|
|
|
|||
|
|
@ -53,4 +53,9 @@ public class TaskRepositoryImpl implements TaskRepository, PanacheRepository<Tas
|
|||
"and t.finishedAt >= ?2 and t.finishedAt <= ?3",
|
||||
email, start, end).list().stream().map(TaskEntityMapper::toDomain).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Task> findTasksByUser(String email) {
|
||||
return find("user.email = ?1", email).list().stream().map(TaskEntityMapper::toDomain).toList();
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ import net.beetechgroup.beetask.usecase.task.create.CreateTaskInput;
|
|||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskOutput;
|
||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.listall.ListAllTasksUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.listall.ListMyTasksUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.start.StartTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
||||
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
||||
|
|
@ -48,6 +49,9 @@ public class TaskController {
|
|||
@Inject
|
||||
ListAllTasksUseCase listAllTasksUseCase;
|
||||
|
||||
@Inject
|
||||
ListMyTasksUseCase listMyTasksUseCase;
|
||||
|
||||
@Inject
|
||||
UpdateTaskStatusUseCase updateTaskStatusUseCase;
|
||||
|
||||
|
|
@ -123,4 +127,13 @@ public class TaskController {
|
|||
return listAllTasksUseCase.execute().stream().map(TaskControllerMapper::toCreateTaskResponse).toList();
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/mine")
|
||||
@Operation(summary = "List my tasks", description = "Lists all tasks belonging to the authenticated user")
|
||||
@APIResponse(responseCode = "200", description = "Tasks listed successfully")
|
||||
public List<CreateTaskResponse> listMyTasks() {
|
||||
String email = securityIdentity.getPrincipal().getName();
|
||||
return listMyTasksUseCase.execute(email).stream().map(TaskControllerMapper::toCreateTaskResponse).toList();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,4 +11,5 @@ public interface TaskRepository {
|
|||
List<Task> findAllTasks();
|
||||
List<Task> findTasksWorkedByUserInPeriod(String email, LocalDateTime start, LocalDateTime end);
|
||||
List<Task> findTasksFinishedByUserInPeriod(String email, LocalDateTime start, LocalDateTime end);
|
||||
List<Task> findTasksByUser(String email);
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package net.beetechgroup.beetask.usecase.task.listall;
|
||||
|
||||
import net.beetechgroup.beetask.usecase.repository.TaskRepository;
|
||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskMapper;
|
||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskOutput;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ListMyTasksUseCase {
|
||||
|
||||
private final TaskRepository taskRepository;
|
||||
|
||||
public ListMyTasksUseCase(TaskRepository taskRepository) {
|
||||
this.taskRepository = taskRepository;
|
||||
}
|
||||
|
||||
public List<CreateTaskOutput> execute(String email) {
|
||||
return taskRepository.findTasksByUser(email).stream().map(CreateTaskMapper::toCreateTaskOutput).toList();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd'
|
||||
import type { DropResult } from '@hello-pangea/dnd'
|
||||
import { motion } from 'framer-motion'
|
||||
import {
|
||||
AlertCircle,
|
||||
CheckCircle2,
|
||||
|
|
@ -55,7 +54,7 @@ export function TaskBoardPage() {
|
|||
const loadTasks = async (silent = false) => {
|
||||
if (!silent) setIsLoading(true)
|
||||
try {
|
||||
const response = await taskService.getTasks()
|
||||
const response = await taskService.getMyTasks()
|
||||
setTasks(response)
|
||||
} catch (error) {
|
||||
console.error('Failed to load tasks', error)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import {
|
|||
CheckCircle2,
|
||||
Clock,
|
||||
Filter,
|
||||
Layers,
|
||||
Plus,
|
||||
RefreshCw,
|
||||
Search,
|
||||
|
|
@ -64,7 +63,7 @@ export function TaskListPage() {
|
|||
setErrorMessage(null)
|
||||
|
||||
try {
|
||||
const response = await taskService.getTasks()
|
||||
const response = await taskService.getMyTasks()
|
||||
setTasks(response)
|
||||
} catch (error) {
|
||||
setErrorMessage(
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ export const taskService = {
|
|||
async getTasks(): Promise<TaskResponse[]> {
|
||||
return apiFetch<TaskResponse[]>('/tasks')
|
||||
},
|
||||
|
||||
async getMyTasks(): Promise<TaskResponse[]> {
|
||||
return apiFetch<TaskResponse[]>('/tasks/mine')
|
||||
},
|
||||
|
||||
async createTask(task: { title: string; description?: string; projectId?: number | null; status?: TaskStatus }): Promise<TaskResponse> {
|
||||
return apiFetch<TaskResponse>('/tasks', {
|
||||
|
|
|
|||
Loading…
Reference in a new issue