import { NextResponse } from 'next/server';

export const runtime = 'edge';

// 🔄 PATCH - Atualizar laboratório
console.log('🔍 [DEBUG] Arquivo de rota carregado: laboratorios/[id]/route.ts');
console.log('🔍 [DEBUG] Variáveis de ambiente:', {
  endpoint: process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT,
  project: process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID,
  database: process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID,
  collection: process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_LABORATORIOS_ID,
  hasApiKey: !!process.env.APPWRITE_API_KEY,
});

export async function PATCH(
  request: Request,
  { params }: any
) {
  const { id } = params;
  console.log('🔄 [API] Atualizando laboratório:', id);

  try {
    const body = await request.json();
    console.log('📤 [API] Dados para atualização:', body);

    const response = await fetch(
      `${process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!}/databases/${process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!}/collections/${process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_LABORATORIOS_ID!}/documents/${id}`,
      {
        method: 'PATCH',
        headers: {
          'Content-Type': 'application/json',
          'X-Appwrite-Project': process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID!,
          'X-Appwrite-Key': process.env.APPWRITE_API_KEY!
        },
        body: JSON.stringify(body)
      }
    );

    if (response.ok) {
      const data = await response.json();
      console.log('✅ [API] Laboratório atualizado com sucesso!');
      return NextResponse.json({ success: true, data });
    } else {
      const errorData = await response.json().catch(() => ({}));
      console.error('❌ [API] Erro ao atualizar:', response.status, errorData);
      return NextResponse.json(
        { success: false, error: 'Erro ao atualizar laboratório', details: errorData },
        { status: response.status }
      );
    }
  } catch (error) {
    console.error('💥 [API] Erro na atualização:', error);
    return NextResponse.json(
      { success: false, error: 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}

// 🗑️ DELETE - Excluir laboratório
export async function DELETE(
  request: Request,
  { params }: any
) {
  const { id } = params;
  console.log('🗑️ [API] Excluindo laboratório:', id);

  try {
    const response = await fetch(
      `${process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!}/databases/${process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!}/collections/${process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_LABORATORIOS_ID!}/documents/${id}`,
      {
        method: 'DELETE',
        headers: {
          'Content-Type': 'application/json',
          'X-Appwrite-Project': process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID!,
          'X-Appwrite-Key': process.env.APPWRITE_API_KEY!
        }
      }
    );

    if (response.ok || response.status === 204) {
      console.log('✅ [API] Laboratório excluído com sucesso!');
      return NextResponse.json({ success: true });
    } else {
      const errorData = await response.json().catch(() => ({}));
      console.error('❌ [API] Erro ao excluir:', response.status, errorData);
      return NextResponse.json(
        { success: false, error: 'Erro ao excluir laboratório', details: errorData },
        { status: response.status }
      );
    }
  } catch (error) {
    console.error('💥 [API] Erro na exclusão:', error);
    return NextResponse.json(
      { success: false, error: 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}
