diff --git a/src/components/daily/EditCheckboxModal.tsx b/src/components/daily/EditCheckboxModal.tsx index fe35cc0..8f24fe2 100644 --- a/src/components/daily/EditCheckboxModal.tsx +++ b/src/components/daily/EditCheckboxModal.tsx @@ -58,11 +58,17 @@ export function EditCheckboxModal({ } }, [taskId, allTasks]); - // Filtrer les tâches selon la recherche - const filteredTasks = allTasks.filter(task => - task.title.toLowerCase().includes(taskSearch.toLowerCase()) || - (task.description && task.description.toLowerCase().includes(taskSearch.toLowerCase())) - ); + // Filtrer les tâches selon la recherche et exclure les tâches avec des tags "objectif principal" + const filteredTasks = allTasks.filter(task => { + // Exclure les tâches avec des tags marqués comme "objectif principal" (isPinned = true) + if (task.tagDetails && task.tagDetails.some(tag => tag.isPinned)) { + return false; + } + + // Filtrer selon la recherche + return task.title.toLowerCase().includes(taskSearch.toLowerCase()) || + (task.description && task.description.toLowerCase().includes(taskSearch.toLowerCase())); + }); const handleTaskSelect = (task: Task) => { setTaskId(task.id); diff --git a/src/lib/types.ts b/src/lib/types.ts index 5effd99..7881ad0 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -42,6 +42,7 @@ export interface Task { source: TaskSource; sourceId?: string; tags: string[]; + tagDetails?: Tag[]; // Tags avec informations complètes (isPinned, etc.) dueDate?: Date; completedAt?: Date; createdAt: Date; diff --git a/src/services/task-management/tasks.ts b/src/services/task-management/tasks.ts index 78be152..3def691 100644 --- a/src/services/task-management/tasks.ts +++ b/src/services/task-management/tasks.ts @@ -1,5 +1,5 @@ import { prisma } from '@/services/core/database'; -import { Task, TaskStatus, TaskPriority, TaskSource, BusinessError, DailyCheckbox, DailyCheckboxType } from '@/lib/types'; +import { Task, TaskStatus, TaskPriority, TaskSource, BusinessError, DailyCheckbox, DailyCheckboxType, Tag } from '@/lib/types'; import { Prisma } from '@prisma/client'; import { getToday } from '@/lib/date-utils'; @@ -358,12 +358,19 @@ export class TasksService { } } }> | Prisma.TaskGetPayload): Task { - // Extraire les tags depuis les relations TaskTag ou fallback sur tagsJson + // Extraire les tags depuis les relations TaskTag let tags: string[] = []; + let tagDetails: Tag[] = []; if ('taskTags' in prismaTask && prismaTask.taskTags && Array.isArray(prismaTask.taskTags)) { - // Utiliser les relations Prisma + // Utiliser les relations Prisma pour récupérer les noms et détails des tags tags = prismaTask.taskTags.map((tt) => tt.tag.name); + tagDetails = prismaTask.taskTags.map((tt) => ({ + id: tt.tag.id, + name: tt.tag.name, + color: tt.tag.color, + isPinned: tt.tag.isPinned + })); } // Extraire le count des todos @@ -381,6 +388,7 @@ export class TasksService { source: prismaTask.source as TaskSource, sourceId: prismaTask.sourceId ?? undefined, tags: tags, + tagDetails: tagDetails, dueDate: prismaTask.dueDate ?? undefined, completedAt: prismaTask.completedAt ?? undefined, createdAt: prismaTask.createdAt,