from __future__ import annotations

import io


def build_docx_buffer(
    doc_title: str,
    project_name: str,
    contract_number: str,
    client_name: str,
    location: str,
) -> io.BytesIO | None:
    """Attempt to generate docx document buffer using python-docx if available."""
    try:
        from docx import Document
        from docx.enum.text import WD_ALIGN_PARAGRAPH
        from docx.shared import Pt

        doc = Document()
        p_hdr = doc.add_paragraph()
        p_hdr.alignment = WD_ALIGN_PARAGRAPH.CENTER
        r1 = p_hdr.add_run(
            "CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM\nĐộc lập - Tự do - Hạnh phúc\n-------------------"
        )
        r1.bold = True

        p_title = doc.add_paragraph()
        p_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
        r_title = p_title.add_run(f"\n{doc_title}\n")
        r_title.bold = True
        r_title.font.size = Pt(16)

        doc.add_paragraph(f"1. Tên dự án: {project_name}")
        doc.add_paragraph(f"2. Căn cứ Hợp đồng số: {contract_number}")
        doc.add_paragraph(f"3. Địa điểm: {location}")
        doc.add_paragraph(f"4. Đại diện CĐT: {client_name}")
        doc.add_paragraph("5. Đại diện Nhà thầu: CÔNG TY TNHH XÂY DỰNG ĐỊNH SƠN")
        doc.add_paragraph("6. Kết luận: Đạt yêu cầu kỹ thuật và hồ sơ nghiệm thu.")

        buf = io.BytesIO()
        doc.save(buf)
        buf.seek(0)
        return buf
    except Exception:
        return None
