"""
사용자 정보 API 엔드포인트
"""
from flask import request, jsonify, session
from . import api_bp
from utils.common import get_db_connection
from utils.upload_count import get_upload_count

@api_bp.route('/user/usage', methods=['GET'])
def get_user_usage():
    """
    현재 사용자의 남은 업로드 횟수와 플랜 정보를 반환합니다.
    """
    try:
        if 'user_id' not in session:
            return jsonify({'error': '로그인이 필요합니다.'}), 401
        
        user_id = session.get('user_id') or session.get('email')
        conn = get_db_connection()
        cur = conn.cursor()
        
        # 사용자 플랜 정보 조회
        if '@' in str(user_id):
            cur.execute('SELECT upload_count, plan, pro_trial_count, company, created_at FROM users WHERE email = %s', (user_id,))
        else:
            cur.execute('SELECT upload_count, plan, pro_trial_count, company, created_at FROM users WHERE id = %s', (user_id,))
        
        result = cur.fetchone()
        cur.close()
        conn.close()
        
        if not result:
            return jsonify({'error': '사용자를 찾을 수 없습니다.'}), 404
        
        upload_count = result[0] if result[0] is not None else 0
        plan = result[1] if result[1] else 'free'  # 기본값은 free
        pro_trial_count = result[2] if result[2] is not None else 0
        company = result[3] if result[3] else ''
        created_at = result[4].isoformat() if result[4] else ''
        
        # 플랜별 업로드 횟수 제한
        plan_limits = {
            'free': 0,
            'plus': 1,
            'pro': 2
        }
        
        plan_limit = plan_limits.get(plan.lower(), 0)
        
        return jsonify({
            'success': True,
            'upload_count': upload_count,
            'pro_trial_count': pro_trial_count,
            'plan': plan,
            'plan_limit': plan_limit,
            'company': company,
            'created_at': created_at
        })
        
    except Exception as e:
        print(f"사용자 사용량 조회 오류: {str(e)}")
        return jsonify({'error': f'사용자 사용량 조회 중 오류가 발생했습니다: {str(e)}'}), 500

