# from fastapi import APIRouter
# from pydantic import BaseModel
# from typing import Dict
# from app.modules.subscription.subscription_controller import SubscriptionController


# class planRequest(BaseModel):
#     name: str
#     price: float
#     duration_days: int
#     limits: Dict
#     features: Dict

# router = APIRouter(
#     prefix="/subscription",
#     tags=["Subscription"]
# )

# controller = SubscriptionController()

# @router.post("/create")
# async def create_plan(
#     payload: planRequest
# ):
#     return await controller.create_plan(
#         payload
#     )


# @router.get("/all")
# async def get_all_plans():
#     return await controller.get_all_plans()


# @router.get("/user/{user_id}")
# async def get_user_plan(
#     user_id: str
# ):
#     return await controller.get_user_plan(
#         user_id
#     )


# @router.put("/update/{plan_id}")
# async def update_plan(
#     plan_id: str,
#     payload: planRequest
# ):
#     return await controller.update_plan(
#         plan_id,
#         payload
#     )


# @router.delete("/delete/{plan_id}")
# async def delete_plan(
#     plan_id: str
# ):
#     return await controller.delete_plan(
#         plan_id
#     )




from fastapi import APIRouter
from pydantic import BaseModel
from typing import Dict
from app.modules.subscription.subscription_controller import SubscriptionController
from app.modules.subscription.subscription_model import SubscriptionModel

class PlanRequest(BaseModel):
    name: str
    price: float
    duration_days: int
    limits: Dict
    features: Dict

router = APIRouter(
    prefix="/subscription",
    tags=["Subscription"]
)

controller = SubscriptionController()

@router.post("/create")
async def create_plan(payload: PlanRequest):
    db_model = SubscriptionModel(**payload.model_dump())
    return await controller.create_plan(db_model)

@router.get("/all")
async def get_all_plans():
    return await controller.get_all_plans()

# Kisi ek single plan ko uski ID se dekhne ke liye endpoint
@router.get("/{plan_id}")
async def get_plan_by_id(plan_id: str):
    return await controller.get_plan_by_id(plan_id)

@router.put("/update/{plan_id}")
async def update_plan(plan_id: str, payload: PlanRequest):
    return await controller.update_plan(plan_id, payload)

# Isko aap delete/comment kar sakte hain agar abhi kisi ko access nahi dena hai
@router.delete("/delete/{plan_id}")
async def delete_plan(plan_id: str):
    return await controller.delete_plan(plan_id)