import { Router } from "express";
import { prisma } from "../lib/prisma";
import { HttpError } from "../middleware/errorHandler";

export const invitationsRouter = Router();

invitationsRouter.get("/:token", async (req, res, next) => {
  try {
    const invitation = await prisma.invitation.findUnique({
      where: { token: req.params.token },
      include: { organization: true, workspace: true, board: true, invitedBy: true },
    });
    if (!invitation || invitation.acceptedAt) {
      throw new HttpError(404, "This invitation is invalid or has already been used");
    }

    res.json({
      invitation: {
        email: invitation.email,
        organizationName: invitation.organization?.name ?? null,
        workspaceName: invitation.workspace?.name ?? null,
        boardName: invitation.board?.name ?? null,
        inviterName: invitation.invitedBy.name,
      },
    });
  } catch (err) {
    next(err);
  }
});
