from fastapi import APIRouter

from app.api.v1 import (
    appointment_core,
    appointments,
    audit,
    booking_engines,
    branches,
    catalog,
    configurations,
    customers,
    external_providers,
    marketing,
    organizations,
    packages,
    permissions,
    salon,
    settings,
    staff,
)

api_router = APIRouter()
api_router.include_router(
    organizations.router, prefix="/organizations", tags=["organizations"]
)
api_router.include_router(branches.router, prefix="/branches", tags=["branches"])
api_router.include_router(
    external_providers.router,
    prefix="/external-providers",
    tags=["external-providers"],
)
api_router.include_router(
    booking_engines.router, prefix="/booking-engines", tags=["booking-engines"]
)
api_router.include_router(
    configurations.router, prefix="/configurations", tags=["configurations"]
)
api_router.include_router(settings.router, prefix="/settings", tags=["settings"])
api_router.include_router(audit.router, prefix="/audit", tags=["audit"])
api_router.include_router(
    permissions.router, prefix="/permissions", tags=["permissions"]
)
api_router.include_router(
    appointments.staffSchedule_router, prefix="/staff-schedules", tags=["staff-schedules"]
)
api_router.include_router(
    appointments.staffAvailability_router,
    prefix="/staff-availabilities",
    tags=["staff-availabilities"],
)
api_router.include_router(
    appointments.scheduleException_router,
    prefix="/schedule-exceptions",
    tags=["schedule-exceptions"],
)
api_router.include_router(
    appointments.appointmentType_router,
    prefix="/appointment-types",
    tags=["appointment-types"],
)
api_router.include_router(
    appointment_core.router, prefix="/appointments", tags=["appointments"]
)
api_router.include_router(
    appointments.waitingListEntry_router,
    prefix="/waiting-list",
    tags=["waiting-list"],
)
api_router.include_router(
    salon.treatmentRoom_router, prefix="/treatment-rooms", tags=["treatment-rooms"]
)
api_router.include_router(salon.station_router, prefix="/stations", tags=["stations"])
api_router.include_router(
    salon.branchPolicy_router, prefix="/branch-policies", tags=["branch-policies"]
)
api_router.include_router(
    catalog.serviceCategory_router,
    prefix="/service-categories",
    tags=["service-categories"],
)
api_router.include_router(catalog.beautyService_router, prefix="/services", tags=["services"])
api_router.include_router(
    customers.customerProfile_router, prefix="/customers", tags=["customers"]
)
api_router.include_router(
    packages.packageDefinition_router,
    prefix="/package-definitions",
    tags=["package-definitions"],
)
api_router.include_router(
    packages.membershipPlan_router,
    prefix="/membership-plans",
    tags=["membership-plans"],
)
api_router.include_router(staff.staffProfile_router, prefix="/staff", tags=["staff"])
api_router.include_router(
    staff.commissionRule_router, prefix="/commission-rules", tags=["commission-rules"]
)
api_router.include_router(
    marketing.marketingCampaignRef_router,
    prefix="/marketing-campaigns",
    tags=["marketing-campaigns"],
)
api_router.include_router(
    marketing.loyaltyIntegrationConfig_router,
    prefix="/loyalty-integrations",
    tags=["loyalty-integrations"],
)
api_router.include_router(
    marketing.communicationIntegrationConfig_router,
    prefix="/communication-integrations",
    tags=["communication-integrations"],
)
api_router.include_router(
    marketing.integrationDispatch_router,
    prefix="/integration-dispatches",
    tags=["integration-dispatches"],
)
