import { Response } from 'express';
import { prisma } from '../config/database';
import { AuthRequest } from '../middleware/auth';

export async function listDocuments(req: AuthRequest, res: Response): Promise<void> {
  try {
    const { eventId } = req.params;

    const event = await prisma.event.findFirst({
      where: { id: eventId, organizerId: req.organizerId },
    });

    if (!event) {
      res.status(404).json({ error: 'Event not found' });
      return;
    }

    const documents = await prisma.eventDocument.findMany({
      where: { eventId },
      orderBy: { uploadedAt: 'desc' },
    });

    res.json(documents);
  } catch (error) {
    console.error('listDocuments error:', error);
    res.status(500).json({ error: 'Failed to fetch documents' });
  }
}

export async function deleteDocument(req: AuthRequest, res: Response): Promise<void> {
  try {
    const { eventId, docId } = req.params;

    const event = await prisma.event.findFirst({
      where: { id: eventId, organizerId: req.organizerId },
    });

    if (!event) {
      res.status(404).json({ error: 'Event not found' });
      return;
    }

    const doc = await prisma.eventDocument.findFirst({
      where: { id: docId, eventId },
    });

    if (!doc) {
      res.status(404).json({ error: 'Document not found' });
      return;
    }

    await prisma.eventDocument.delete({ where: { id: docId } });

    res.json({ message: 'Document deleted' });
  } catch (error) {
    console.error('deleteDocument error:', error);
    res.status(500).json({ error: 'Failed to delete document' });
  }
}
