from __future__ import annotations

import logging

from app.models.telegram_schemas import TelegramResponse

logger = logging.getLogger("dscons.telegram.site_diary")


class TelegramSiteDiaryMixin:
    """Site diary automated dispatch & formatting logic."""

    async def send_site_diary_report(
        self,
        project_code: str,
        project_name: str,
        shift_date: str,
        weather: str,
        workforce_count: int,
        machine_count: int,
        activities: list[str],
        supervisor_notes: str | None = None,
        chat_id: str | None = None,
    ) -> TelegramResponse:
        """Format and broadcast daily site diary report."""
        lines = [
            "📋 <b>NHẬT KÝ THI CÔNG ĐIỆN TỬ (SITE DIARY 3 BÊN)</b>",
            f"🏗️ <b>Dự Án:</b> <code>{project_code}</code> · {project_name}",
            f"📅 <b>Ngày Thi Công:</b> <code>{shift_date}</code>",
            f"☀️ <b>Thời Tiết:</b> {weather}",
            f"👷 <b>Quân Số Hiện Trường:</b> <code>{workforce_count} Nhân sự</code>",
            f"🚜 <b>Ca Máy Hoạt Động:</b> <code>{machine_count} Ca máy</code> (Định mức 2026)",
            "",
            "🔨 <b>Hạng Mục Thi Công Trong Ngày:</b>",
        ]
        for act in activities:
            lines.append(f" • {act}")

        if supervisor_notes:
            lines.append(
                f"\n👨‍💼 <b>Ý Kiến TVGS & Chỉ Huy Trưởng:</b>\n<i>{supervisor_notes}</i>"
            )

        lines.append("\n✅ <i>Trạng thái: ĐÃ KÝ DUYỆT 3 BÊN ĐIỆN TỬ</i>")
        return await self.send_message("\n".join(lines), chat_id=chat_id)
