'use client';
import { TaskSelect } from '@/database/schema';
import { InferQueryModel } from '@/helpers/types';
import { Task } from '@/server/task/domain/models';
import React, { useMemo } from 'react';
interface KanbanTask {
status: string;
items: Task[];
}
const useKanvanTask = (tasks: any) => {
const taskList = useMemo(() => {
if (!tasks) return [];
return tasks
.map((project:any) => project.task || []) // Asegúrate de que 'task' siempre sea un array
.flat()
.reduce((acc: KanbanTask[], current:TaskSelect) => {
if (!current) return acc; // Verifica que current no sea undefined
// Buscar si ya existe un objeto para este estado
let statusObj = acc.find((item) => item.status === current.status);
if (!statusObj) {
// Si no existe, creamos uno nuevo
statusObj = { status: current.status, items: [] };
acc.push(statusObj);
}
// Agregar la tarea actual al grupo de items
statusObj.items.push(current as any);
return acc;
}, []);
}, [tasks]);
return {
kanvanTasks: taskList,
}
};
export default useKanvanTask;