import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminController } from './admin.controller';
import { AdminService } from './admin.services';
import { AdminRepository } from './admin.repository';
import { Constants } from '../../common/constants';
import { SendMailService } from '../../common/config/send-mail.service';
import { RecaptchaService } from '../../common/config/recaptcha.service';
import { UsersModule } from 'src/common/services/users/users.module';
import { CommonModule } from '../common/common.module';

// entities
import { Users } from '../../entities/users.entity';
import { FileManagers } from '../../entities/file-managers.entity';
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 { TiktokModule } from 'src/common/services/tiktok/tiktok.module';
import { SocialMediaPosts } from 'src/entities/social-media-posts.entity';
import { CampaignServiceForAdmin } from './campaign/campaign.services';
import { CanpaignModule } from '../campaign/campaign.module';
import { CampaignInfluencer } from 'src/entities/campaign_influencer.entity';
import { CampaignControllerForAdmin } from './campaign/campaign.controller';
import { BrandFavorite } from 'src/entities/brand-favorit.entity';
import { CampaignInfluencerBookmarks } from 'src/entities/campaign_influencer_bookmark.entity';
import { CampaignPayment } from 'src/entities/campaign_payment.entity';
import { CampaignPaymentHistory } from 'src/entities/campaign_payment_history.entity';
import { Posts } from 'src/entities/posts.entity';
import { CampaignRecommended } from 'src/entities/campaign_recommended.entity';
import { Campaign } from 'src/entities/campaign.entity';
import { SubscriptionHistory } from 'src/entities/subscription-history.entity';
import { Categories } from 'src/entities/categories.entity';
import { CurrencyRate } from 'src/entities/currency_rates.entity';
import { EncryptionModule } from 'src/common/services/encryption/encryption.module';
import { Plan } from 'src/entities/plan.entity';
import { MarketingCampaignController } from './marketing-campaign/marketing-campaign.controller';
import { MarketingCampaignService } from './marketing-campaign/marketing-campaign.services';

@Module({
  imports: [
    UsersModule,
    CommonModule,
    TypeOrmModule.forFeature([Users, Plan, FileManagers, SocialMediaPosts, BrandFavorite, CampaignInfluencerBookmarks, CampaignPayment,
      CampaignPaymentHistory, Posts, CampaignRecommended, Campaign, SubscriptionHistory, Categories, CurrencyRate, CampaignInfluencer]),
    YoutubesModule,
    FacebookModule,
    InstagramModule,
    TiktokModule,
    CanpaignModule,
    EncryptionModule
  ],
  controllers: [AdminController, CampaignControllerForAdmin, MarketingCampaignController],
  providers: [AdminService, AdminRepository, SendMailService, RecaptchaService, CampaignServiceForAdmin, MarketingCampaignService],
})
export class AdminModule { }
