# from fastapi import HTTPException, status

# from app.modules.user_subscription.user_subscription_service import (
#     UserSubscriptionService
# )


# class UserSubscriptionController:

#     def __init__(self):
#         self.service = UserSubscriptionService()

#     async def activate_subscription(
#         self,
#         user_id: str,
#         plan_id: str
#     ):

#         try:

#             subscription = await self.service.activate_subscription(
#                 user_id=user_id,
#                 plan_id=plan_id
#             )

#             return {
#                 "success": True,
#                 "message": "Subscription activated successfully.",
#                 "data": subscription
#             }

#         except Exception as e:

#             raise HTTPException(
#                 status_code=status.HTTP_400_BAD_REQUEST,
#                 detail=str(e)
#             )

#     async def get_my_subscription(
#         self,
#         user_id: str
#     ):

#         try:

#             subscription = await self.service.get_active_subscription(
#                 user_id
#             )

#             return {
#                 "success": True,
#                 "data": subscription
#             }

#         except Exception as e:

#             raise HTTPException(
#                 status_code=status.HTTP_400_BAD_REQUEST,
#                 detail=str(e)
#             )

from fastapi import HTTPException, status

from app.modules.user_subscription.user_subscription_service import (
    UserSubscriptionService
)


class UserSubscriptionController:

    def __init__(self):

        self.service = UserSubscriptionService()

    async def activate_subscription(

        self,

        user_id: str,

        plan_id: str

    ):

        try:

            subscription = await self.service.activate_subscription(

                user_id,

                plan_id

            )

            return {

                "success": True,

                "message": "Subscription activated successfully.",

                "data": subscription

            }

        except Exception as e:

            raise HTTPException(

                status_code=status.HTTP_400_BAD_REQUEST,

                detail=str(e)

            )

    async def get_my_subscription(

        self,

        user_id: str

    ):

        try:

            subscription = await self.service.get_active_subscription(

                user_id

            )

            if not subscription:

                return {

                    "success": True,

                    "message": "No active subscription found.",

                    "data": None

                }

            return {

                "success": True,

                "message": "Subscription fetched successfully.",

                "data": subscription

            }

        except Exception as e:

            raise HTTPException(

                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,

                detail=str(e)

            )