from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.api.display_board import service
from app.api.display_board.service import DisplayBoardService
from app.api.display_board.schema import DisplayBoardCreate, DisplayBoardUpdate
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema, get_current_student

displayboard_router = APIRouter()

@displayboard_router.post("/display_board", response_model_exclude_none=True)
async def create_display_board(request: DisplayBoardCreate, db:Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await DisplayBoardService(db,token).create_display_board(request)

@displayboard_router.get("/get_display_board", response_model_exclude_none=True)
async def get_display_board(display_get_id: int, db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.DisplayBoardService(db,token).get_display_board(display_get_id)


@displayboard_router.get("/get_sum_of_total_display_board", response_model_exclude_none=True)
async def get_sum_of_total(group_id: int, db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.DisplayBoardService(db,token).get_and_sum_display_board(group_id)


@displayboard_router.put("/update_display_board", response_model_exclude_none=True)
async def update_display_board(request: DisplayBoardUpdate, db: Session = Depends(get_db), token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.DisplayBoardService(db,token).update_display_board(request)


@displayboard_router.delete("/delete_display_board", response_model_exclude_none=True)
async def delete_display_board(display_board_delete_id: int, db: Session = Depends(get_db), token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.DisplayBoardService(db,token).delete_display_board(display_board_delete_id)