import { NextResponse } from 'next/server';
import { tfsService } from '@/services/integrations/tfs/tfs';
import { getServerSession } from 'next-auth';
import { authOptions } from '@/lib/auth';

/**
 * Route POST /api/tfs/sync
 * Synchronise les Pull Requests TFS/Azure DevOps avec la base locale
 */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export async function POST(_request: Request) {
  try {
    const session = await getServerSession(authOptions);
    if (!session?.user?.id) {
      return NextResponse.json(
        { success: false, error: 'Non authentifié' },
        { status: 401 }
      );
    }

    console.log('🔄 Début de la synchronisation TFS manuelle...');

    // Effectuer la synchronisation via le service singleton avec l'utilisateur connecté
    const result = await tfsService.syncTasks(session.user.id);

    if (result.success) {
      return NextResponse.json({
        message: 'Synchronisation TFS terminée avec succès',
        data: result,
      });
    } else {
      return NextResponse.json(
        {
          error: 'Synchronisation TFS terminée avec des erreurs',
          data: result,
        },
        { status: 207 } // Multi-Status
      );
    }
  } catch (error) {
    console.error('❌ Erreur API sync TFS:', error);

    return NextResponse.json(
      {
        error: 'Erreur interne lors de la synchronisation',
        details: error instanceof Error ? error.message : 'Erreur inconnue',
      },
      { status: 500 }
    );
  }
}

/**
 * Route GET /api/tfs/sync
 * Teste la connexion TFS
 */
export async function GET() {
  try {
    const session = await getServerSession(authOptions);
    if (!session?.user?.id) {
      return NextResponse.json(
        { success: false, error: 'Non authentifié' },
        { status: 401 }
      );
    }

    // Tester la connexion via le service singleton avec l'utilisateur connecté
    const isConnected = await tfsService.testConnection(session.user.id);

    if (isConnected) {
      return NextResponse.json({
        message: 'Connexion TFS OK',
        connected: true,
      });
    } else {
      return NextResponse.json(
        {
          error: 'Connexion TFS échouée',
          connected: false,
        },
        { status: 401 }
      );
    }
  } catch (error) {
    console.error('❌ Erreur test connexion TFS:', error);

    return NextResponse.json(
      {
        error: 'Erreur interne',
        details: error instanceof Error ? error.message : 'Erreur inconnue',
        connected: false,
      },
      { status: 500 }
    );
  }
}
