"""
API Version 1 Router Configuration
"""
from fastapi import APIRouter
from src.apps.users.router import router as user_router
from src.apps.auth.router import router as auth_router
from src.apps.products.router import router as product_router
from src.apps.product_categories.router import router as product_category_router
from src.apps.customers.router import router as customer_router
from src.apps.files.router import router as files_router
from src.apps.payment_requests.router import router as payment_request_router
from src.apps.site_masters.router import router as site_master_router
from src.apps.notes.router import router as notes_router
from src.apps.reports.router import router as reports_router
from src.apps.transactions.router import router as transactions_router
from src.apps.subscriptions.router import router as subscriptions_router
from src.core.utils.enums import APIRoutes
from src.apps.payment_methods.router import router as payment_methods_router

# Create the main API v1 router
api_router = APIRouter()

# Include all application routers with their respective configurations
api_router.include_router(
    user_router,
    prefix=APIRoutes.USERS.value,
    tags=["USERS"]
)

api_router.include_router(
    auth_router,
    prefix="/auth",
    tags=["AUTH"]
)

api_router.include_router(
    product_router,
    prefix=APIRoutes.PRODUCTS.value,
    tags=["PRODUCTS"]
)

api_router.include_router(
    product_category_router,
    prefix="/product-categories",
    tags=["PRODUCT_CATEGORIES"]
)

api_router.include_router(
    customer_router,
    prefix=APIRoutes.CUSTOMERS.value
)

api_router.include_router(
    files_router,
    prefix="/files",
    tags=["FILES"]
)
api_router.include_router(
    payment_request_router,
    prefix=APIRoutes.PAYMENT_REQUESTS.value,
    tags=["PAYMENT_REQUESTS"]
)
api_router.include_router(
    payment_methods_router,
    prefix=APIRoutes.PAYMENT_METHODS.value,
    tags=["PAYMENT_METHODS"]
)
api_router.include_router(
    site_master_router,
    prefix=APIRoutes.SITE_MASTER.value,
    tags=["SITE_MASTERS"]
)
api_router.include_router(
    notes_router,
    prefix=APIRoutes.NOTES.value,
    tags=["NOTES"]
)
api_router.include_router(
    reports_router,
    prefix="/reports",
    tags=["REPORTS"]
)
api_router.include_router(
    transactions_router,
    prefix="/transactions",
    tags=["TRANSACTIONS"]
)
api_router.include_router(
    subscriptions_router,
    prefix=APIRoutes.SUBSCRIPTIONS.value,
    tags=["SUBSCRIPTIONS"]
)