import { NextApiRequest, NextApiResponse } from "next";
import { prisma } from "@/lib/prisma"; // ajuste conforme seu client

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  try {
    if (req.method === "POST") {
      const { id_funcionario, tipo, data_hora, latitude, longitude } = req.body;

      if (!id_funcionario || !tipo || !data_hora) {
        return res.status(400).json({ error: "Campos obrigatórios ausentes." });
      }

      const novoPonto = await prisma.pontoDigital.create({
        data: {
          id_funcionario,
          tipo, // 'entrada' | 'saida' | 'intervalo' | etc.
          data_hora: new Date(data_hora),
          latitude,
          longitude,
        },
      });

      return res.status(201).json(novoPonto);
    }

    if (req.method === "GET") {
      const { id_funcionario, inicio, fim } = req.query;

      const registros = await prisma.pontoDigital.findMany({
        where: {
          ...(id_funcionario && { id_funcionario: String(id_funcionario) }),
          ...(inicio && fim && {
            data_hora: {
              gte: new Date(String(inicio)),
              lte: new Date(String(fim)),
            },
          }),
        },
        orderBy: { data_hora: "asc" },
      });

      return res.status(200).json(registros);
    }

    return res.status(405).json({ error: "Método não permitido." });
  } catch (error) {
    console.error("Erro no ponto digital:", error);
    return res.status(500).json({ error: "Erro interno do servidor." });
  }
}
