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.repository.UserRepository;
|
||||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.listall.ListAllTasksUseCase;
|
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.start.StartTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
||||||
|
|
@ -36,6 +37,11 @@ public class TaskUseCaseConfig {
|
||||||
return new ListAllTasksUseCase(taskRepository);
|
return new ListAllTasksUseCase(taskRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Produces
|
||||||
|
public ListMyTasksUseCase listMyTasksUseCase(TaskRepository taskRepository) {
|
||||||
|
return new ListMyTasksUseCase(taskRepository);
|
||||||
|
}
|
||||||
|
|
||||||
@Produces
|
@Produces
|
||||||
public UpdateTaskStatusUseCase updateTaskStatusUseCase(TaskRepository taskRepository) {
|
public UpdateTaskStatusUseCase updateTaskStatusUseCase(TaskRepository taskRepository) {
|
||||||
return new UpdateTaskStatusUseCase(taskRepository);
|
return new UpdateTaskStatusUseCase(taskRepository);
|
||||||
|
|
|
||||||
|
|
@ -53,4 +53,9 @@ public class TaskRepositoryImpl implements TaskRepository, PanacheRepository<Tas
|
||||||
"and t.finishedAt >= ?2 and t.finishedAt <= ?3",
|
"and t.finishedAt >= ?2 and t.finishedAt <= ?3",
|
||||||
email, start, end).list().stream().map(TaskEntityMapper::toDomain).toList();
|
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.CreateTaskOutput;
|
||||||
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
import net.beetechgroup.beetask.usecase.task.create.CreateTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.listall.ListAllTasksUseCase;
|
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.start.StartTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
import net.beetechgroup.beetask.usecase.task.stop.StopTaskUseCase;
|
||||||
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
import net.beetechgroup.beetask.usecase.task.update.UpdateTaskStatusUseCase;
|
||||||
|
|
@ -48,6 +49,9 @@ public class TaskController {
|
||||||
@Inject
|
@Inject
|
||||||
ListAllTasksUseCase listAllTasksUseCase;
|
ListAllTasksUseCase listAllTasksUseCase;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ListMyTasksUseCase listMyTasksUseCase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UpdateTaskStatusUseCase updateTaskStatusUseCase;
|
UpdateTaskStatusUseCase updateTaskStatusUseCase;
|
||||||
|
|
||||||
|
|
@ -123,4 +127,13 @@ public class TaskController {
|
||||||
return listAllTasksUseCase.execute().stream().map(TaskControllerMapper::toCreateTaskResponse).toList();
|
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> findAllTasks();
|
||||||
List<Task> findTasksWorkedByUserInPeriod(String email, LocalDateTime start, LocalDateTime end);
|
List<Task> findTasksWorkedByUserInPeriod(String email, LocalDateTime start, LocalDateTime end);
|
||||||
List<Task> findTasksFinishedByUserInPeriod(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 { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd'
|
||||||
import type { DropResult } from '@hello-pangea/dnd'
|
import type { DropResult } from '@hello-pangea/dnd'
|
||||||
import { motion } from 'framer-motion'
|
|
||||||
import {
|
import {
|
||||||
AlertCircle,
|
AlertCircle,
|
||||||
CheckCircle2,
|
CheckCircle2,
|
||||||
|
|
@ -55,7 +54,7 @@ export function TaskBoardPage() {
|
||||||
const loadTasks = async (silent = false) => {
|
const loadTasks = async (silent = false) => {
|
||||||
if (!silent) setIsLoading(true)
|
if (!silent) setIsLoading(true)
|
||||||
try {
|
try {
|
||||||
const response = await taskService.getTasks()
|
const response = await taskService.getMyTasks()
|
||||||
setTasks(response)
|
setTasks(response)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to load tasks', error)
|
console.error('Failed to load tasks', error)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import {
|
||||||
CheckCircle2,
|
CheckCircle2,
|
||||||
Clock,
|
Clock,
|
||||||
Filter,
|
Filter,
|
||||||
Layers,
|
|
||||||
Plus,
|
Plus,
|
||||||
RefreshCw,
|
RefreshCw,
|
||||||
Search,
|
Search,
|
||||||
|
|
@ -64,7 +63,7 @@ export function TaskListPage() {
|
||||||
setErrorMessage(null)
|
setErrorMessage(null)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await taskService.getTasks()
|
const response = await taskService.getMyTasks()
|
||||||
setTasks(response)
|
setTasks(response)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setErrorMessage(
|
setErrorMessage(
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ export const taskService = {
|
||||||
async getTasks(): Promise<TaskResponse[]> {
|
async getTasks(): Promise<TaskResponse[]> {
|
||||||
return apiFetch<TaskResponse[]>('/tasks')
|
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> {
|
async createTask(task: { title: string; description?: string; projectId?: number | null; status?: TaskStatus }): Promise<TaskResponse> {
|
||||||
return apiFetch<TaskResponse>('/tasks', {
|
return apiFetch<TaskResponse>('/tasks', {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue