import '../data/service_data_repository.dart';

/// 서비스명 관련 기능을 제공하는 서비스 클래스
class ServiceNameResolver {
  final ServiceDataRepository _dataRepository;

  ServiceNameResolver(this._dataRepository);

  /// 현재 로케일에 따라 서비스 표시명 가져오기
  Future<String> getServiceDisplayName({
    required String serviceName,
    required String locale,
  }) async {
    final servicesData = _dataRepository.getServicesData();
    if (servicesData == null) {
      return serviceName;
    }

    final lowerName = serviceName.toLowerCase().trim();
    final categories = servicesData['categories'] as Map<String, dynamic>;

    // JSON에서 서비스 찾기
    for (final categoryData in categories.values) {
      final services = (categoryData as Map<String, dynamic>)['services']
          as Map<String, dynamic>;

      for (final serviceData in services.values) {
        final data = serviceData as Map<String, dynamic>;
        final names = List<String>.from(data['names'] ?? []);

        // names 배열에 있는지 확인
        for (final name in names) {
          if (lowerName == name.toLowerCase() ||
              lowerName.contains(name.toLowerCase()) ||
              name.toLowerCase().contains(lowerName)) {
            // 로케일에 따라 적절한 이름 반환
            if (locale == 'ko' || locale == 'kr') {
              return data['nameKr'] ?? serviceName;
            } else {
              return data['nameEn'] ?? serviceName;
            }
          }
        }

        // nameKr/nameEn에 직접 매칭 확인
        final nameKr = (data['nameKr'] ?? '').toString().toLowerCase();
        final nameEn = (data['nameEn'] ?? '').toString().toLowerCase();

        if (lowerName == nameKr || lowerName == nameEn) {
          if (locale == 'ko' || locale == 'kr') {
            return data['nameKr'] ?? serviceName;
          } else {
            return data['nameEn'] ?? serviceName;
          }
        }
      }
    }

    // 찾지 못한 경우 원래 이름 반환
    return serviceName;
  }
}
