"""Brand."""
from typing import List
from fastapi import APIRouter, Depends, File, UploadFile
from sqlalchemy.orm import Session
from app.api.brand import service
from app.api.brand.schemas import BrandCreate, BrandResponse, BrandUpdate
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema, get_current_student
from app.utils.schemas_utils import CustomResponse

brand_router = APIRouter()

@brand_router.post("/brand")
async def create_brand(
    brand_data: BrandCreate = Depends(),
    brand_image: UploadFile = File(...),
    db: Session = Depends(get_db),
    token: JWTPayloadSchema = Depends(get_current_student),
)->CustomResponse:
    """Post data."""
    return await service.BrandService(db, token).create_brand(brand_data, brand_image) 

@brand_router.put("/brand/{brand_id}")
async def update_brand(brand_id: int,brand_data: BrandUpdate = Depends(),
    brand_image: UploadFile = File(None),
    db: Session = Depends(get_db),
    token: JWTPayloadSchema = Depends(get_current_student),
):
    return await service.BrandService(db, token).update_brand(brand_id, brand_data, brand_image)

@brand_router.get("/brand/{brand_id}", response_model=BrandResponse)
async def get_brand_by_id(brand_id: int,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.BrandService(db,token).get_brand_by_id(brand_id)

@brand_router.get("/brands/by-group/{group_id}", response_model=List[BrandResponse])
async def get_brands_by_group_id(
    group_id: int,
    db: Session = Depends(get_db),
    token: JWTPayloadSchema = Depends(get_current_student)
):
    return await service.BrandService(db, token).get_brands_by_group_id(group_id)


@brand_router.delete("/brand/delete",response_model_exclude_none=True)
async def delete_catchment(group_id: int,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.BrandService(db, token).delete_brand(group_id)


# import base64
# from fastapi import APIRouter, Depends, UploadFile
# from sqlalchemy.orm import Session
# from app.api.brand import service
# from app.database.main.mysql import get_db
# from app.dependency.authantication import JWTManager, JWTPayloadSchema, get_current_student
# from app.api.brand.service import BrandService
# from app.api.brand.schemas import BrandCreate, BrandUpdate
# from app.utils.schemas_utils import CustomResponse

# brand_router = APIRouter()

# @brand_router.post("/brand", tags=["Brand"])
# async def create_brand(
#     brand_data: BrandCreate,
#     db: Session = Depends(get_db),
#     token: JWTPayloadSchema = Depends(get_current_student),
# ):
#     return BrandService(db,token).create_brand(brand_data.brand_name, brand_data.rationale, brand_data.brand_image)

# @brand_router.put("/brand/update", response_model_exclude_none=True)
# async def update_brand(request: BrandUpdate, db: Session = Depends(get_db)):
#     return await service.BrandService(db).update_brand(request)

# @brand_router.post("/convert-to-base64")
# async def convert_to_base64(file: UploadFile) -> CustomResponse:
#     try:
#         # Read the file as bytes
#         file_bytes = await file.read()

#         # Convert the file bytes to a Base64 string
#         base64_string = base64.b64encode(file_bytes).decode("utf-8")

#         return CustomResponse(
#             status="1",
#             message="File converted to Base64 successfully",
#             data={"base64_image": base64_string}
#         )

#     except Exception as e:
#         return CustomResponse(status="0", message=f"Error converting file: {str(e)}")
