"""Brand."""
from typing import List, Optional
from fastapi import APIRouter, Depends, File, Form, UploadFile
from pydantic import Field
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 = Form(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/{group_id}", response_model=BrandResponse)
async def get_brand_by_id(group_id: int,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.BrandService(db,token).get_brand_by_id(group_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(brand_id: int,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_student)):
    return await service.BrandService(db, token).delete_brand(brand_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)}")
