import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../l10n/app_localizations.dart';

/// 카테고리별 구독 그룹의 헤더 위젯
///
/// 카테고리 이름, 구독 개수, 총 비용을 표시합니다.
/// 통화별로 구분하여 표시하며, 혼재된 경우 각각 표시합니다.
class CategoryHeaderWidget extends StatelessWidget {
  final String categoryName;
  final int subscriptionCount;
  final double totalCostUSD;
  final double totalCostKRW;
  final double totalCostJPY;
  final double totalCostCNY;

  const CategoryHeaderWidget({
    Key? key,
    required this.categoryName,
    required this.subscriptionCount,
    required this.totalCostUSD,
    required this.totalCostKRW,
    required this.totalCostJPY,
    required this.totalCostCNY,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.fromLTRB(20, 16, 20, 4),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(
                categoryName,
                style: const TextStyle(
                  fontSize: 16,
                  fontWeight: FontWeight.w700,
                  color: Color(0xFF374151),
                ),
              ),
              Text(
                _buildCostDisplay(context),
                style: const TextStyle(
                  fontSize: 12,
                  fontWeight: FontWeight.w500,
                  color: Color(0xFF6B7280),
                ),
              ),
            ],
          ),
          const SizedBox(height: 8),
          const Divider(
            height: 1,
            thickness: 1,
            color: Color(0xFFEEEEEE),
          ),
        ],
      ),
    );
  }

  /// 통화별 합계를 표시하는 문자열을 생성합니다.
  String _buildCostDisplay(BuildContext context) {
    final parts = <String>[];
    
    // 개수는 항상 표시
    parts.add(AppLocalizations.of(context).subscriptionCount(subscriptionCount));
    
    // 통화 부분을 별도로 처리
    final currencyParts = <String>[];
    
    // 달러가 있는 경우
    if (totalCostUSD > 0) {
      final formatter = NumberFormat.currency(
        locale: 'en_US',
        symbol: '\$',
        decimalDigits: 2,
      );
      currencyParts.add(formatter.format(totalCostUSD));
    }
    
    // 원화가 있는 경우
    if (totalCostKRW > 0) {
      final formatter = NumberFormat.currency(
        locale: 'ko_KR',
        symbol: '₩',
        decimalDigits: 0,
      );
      currencyParts.add(formatter.format(totalCostKRW));
    }
    
    // 엔화가 있는 경우
    if (totalCostJPY > 0) {
      final formatter = NumberFormat.currency(
        locale: 'ja_JP',
        symbol: '¥',
        decimalDigits: 0,
      );
      currencyParts.add(formatter.format(totalCostJPY));
    }
    
    // 위안화가 있는 경우
    if (totalCostCNY > 0) {
      final formatter = NumberFormat.currency(
        locale: 'zh_CN',
        symbol: '¥',
        decimalDigits: 2,
      );
      currencyParts.add(formatter.format(totalCostCNY));
    }
    
    // 통화가 하나 이상 있는 경우
    if (currencyParts.isNotEmpty) {
      // 통화가 여러 개인 경우 + 로 연결, 하나인 경우 그대로
      final currencyDisplay = currencyParts.join(' + ');
      parts.add(currencyDisplay);
    }
    
    return parts.join(' · ');
  }
}
