import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { HttpModule } from '@nestjs/axios';
import { JwtModule } from '@nestjs/jwt';
import { Constants } from '../../common/constants';
import { PassportModule } from '@nestjs/passport';
import { SendMailService } from '../../common/config/send-mail.service';
import { RecaptchaService } from '../../common/config/recaptcha.service';

// import { CommonStrategy } from './strategies/common.strategy';
// import { CommonGuard } from '../auth/guards/common.guard';

// import { UserStrategy } from './strategies/brand.strategy';
// import { UserGuard } from './guards/brand.guard';
import { BrandStrategy } from '../auth/strategies/brand.strategy';
import { BrandGuard } from '../auth/guards/brand.guard';

// import { AdminStrategy } from './strategies/admin.strategy';
// import { AdminGuard } from './guards/admin.guard';

// entities
import { Users } from '../../entities/users.entity';
import { InfluencerRegisterController } from './influencer-register.controller';
import { InfluencerRegisterService } from './influencer-register.services';
import { InfluencerRegisterRepository } from './influencer-register.repository';
import { YoutubesModule } from 'src/common/services/youtube/youtube.module';
import { FacebookModule } from 'src/common/services/facebook/facebook.module';
import { InstagramModule } from 'src/common/services/instagram/instagram.module';
import { InfluencerCategory } from 'src/entities/influencer-caregories.entity';
import { Categories } from 'src/entities/categories.entity';
import { TiktokModule } from 'src/common/services/tiktok/tiktok.module';
import { SocialMedias } from 'src/entities/social-medias.entity';
import { Settings } from '../../entities/settings.entity';
import { Keywords } from 'src/entities/keywords.entity';
import { UserKeywords } from 'src/entities/user-keywords.entity';
import { XiaohongshuModule } from 'src/common/services/xiaohongshu/xiaohongshu.module';
import { BankDetails } from 'src/entities/bank-details.entity';
import { UsersModule } from 'src/common/services/users/users.module';
import { EncryptionModule } from 'src/common/services/encryption/encryption.module';
import { ErrorLogModule } from 'src/common/services/error-logs/error-log.module';
import { ApifyModule } from 'src/common/services/apify/apify.module';
import { CommonModule } from '../common/common.module';
import { CategoryTranslation } from 'src/entities/category-translations.entity';
import { KeywordTranslation } from 'src/entities/keyword-translations.entity';
import { Campaign } from 'src/entities/campaign.entity';
import { Posts } from 'src/entities/posts.entity';
import { WhatsAppModule } from 'src/common/services/whatsapp/whatsapp.module';
import { CanpaignModule } from '../campaign/campaign.module';

@Module({
  imports: [
    JwtModule.register({
      secret: Constants.jwt_secret,
      signOptions: { expiresIn: '7d' },
    }),
    UsersModule,
    PassportModule,
    EncryptionModule,
    HttpModule,
    TypeOrmModule.forFeature([Campaign, Posts, Users, InfluencerCategory, Categories, SocialMedias, Settings, Keywords, UserKeywords, BankDetails, CategoryTranslation, KeywordTranslation]),
    YoutubesModule,
    FacebookModule,
    InstagramModule,
    TiktokModule,
    XiaohongshuModule,
    ErrorLogModule,
    ApifyModule,
    CommonModule,
    WhatsAppModule,
    CanpaignModule,
  ],
  controllers: [InfluencerRegisterController],
  providers: [InfluencerRegisterService, InfluencerRegisterRepository, BrandStrategy, BrandGuard, SendMailService, RecaptchaService],
  exports: [InfluencerRegisterRepository, InfluencerRegisterService]
})
export class InfluencerRegisterModule { }
