import { prisma } from "../../config/prisma";

export async function getOrCreateYearFolder(clientId: string, year: number) {
  let folder = await prisma.documentFolder.findFirst({
    where: { clientId, year, parentId: null },
  });
  if (!folder) {
    folder = await prisma.documentFolder.create({
      data: { clientId, year, name: String(year) },
    });
  }
  return folder;
}

export function createDocuments(
  docs: {
    clientId: string;
    folderId: string;
    taskId: string;
    fileName: string;
    fileUrl: string;
    fileType?: string;
    fileSizeKb?: number;
    uploadedByUserId: string;
  }[]
) {
  return prisma.document.createMany({ data: docs });
}

export function findDocumentsByTask(taskId: string, clientId: string) {
  return prisma.document.findMany({
    where: { taskId, clientId },
    orderBy: { createdAt: "desc" },
  });
}

export function findDocumentsByTaskAdmin(taskId: string) {
  return prisma.document.findMany({
    where: { taskId },
    include: { serviceDocument: { select: { id: true, name: true } } },
    orderBy: { createdAt: "desc" },
  });
}

export function findDocumentForClient(documentId: string, taskId: string, clientId: string) {
  return prisma.document.findFirst({
    where: { id: documentId, taskId, clientId },
  });
}

export function deleteDocument(documentId: string) {
  return prisma.document.delete({ where: { id: documentId } });
}

export function findTaskForClient(taskId: string, clientId: string) {
  return prisma.task.findFirst({ where: { id: taskId, clientId } });
}