import prisma from "~/server/utils/prisma";

export default defineEventHandler(async (event) => {
  try {
    const query = getQuery(event);
    const limit = parseInt(query.limit) || 10;

    // Fetch recent notifications with related data
    const recentNotifications = await prisma.notifications.findMany({
      take: limit,
      orderBy: {
        created_at: 'desc'
      },
      include: {
        notification_categories: {
          select: {
            name: true,
            value: true
          }
        },
        notification_channels: {
          select: {
            channel_type: true
          }
        },
        _count: {
          select: {
            notification_recipients: true
          }
        }
      }
    });

    // Format the response
    const formatted = recentNotifications.map(notif => ({
      id: notif.id,
      title: notif.title,
      type: notif.type,
      priority: notif.priority,
      status: notif.status,
      category: notif.notification_categories?.name || 'Unknown',
      channels: notif.notification_channels.map(ch => ch.channel_type),
      recipientCount: notif._count.notification_recipients,
      estimatedReach: notif.estimated_reach,
      actualSent: notif.actual_sent,
      createdAt: notif.created_at,
      sentAt: notif.sent_at,
      scheduledAt: notif.scheduled_at,
      createdBy: notif.created_by,
    }));

    return {
      success: true,
      data: formatted
    };
  } catch (error) {
    console.error("Error fetching recent notifications:", error);
    throw createError({
      statusCode: 500,
      statusMessage: "Failed to fetch recent notifications",
      data: { error: error.message },
    });
  } finally {
  }
});
