import type { RouteDefinition } from '../../core/router.js';
import {
  disableTenantClassRoute,
  bulkAssignTenantClassMembersRoute,
  bulkUpsertTenantStudentsRoute,
  removeTenantClassMemberRoute,
  tenantClassesRoute,
  tenantClassMembersRoute,
  tenantStudentSupervisionRulesRoute,
  generateTenantStudentSupervisionRoute,
  tenantStudentFollowupsRoute,
  tenantStudentFollowupReportRoute,
  tenantStudentNotesRoute,
  tenantStudentSupervisionPreviewRoute,
  tenantStudentsRoute,
  tenantTeachersRoute,
  pushTenantStudentsToCrmRoute,
  updateTenantStudentStatusRoute,
  upsertTenantStudentSupervisionRuleRoute,
  upsertTenantStudentFollowupRoute,
  upsertTenantStudentNoteRoute,
  upsertTenantClassMemberRoute,
  upsertTenantClassRoute,
  upsertTenantStudentRoute,
} from './classes.js';
import { tenantDashboardRoute } from './dashboard.js';
import { tenantUserNotificationsRoute } from './notifications.js';
import {
  tenantExamDatesRoute,
  tenantFeedbackEventsRoute,
  tenantFeedbackReportRoute,
  tenantFeedbacksRoute,
  updateTenantFeedbackStatusRoute,
  upsertTenantExamDateRoute,
} from './operations.js';
import {
  pointActivityClaimsRoute,
  pointActivityTasksRoute,
  pointExchangeItemsRoute,
  pointExchangeOrdersRoute,
  pointsRiskReportRoute,
  upsertPointActivityTaskRoute,
  upsertPointExchangeItemRoute,
} from './points.js';
import {
  activationCodesRoute,
  announcementsAdminRoute,
  auditLogsRoute,
  badgeGrantsRoute,
  badgesRoute,
  authProvidersRoute,
  bannersAdminRoute,
  codeBatchesRoute,
  couponRedemptionsRoute,
  couponReportRoute,
  couponsRoute,
  createTenantDomainRoute,
  disableTenantRoleTemplateRoute,
  disableTenantMemberRoute,
  faqsAdminRoute,
  grantBadgeRoute,
  generateActivationCodesRoute,
  paymentAccountsRoute,
  previewTenantThemeRoute,
  publishTenantThemeRoute,
  tenantDomainsRoute,
  tenantMembersRoute,
  tenantOverviewRoute,
  tenantPermissionsRoute,
  tenantThemeRoute,
  tenantThemeTemplatesRoute,
  tenantRoleTemplatesRoute,
  tenantSecretsRoute,
  upsertTenantMemberRoute,
  upsertTenantRoleTemplateRoute,
  upsertActivationCodeRoute,
  upsertAnnouncementRoute,
  upsertAuthProviderRoute,
  upsertBadgeRoute,
  upsertBannerRoute,
  upsertCodeBatchRoute,
  upsertCouponRoute,
  upsertFaqRoute,
  updateTenantBrandingRoute,
  updateTenantSettingsRoute,
  upsertPaymentAccountRoute,
  upsertTenantSecretRoute,
} from './routes.js';

export const tenantAdminRoutes: RouteDefinition[] = [
  ['GET', '/api/tenant-admin/permissions', tenantPermissionsRoute],
  ['GET', '/api/tenant-admin/role-templates', tenantRoleTemplatesRoute],
  ['PUT', '/api/tenant-admin/role-templates', upsertTenantRoleTemplateRoute],
  ['POST', '/api/tenant-admin/role-templates/disable', disableTenantRoleTemplateRoute],
  ['GET', '/api/tenant-admin/classes', tenantClassesRoute],
  ['PUT', '/api/tenant-admin/classes', upsertTenantClassRoute],
  ['POST', '/api/tenant-admin/classes/disable', disableTenantClassRoute],
  ['GET', '/api/tenant-admin/classes/members', tenantClassMembersRoute],
  ['PUT', '/api/tenant-admin/classes/members', upsertTenantClassMemberRoute],
  ['POST', '/api/tenant-admin/classes/members/remove', removeTenantClassMemberRoute],
  ['POST', '/api/tenant-admin/classes/members/bulk-assign', bulkAssignTenantClassMembersRoute],
  ['GET', '/api/tenant-admin/students', tenantStudentsRoute],
  ['PUT', '/api/tenant-admin/students', upsertTenantStudentRoute],
  ['POST', '/api/tenant-admin/students/bulk-upsert', bulkUpsertTenantStudentsRoute],
  ['POST', '/api/tenant-admin/students/status', updateTenantStudentStatusRoute],
  ['POST', '/api/tenant-admin/students/crm-push', pushTenantStudentsToCrmRoute],
  ['GET', '/api/tenant-admin/students/notes', tenantStudentNotesRoute],
  ['PUT', '/api/tenant-admin/students/notes', upsertTenantStudentNoteRoute],
  ['GET', '/api/tenant-admin/students/followups', tenantStudentFollowupsRoute],
  ['GET', '/api/tenant-admin/students/followups/report', tenantStudentFollowupReportRoute],
  ['PUT', '/api/tenant-admin/students/followups', upsertTenantStudentFollowupRoute],
  ['GET', '/api/tenant-admin/students/supervision/rules', tenantStudentSupervisionRulesRoute],
  ['PUT', '/api/tenant-admin/students/supervision/rules', upsertTenantStudentSupervisionRuleRoute],
  ['GET', '/api/tenant-admin/students/supervision/preview', tenantStudentSupervisionPreviewRoute],
  ['POST', '/api/tenant-admin/students/supervision/generate', generateTenantStudentSupervisionRoute],
  ['GET', '/api/tenant-admin/teachers', tenantTeachersRoute],
  ['GET', '/api/tenant-admin/overview', tenantOverviewRoute],
  ['GET', '/api/tenant-admin/dashboard', tenantDashboardRoute],
  ['GET', '/api/tenant-admin/user-notifications', tenantUserNotificationsRoute],
  ['PUT', '/api/tenant-admin/branding', updateTenantBrandingRoute],
  ['PUT', '/api/tenant-admin/settings', updateTenantSettingsRoute],
  ['GET', '/api/tenant-admin/theme-templates', tenantThemeTemplatesRoute],
  ['GET', '/api/tenant-admin/theme', tenantThemeRoute],
  ['POST', '/api/tenant-admin/theme/preview', previewTenantThemeRoute],
  ['POST', '/api/tenant-admin/theme/publish', publishTenantThemeRoute],
  ['GET', '/api/tenant-admin/domains', tenantDomainsRoute],
  ['POST', '/api/tenant-admin/domains', createTenantDomainRoute],
  ['GET', '/api/tenant-admin/payment-accounts', paymentAccountsRoute],
  ['PUT', '/api/tenant-admin/payment-accounts', upsertPaymentAccountRoute],
  ['GET', '/api/tenant-admin/auth-providers', authProvidersRoute],
  ['PUT', '/api/tenant-admin/auth-providers', upsertAuthProviderRoute],
  ['GET', '/api/tenant-admin/secrets', tenantSecretsRoute],
  ['PUT', '/api/tenant-admin/secrets', upsertTenantSecretRoute],
  ['GET', '/api/tenant-admin/banners', bannersAdminRoute],
  ['PUT', '/api/tenant-admin/banners', upsertBannerRoute],
  ['GET', '/api/tenant-admin/faqs', faqsAdminRoute],
  ['PUT', '/api/tenant-admin/faqs', upsertFaqRoute],
  ['GET', '/api/tenant-admin/announcements', announcementsAdminRoute],
  ['PUT', '/api/tenant-admin/announcements', upsertAnnouncementRoute],
  ['GET', '/api/tenant-admin/badges', badgesRoute],
  ['PUT', '/api/tenant-admin/badges', upsertBadgeRoute],
  ['GET', '/api/tenant-admin/badge-grants', badgeGrantsRoute],
  ['POST', '/api/tenant-admin/badge-grants', grantBadgeRoute],
  ['GET', '/api/tenant-admin/exam-dates', tenantExamDatesRoute],
  ['PUT', '/api/tenant-admin/exam-dates', upsertTenantExamDateRoute],
  ['GET', '/api/tenant-admin/feedbacks', tenantFeedbacksRoute],
  ['GET', '/api/tenant-admin/feedbacks/report', tenantFeedbackReportRoute],
  ['POST', '/api/tenant-admin/feedbacks/status', updateTenantFeedbackStatusRoute],
  ['GET', '/api/tenant-admin/feedbacks/events', tenantFeedbackEventsRoute],
  ['GET', '/api/tenant-admin/code-batches', codeBatchesRoute],
  ['PUT', '/api/tenant-admin/code-batches', upsertCodeBatchRoute],
  ['GET', '/api/tenant-admin/activation-codes', activationCodesRoute],
  ['PUT', '/api/tenant-admin/activation-codes', upsertActivationCodeRoute],
  ['POST', '/api/tenant-admin/activation-codes/generate', generateActivationCodesRoute],
  ['GET', '/api/tenant-admin/coupons', couponsRoute],
  ['PUT', '/api/tenant-admin/coupons', upsertCouponRoute],
  ['GET', '/api/tenant-admin/coupons/redemptions', couponRedemptionsRoute],
  ['GET', '/api/tenant-admin/coupons/report', couponReportRoute],
  ['GET', '/api/tenant-admin/point-activity-tasks', pointActivityTasksRoute],
  ['PUT', '/api/tenant-admin/point-activity-tasks', upsertPointActivityTaskRoute],
  ['GET', '/api/tenant-admin/point-activity-claims', pointActivityClaimsRoute],
  ['GET', '/api/tenant-admin/point-exchange-items', pointExchangeItemsRoute],
  ['PUT', '/api/tenant-admin/point-exchange-items', upsertPointExchangeItemRoute],
  ['GET', '/api/tenant-admin/point-exchange-orders', pointExchangeOrdersRoute],
  ['GET', '/api/tenant-admin/points-risk-report', pointsRiskReportRoute],
  ['GET', '/api/tenant-admin/members', tenantMembersRoute],
  ['PUT', '/api/tenant-admin/members', upsertTenantMemberRoute],
  ['POST', '/api/tenant-admin/members/disable', disableTenantMemberRoute],
  ['GET', '/api/tenant-admin/audit-logs', auditLogsRoute],
];
