# from fastapi import APIRouter, UploadFile, File, Response
# from app.modules.bgRemover.service import process_image

# router = APIRouter()

# @router.post("/remove-bg")
# async def remove_bg(file: UploadFile = File(...)):
#     image_data = await file.read()
#     processed_image = process_image(image_data)
    
#     return Response(content=processed_image, media_type="image/png")


from fastapi import APIRouter, UploadFile, File, Response, Header, HTTPException, status
from app.modules.bgRemover.service import process_image
from app.modules.device_limit.device_limit_repository import DeviceLimitRepository

router = APIRouter()
limit_repo = DeviceLimitRepository()

@router.post("/remove-bg")
async def remove_bg(
    file: UploadFile = File(...),
    device_id: str = Header(None, alias="X-Device-Id") # App header se device_id aayega
):
    if not device_id:
        raise HTTPException(
            status_code=status.HTTP_400_BAD_REQUEST, 
            detail="Device ID (X-Device-Id) is required in headers."
        )

    # 1. Limit Check Karo
    is_allowed = await limit_repo.check_and_increment_limit(device_id)
    
    if not is_allowed:
        # Agar 5 images complete ho gayi hain, to 403 Forbidden error throw karo
        # Isme payload ja raha hai taaki frontend samajh sake ki premium screen dikhani hai
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail={
                "success": False,
                "trigger_subscription": True,
                "message": "Daily limit reached. Please subscribe to continue!"
            }
        )

    # 2. Agar limit bachi hai, to image process karke return karo
    image_data = await file.read()
    processed_image = process_image(image_data)
    
    return Response(content=processed_image, media_type="image/png")