import jwt from "jsonwebtoken";
import Member from "../models/member.js";
import { connectDB } from "../utils/mongoose.js";

export default defineEventHandler(async (event) => {
  await connectDB();

  // Check if user is authenticated (optional for this endpoint)
  const token = getCookie(event, "auth-token");
  let isAuthenticated = false;

  if (token) {
    try {
      jwt.verify(token, useRuntimeConfig().jwtSecret);
      isAuthenticated = true;
    } catch (err) {
      isAuthenticated = false;
    }
  }

  const query = getQuery(event);
  const topic = query.topic;

  // Build query for peer supporters
  const dbQuery = {
    "peerSupport.enabled": true,
    status: "active",
  };

  // Filter by topic if specified
  if (topic) {
    dbQuery["peerSupport.topics"] = topic;
  }

  try {
    const supporters = await Member.find(dbQuery)
      .select(
        "name avatar circle peerSupport slackUserId createdAt"
      )
      .sort({ createdAt: -1 })
      .lean();

    // Get unique topics for filter options
    const allTopics = supporters
      .flatMap((supporter) => supporter.peerSupport?.topics || [])
      .filter((topic, index, self) => self.indexOf(topic) === index)
      .sort();

    return {
      supporters,
      totalCount: supporters.length,
      filters: {
        availableTopics: allTopics,
      },
    };
  } catch (error) {
    console.error("Peer support fetch error:", error);
    throw createError({
      statusCode: 500,
      statusMessage: "Failed to fetch peer supporters",
    });
  }
});
