import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { TypeOrmModule } from '@nestjs/typeorm';

import { ActivityLogsModule } from '../activity-logs/activity-logs.module';
import { Agency } from '../agencies/entities/agency.entity';
import { Booking } from '../bookings/entities/booking.entity';
import { Payment } from '../payments/entities/payment.entity';
import { Vehicle } from '../vehicles/entities/vehicle.entity';

import { DocumentAiService } from './ai/document-ai.service';
import { DocumentOcrService } from './ocr/document-ocr.service';
import { DocumentPdfService } from './document-pdf.service';
import {
  DocumentsController,
  PublicDocumentsController,
} from './documents.controller';
import { DocumentsService } from './documents.service';
import { DocumentEntity } from './entities/document.entity';
import { PrintLayout } from './entities/print-layout.entity';
import { CarbonlessPrintPdfService } from './pdf/carbonless-print-pdf.service';
import { InvoicePdfService } from './pdf/invoice-pdf.service';
import { PaymentReceiptPdfService } from './pdf/payment-receipt-pdf.service';
import { PremiumContractPdfService } from './pdf/premium-contract-pdf.service';
import { ThermalTicketPdfService } from './pdf/thermal-ticket-pdf.service';
import { VehicleCheckPdfService } from './pdf/vehicle-check-pdf.service';
import { PrintTemplateService } from './templates/print-template.service';

@Module({
  imports: [
    TypeOrmModule.forFeature([
      DocumentEntity,
      PrintLayout,
      Booking,
      Payment,
      Vehicle,
      Agency,
    ]),

    ActivityLogsModule,

    JwtModule.register({
      secret: process.env.JWT_SECRET || 'super-secret-jwt-key',
      signOptions: {
        expiresIn: '7d',
      },
    }),
  ],

  controllers: [
  DocumentsController,
  PublicDocumentsController,
],

  providers: [
    DocumentsService,
    DocumentPdfService,
    PremiumContractPdfService,
    InvoicePdfService,
    PaymentReceiptPdfService,
    VehicleCheckPdfService,
    CarbonlessPrintPdfService,
    ThermalTicketPdfService,
    DocumentOcrService,
    DocumentAiService,
    PrintTemplateService,
  ],
})
export class DocumentsModule {}