from fastapi import APIRouter, Depends, HTTPException
from typing import Optional
from utils.auth_helper import requires_permission
from model.action_log_model import ActionLogModel

router = APIRouter(prefix="/admin", tags=["Action Logs"])


@router.get("/action-logs", dependencies=[Depends(requires_permission("audit_logs"))])
async def get_action_logs(
    page: int = 1,
    pageSize: int = 15,
    method: Optional[str] = None,
    outcome: Optional[str] = None,
    actorName: Optional[str] = None,
    path: Optional[str] = None,
    dateFrom: Optional[str] = None,
    dateTo: Optional[str] = None,
):
    try:
        result = ActionLogModel.get_logs(
            page=page,
            page_size=pageSize,
            method=method,
            outcome=outcome,
            actor_name=actorName,
            path=path,
            date_from=dateFrom,
            date_to=dateTo,
        )
        return {
            "success": True,
            **result
        }
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))