import { Module } from "@nestjs/common"; import { FreebitModule } from "@bff/integrations/freebit/freebit.module.js"; import { WhmcsModule } from "@bff/integrations/whmcs/whmcs.module.js"; import { SalesforceModule } from "@bff/integrations/salesforce/salesforce.module.js"; import { MappingsModule } from "@bff/modules/id-mappings/mappings.module.js"; import { SftpModule } from "@bff/integrations/sftp/sftp.module.js"; import { SecurityModule } from "@bff/core/security/security.module.js"; import { SimUsageStoreService } from "../sim-usage-store.service.js"; import { SubscriptionsService } from "../subscriptions.service.js"; import { SimManagementService } from "../sim-management.service.js"; // SimController is registered in SubscriptionsModule to ensure route order // Import all SIM management services import { SimOrchestratorService } from "./services/sim-orchestrator.service.js"; import { SimDetailsService } from "./services/sim-details.service.js"; import { SimUsageService } from "./services/sim-usage.service.js"; import { SimTopUpService } from "./services/sim-topup.service.js"; import { SimTopUpPricingService } from "./services/sim-topup-pricing.service.js"; import { SimPlanService } from "./services/sim-plan.service.js"; import { SimCancellationService } from "./services/sim-cancellation.service.js"; import { EsimManagementService } from "./services/esim-management.service.js"; import { SimValidationService } from "./services/sim-validation.service.js"; import { SimNotificationService } from "./services/sim-notification.service.js"; import { SimBillingService } from "./services/sim-billing.service.js"; import { SimScheduleService } from "./services/sim-schedule.service.js"; import { SimManagementQueueService } from "./queue/sim-management.queue.js"; import { SimManagementProcessor } from "./queue/sim-management.processor.js"; import { SimCallHistoryService } from "./services/sim-call-history.service.js"; import { SimCallHistoryParserService } from "./services/sim-call-history-parser.service.js"; import { SimCallHistoryFormatterService } from "./services/sim-call-history-formatter.service.js"; import { ServicesModule } from "@bff/modules/services/services.module.js"; import { NotificationsModule } from "@bff/modules/notifications/notifications.module.js"; import { VoiceOptionsModule, VoiceOptionsService } from "@bff/modules/voice-options/index.js"; import { WorkflowModule } from "@bff/modules/shared/workflow/index.js"; @Module({ imports: [ FreebitModule, WhmcsModule, SalesforceModule, MappingsModule, ServicesModule, SftpModule, NotificationsModule, SecurityModule, VoiceOptionsModule, WorkflowModule, ], // SimController is registered in SubscriptionsModule to ensure route order // (more specific routes like :id/sim must be registered before :id) controllers: [], providers: [ // Core services that the SIM services depend on SimUsageStoreService, SubscriptionsService, SimManagementService, // SIM management services SimValidationService, SimNotificationService, SimDetailsService, SimUsageService, SimTopUpService, SimTopUpPricingService, SimPlanService, SimCancellationService, EsimManagementService, SimOrchestratorService, SimBillingService, SimScheduleService, SimManagementQueueService, SimManagementProcessor, // Call history services (split for maintainability) SimCallHistoryParserService, SimCallHistoryFormatterService, SimCallHistoryService, // Backwards compatibility alias: SimVoiceOptionsService -> VoiceOptionsService { provide: "SimVoiceOptionsService", useExisting: VoiceOptionsService, }, ], exports: [ SimOrchestratorService, // Export individual services in case they're needed elsewhere SimDetailsService, SimUsageService, SimTopUpService, SimTopUpPricingService, SimPlanService, SimCancellationService, EsimManagementService, SimValidationService, SimNotificationService, SimBillingService, SimScheduleService, SimManagementQueueService, SimCallHistoryService, // VoiceOptionsService is exported from VoiceOptionsModule // Backwards compatibility: re-export the token "SimVoiceOptionsService", ], }) export class SimManagementModule {}