import { type NextRequest, NextResponse } from "next/server"; import { requireAuth } from "@/lib/auth/middleware"; import { getListingById, updateListing } from "@/lib/prisma/queries/listings"; import { secureLogger } from "@/lib/secure-logger"; /** * POST /api/listings/:id/activate * Reativa um anúncio pausado (apenas dono) */ export async function POST( request: NextRequest, { params }: { params: Promise<{ id: string }> }, ) { try { // Autenticação obrigatória const authResult = await requireAuth(request); if (authResult instanceof NextResponse) { return authResult; } const auth = authResult; const { id } = await params; const listingId = parseInt(id, 10); if (Number.isNaN(listingId)) { return NextResponse.json( { success: false, error: "ID de anúncio inválido", }, { status: 400 }, ); } // Verificar se o anúncio existe e pertence ao usuário const listing = await getListingById(listingId); if (!listing) { return NextResponse.json( { success: false, error: "Anúncio não encontrado", }, { status: 404 }, ); } if (listing.seller_id !== auth.userId) { return NextResponse.json( { success: false, error: "Você não tem permissão para reativar este anúncio", }, { status: 403 }, ); } if (listing.listing_status !== "cancelled") { return NextResponse.json( { success: false, error: "Apenas anúncios pausados podem ser reativados", }, { status: 400 }, ); } // Reativar anúncio const updated = await updateListing(listingId, { listing_status: "active", }); if (!updated) { return NextResponse.json( { success: false, error: "Erro ao reativar anúncio", }, { status: 500 }, ); } secureLogger.info("✅ Anúncio reativado", { listingId, userId: auth.userId, }); return NextResponse.json( { success: true, listing: updated, message: "Anúncio reativado com sucesso", }, { status: 200 }, ); } catch (error) { secureLogger.error("❌ Erro ao reativar anúncio", { error: error instanceof Error ? error.message : "Erro desconhecido", }); return NextResponse.json( { success: false, error: "Erro ao reativar anúncio", }, { status: 500 }, ); } }