import { Module } from '@nestjs/common';
import { SoapModule, SoapModuleOptions } from 'nestjs-soap';
import { SamtService } from './samt.service';
import { ConfigurationService } from '../../config/configuration.service';
import { ConfigurationModule } from '../../config/configuration.module';

@Module({
  imports: [
    SoapModule.forRootAsync({
      clientName: 'SAMT_SOAP_CLIENT',
      imports: [ConfigurationModule],
      inject: [ConfigurationService],
      useFactory: async (
        configService: ConfigurationService,
      ): Promise<SoapModuleOptions> => ({
        clientName: 'SAMT_SOAP_CLIENT',
        clientOptions: { forceSoap12Headers: false },
        uri: 'https://pub-cix.ntsw.ir/services/TireEngineOilService?wsdl',
        auth: {
          type: 'basic',
          username: configService.thirdParty.samtHeaderUsername,
          password: configService.thirdParty.samtHeaderPassword,
        },
      }),
    }),
  ],
  providers: [SamtService],
  exports: [SamtService],
})
export class SamtModule {}
