import { NextRequest, NextResponse } from 'next/server';
import { Client, Databases, ID, Query } from 'node-appwrite';

export const runtime = 'edge';

// Configurar cliente do servidor
const getServerClient = () => {
  const client = new Client()
    .setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!)
    .setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID!)
    .setKey(process.env.APPWRITE_API_KEY!);
  
  return new Databases(client);
};

export async function POST(request: NextRequest) {
  try {
    const { authId } = await request.json();
    
    if (!authId) {
      return NextResponse.json(
        { success: false, error: 'Auth ID é obrigatório' },
        { status: 400 }
      );
    }

    const databases = getServerClient();
    const databaseId = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!;
    const empresaCollectionId = process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_EMPRESAS_DADOS_ID!;
    const usuariosCollectionId = process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_USUARIOS_ID!;

    // 1. Criar empresa padrão
    const empresaData = {
      cnpj: "12345678000199",
      "razao-social": "Farmácia SaveInMed Demo",
      "nome-fantasia": "SaveInMed Demo"
    };

    console.log('Criando empresa padrão:', empresaData);

    const empresaResponse = await databases.createDocument(
      databaseId,
      empresaCollectionId,
      ID.unique(),
      empresaData
    );

    console.log('Empresa criada:', empresaResponse.$id);

    // 2. Buscar documento do usuário
    const userQuery = await databases.listDocuments(
      databaseId,
      usuariosCollectionId,
      [Query.equal("auth-id-appwrite", authId), Query.limit(1)]
    );

    if (userQuery.documents.length === 0) {
      return NextResponse.json(
        { success: false, error: 'Usuário não encontrado' },
        { status: 404 }
      );
    }

    const userDoc = userQuery.documents[0];

    // 3. Associar empresa ao usuário
    await databases.updateDocument(
      databaseId,
      usuariosCollectionId,
      userDoc.$id,
      {
        empresas_array: [empresaData['razao-social']]
      }
    );

    console.log('Empresa associada ao usuário');

    return NextResponse.json({
      success: true,
      empresa: empresaResponse,
      message: 'Empresa criada e associada com sucesso'
    });

  } catch (error: any) {
    console.error('Erro ao configurar empresa:', error);
    return NextResponse.json(
      { success: false, error: error.message || 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}
