from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.orm import Session
from db.session import get_db
from db.schemas.lms_platform import LMSPlatformCreate, LMSPlatformResponse
import controller.lms_platform as crud_lms_platform

router = APIRouter(prefix="/lms-platforms", tags=["LMS Platforms"])

@router.post("/", response_model=LMSPlatformResponse)
def create_platform(platform: LMSPlatformCreate, db: Session = Depends(get_db)):
    return crud_lms_platform.create_lms_platform(db, platform)

@router.get("/", response_model=list[LMSPlatformResponse])
def list_platforms(  pageNo: int = Query(1, ge=1, description="Page number"),
    recordsPerPage: int = Query(10, ge=1, le=100, description="Number of records per page"),
    search: str | None = Query(None, description="Search universities by name or institution code"),
    sort_by: str = Query("id", description="Column name to sort by"),
    sort_order: str = Query("asc", description="Sort order: asc or desc"),
    db: Session = Depends(get_db)):

    return crud_lms_platform.get_lms_platforms(
        db=db,
        pageNo=pageNo,
        recordsPerPage=recordsPerPage,
        search=search,
        sort_by=sort_by,
        sort_order=sort_order,
        )

@router.get("/{platform_id}", response_model=LMSPlatformResponse)
def get_platform(platform_id: int, db: Session = Depends(get_db)):
    platform = crud_lms_platform.get_lms_platform(db, platform_id)
    if not platform:
        raise HTTPException(status_code=404, detail="LMS Platform not found")
    return platform
