import { requireAuth } from '~/server/utils/auth'
import { getPagination, paginatedResponse } from '~/server/utils/pagination'
import { prisma } from '~/server/utils/prisma'
export default defineEventHandler(async (event) => {
  const user = await requireAuth(event)
  const query = getQuery(event) as Record<string, string>
  const { page, perPage, skip, take } = getPagination(query)
  const where: Record<string, unknown> = {}
  if (query.status) where.status = query.status
  if (query.priority) where.priority = query.priority
  if (query.assignedTo) where.assignedTo = parseInt(query.assignedTo)
  // Non-admin sees only assigned tasks
  if (!['admin', 'referent'].includes(user.role) && user.memberId) {
    where.assignedTo = user.memberId
  }
  const [data, total] = await Promise.all([
    prisma.task.findMany({ where, skip, take, orderBy: { createdAt: 'desc' }, include: { creator: { select: { id: true, name: true } }, assignedMember: { select: { id: true, prenom: true, nom: true } } } }),
    prisma.task.count({ where }),
  ])
  return paginatedResponse(data, total, page, perPage)
})
