"""企业详情接口。"""
from __future__ import annotations

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from app.core.deps import get_source_db
from app.core.response import AppError, ok
from app.repositories.nl_enterprise import get_enterprise_detail
from app.services.nl_document import generate_enterprise_documents

router = APIRouter(prefix="/enterprise", tags=["企业详情"])


def _iso(value):
    """把 DATE/DATETIME 统一转 ISO 字符串；None 或纯字符串原样返回。"""
    if value is None:
        return None
    if hasattr(value, "isoformat"):
        return value.isoformat()
    return value


@router.get("/{code}/info", summary="企业详情（含附件文件）")
def get_enterprise(code: str, session: Session = Depends(get_source_db)):
    rows = get_enterprise_detail(session, code)
    if not rows:
        raise AppError(f"企业不存在或未关联附件: {code}", code=404, status_code=404)

    first = rows[0]
    return ok({
        "id": first["ID"],
        "name_cn": first["NameCN"],
        "name_eng": first["NameEng"],
        "country": first["Country"],
        "reg_number": first["RegNumber"],
        "reg_address": first["RegAddress"],
        "reg_address_eng": first["RegAddressEng"],
        "company_address_line1_en": first["CompanyAddressLine1En"],
        "company_address_line2_en": first["CompanyAddressLine2En"],
        "reg_address_city": first["RegAddressCity"],
        "city_eng_name": first["CityEngName"],
        "establishment_date": _iso(first["EstablishmentDate"]),
        "signature_date": _iso(first["SignatureDate"]),
        "legal_person_name": first["LegalPersonName"],
        "legal_person_id_number": first["LegalPersonIdNumber"],
        "legal_person_id_start_date": _iso(first["LegalPersonIdStartDate"]),
        "legal_person_id_end_date": _iso(first["LegalPersonIdEndDate"]),
        "legal_person_full_name_pinyin": first["LegalPersonFullNamePinYin"],
        "legal_person_birth_date": _iso(first["LegalPersonBirthDate"]),
        "files": [
            {
                "file_name": r["F_FileName"],
                "file_size": r["F_FileSize"],
                "file_type": r["F_FileType"],
                "file_path": r["F_FilePath"],
            }
            for r in rows if r["F_FileName"] is not None
        ],
    })


@router.post("/{code}", summary="按国家生成企业文档（替换→合并→上传）")
def generate_documents(code: str):
    return ok(generate_enterprise_documents(code))

