
from pydantic import BaseModel
from typing import Optional
from model.banner import BannerModel
from fastapi import APIRouter, Depends
from utils.auth_helper import requires_permission, assert_actor_match
from utils.turnstile_helper import verify_turnstile

# Dòng này bị thiếu hoặc sai chính tả nên nó báo lỗi ImportError nè:
router = APIRouter()

# Schema kiểm tra dữ liệu đầu vào theo chuẩn README
class UpdateBannerPayload(BaseModel):
    bannerId: str
    title: Optional[str] = ""
    subtitle: Optional[str] = ""
    badge: Optional[str] = ""
    ctaText: Optional[str] = ""
    imageUrl: Optional[str] = ""
    actorId: str

@router.put("/update-banner", dependencies=[Depends(verify_turnstile)])
async def update_banner_endpoint(
    payload: UpdateBannerPayload,
    current_user = Depends(requires_permission("product_management"))
):
    try:
        actor_id = current_user["id"]
        actor_name = current_user.get("name", "")
        assert_actor_match(current_user, payload.actorId)

        updated_banner = BannerModel.update_banner(
            banner_id=payload.bannerId,
            title=payload.title,
            subtitle=payload.subtitle,
            badge=payload.badge,
            cta_text=payload.ctaText,
            image_url=payload.imageUrl
        )

        return {
            "success": True,
            "data": updated_banner,
            "actedBy": {
                "id": actor_id,
                "name": actor_name
            }
        }
    except Exception as e:
        return {"success": False, "message": str(e)}

# Thêm luôn cổng GET để lỡ trang chủ cần gọi lấy Banner
@router.get("/banners")
async def get_banners_endpoint():
    try:
        banners = BannerModel.get_all_banners()
        return {"success": True, "data": banners}
    except Exception as e:
        return {"success": False, "message": str(e)}