feat: enhance task filtering in EditCheckboxModal

- Updated `filteredTasks` logic to exclude tasks marked as "objectif principal" (isPinned = true) for better task management.
- Added `tagDetails` property to `Task` interface to store detailed tag information, improving task data structure.
- Adjusted `TasksService` to extract and include tag details when retrieving tasks from the database.
This commit is contained in:
Julien Froidefond
2025-09-30 08:30:57 +02:00
parent 6ef52bec85
commit f0d14e29f8
3 changed files with 23 additions and 8 deletions

View File

@@ -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<object>): 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,