
import os
from fastapi import FastAPI, APIRouter, Depends, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from dotenv import load_dotenv
from api.routes.auth import router as auth_router
from api.routes.users import router as user_router
from api.routes.seeder import router as seed_router
from api.routes.role import router as role_router
from api.routes.section import router as section_router 
from api.routes.user_course_log import router as course_log_router
from api.routes.university import router as university_router
from fastapi.staticfiles import StaticFiles
from api.routes.course import router as course_router
from api.routes.lms_platform import router as lms_platform_router

from core.handler import (
    custom_validation_exception_handler, 
    custom_http_exception_handler
)
load_dotenv()
app = FastAPI(title="Syllabuild Admin: AI Assisted course Generator")

# Register exception handlers here
app.add_exception_handler(RequestValidationError, custom_validation_exception_handler)
app.add_exception_handler(HTTPException, custom_http_exception_handler)
# CORS configuration

allow_origins=[os.getenv("FRONT_APP_URL")]
# Add CORS middleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # Replace with your frontend URL
    allow_credentials=True,
    allow_methods=["*"],  # Allows all methods like GET, POST, PUT, etc.
    allow_headers=["*"],  # Allows all headers
)

app.mount("/uploads", StaticFiles(directory="uploads"), name="uploads")

app.include_router(auth_router, prefix="/auth", tags=["Authentication"])
app.include_router(user_router, prefix="/users", tags=["Users List"])
app.include_router(seed_router, prefix="/seeder", tags=["seeder"])
app.include_router(role_router, prefix="/role", tags=["Roles List"])
app.include_router(section_router, prefix="/sections", tags=["Section List"])
app.include_router(course_log_router, prefix="/course-logs", tags=["Course Logs"])
app.include_router(university_router, prefix="/universities", tags=["Universities List"])
app.include_router(course_router, prefix="/courses", tags=["Courses List"])
app.include_router(lms_platform_router, prefix="/lms-platforms", tags=["LMS Platforms"])




