import 'package:dio/dio.dart';
import 'package:superport/core/config/environment.dart';
import 'package:superport/di/injection_container.dart' as di;
import 'package:superport/services/license_service.dart';
import 'package:superport/data/datasources/remote/api_client.dart';

void main() async {
  print('\n===== 라이센스 API 연결 상태 확인 =====\n');
  
  // 환경 초기화
  await Environment.initialize();
  
  print('📌 환경 설정 확인:');
  print('   - USE_API: ${Environment.useApi}');
  print('   - API_BASE_URL: ${Environment.apiBaseUrl}');
  print('   - 로깅 활성화: ${Environment.enableLogging}');
  
  // DI 설정
  await di.setupDependencies();
  
  print('\n📌 DI 컨테이너 확인:');
  print('   - LicenseService 등록됨: ${di.getIt.isRegistered<LicenseService>()}');
  print('   - ApiClient 등록됨: ${di.getIt.isRegistered<ApiClient>()}');
  
  // API Client 확인
  final apiClient = di.getIt<ApiClient>();
  print('\n📌 API Client 설정:');
  print('   - Base URL: ${apiClient.dio.options.baseUrl}');
  print('   - Headers: ${apiClient.dio.options.headers}');
  
  // 실제 API 호출 테스트
  print('\n📌 실제 API 호출 테스트:');
  
  try {
    // 1. 로그인 API 테스트
    print('\n1️⃣ 로그인 API 테스트...');
    final loginResponse = await apiClient.dio.post(
      '/auth/login',
      data: {
        'email': 'admin@superport.kr',
        'password': 'admin123!',
      },
    );
    
    if (loginResponse.statusCode == 200) {
      print('   ✅ 로그인 성공!');
      final token = loginResponse.data['data']['access_token'];
      print('   - 토큰 받음: ${token.substring(0, 20)}...');
      
      // 토큰 설정
      apiClient.dio.options.headers['Authorization'] = 'Bearer $token';
      
      // 2. 라이센스 목록 API 테스트
      print('\n2️⃣ 라이센스 목록 API 테스트...');
      final licenseResponse = await apiClient.dio.get('/licenses');
      
      if (licenseResponse.statusCode == 200) {
        print('   ✅ 라이센스 목록 조회 성공!');
        final data = licenseResponse.data['data'];
        if (data is List) {
          print('   - 라이센스 개수: ${data.length}개');
        } else if (data['items'] != null) {
          print('   - 라이센스 개수: ${data['items'].length}개');
        }
      }
    }
  } catch (e) {
    print('   ❌ API 호출 실패: $e');
  }
  
  print('\n📌 결론:');
  if (Environment.useApi) {
    print('   ✅ 라이센스 관리는 실제 API (${Environment.apiBaseUrl})를 사용 중입니다!');
  } else {
    print('   ⚠️ 라이센스 관리는 Mock 데이터를 사용 중입니다.');
  }
  
  print('\n===== 테스트 완료 =====\n');
}