"""Router for Analytics endpoints."""

from datetime import date

from fastapi import APIRouter, Depends, HTTPException, Query, status
from sqlalchemy.ext.asyncio import AsyncSession

from app.core.database import get_db
from app.dependencies import get_current_user
from app.models.user import User
from app.services import analytics_service

router = APIRouter(
    prefix="/spbus/{spbu_id}/analytics",
    tags=["analytics"],
)


@router.get("/daily-trend", response_model=dict)
async def get_daily_trend(
    spbu_id: int,
    tanggal_mulai: date = Query(...),
    tanggal_akhir: date = Query(...),
    db: AsyncSession = Depends(get_db),
    current_user: User = Depends(get_current_user),
) -> dict:
    if tanggal_mulai > tanggal_akhir:
        raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="tanggal_mulai > tanggal_akhir")
    days = await analytics_service.get_daily_trend(db, spbu_id, tanggal_mulai, tanggal_akhir)
    return {"data": days}


@router.get("/produk-trend", response_model=dict)
async def get_produk_trend(
    spbu_id: int,
    tanggal_mulai: date = Query(...),
    tanggal_akhir: date = Query(...),
    db: AsyncSession = Depends(get_db),
    current_user: User = Depends(get_current_user),
) -> dict:
    if tanggal_mulai > tanggal_akhir:
        raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="tanggal_mulai > tanggal_akhir")
    data = await analytics_service.get_produk_trend(db, spbu_id, tanggal_mulai, tanggal_akhir)
    return {"data": data}
