import { logApiError } from "@/lib/api/security";
import { NextResponse } from "next/server";
import { processScheduledAutomationRules } from "@/lib/automations/engine";
import { canAccessWorkspace } from "@/lib/developers/auth";
import { createAdminClient } from "@/lib/supabase/admin";
import { createRouteClient } from "@/lib/supabase/route";

export async function POST(req: Request) {
  try {
    const supabase = await createRouteClient();
    const {
      data: { user },
    } = await supabase.auth.getUser();

    if (!user) {
      return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
    }

    const body = await req.json().catch(() => ({}));
    const teamId = typeof body.teamId === "string" && body.teamId ? body.teamId : null;
    const accessible = await canAccessWorkspace(user.id, teamId);

    if (!accessible) {
      return NextResponse.json({ error: "Forbidden" }, { status: 403 });
    }

    const admin = createAdminClient();
    const result = await processScheduledAutomationRules(admin, {
      userId: user.id,
      teamId,
    });

    return NextResponse.json(result);
  } catch (error) {
    logApiError("Automations run-due POST error:", error);
    return NextResponse.json({ error: "Failed to run due automations" }, { status: 500 });
  }
}
