import { forwardRef, Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Constants } from '../../common/constants';

import { CommonController } from './common.controller';
import { CommonService } from './common.services';
import { CommonRepository } from './common.repository';

// entities
import { Users } from '../../entities/users.entity';
import { BrandIndustries } from '../../entities/brand-industries.entity';
import { Categories } from '../../entities/categories.entity';
import { FileManagers } from '../../entities/file-managers.entity';
import { FileLogs } from '../../entities/file-logs.entity';
import { InfluencerCategory } from '../../entities/influencer-caregories.entity';
import { SocialMedias } from '../../entities/social-medias.entity';
import { InstagramProfiles } from '../../entities/instagram-profile.entity';
import { FacebookPages } from '../../entities/facebook-pages.entity';
import { YoutubeChannels } from '../../entities/youtube-channel.entity';
import { TikTokProfiles } from '../../entities/tiktok-profile.entity';
import { XiaohongshuProfiles } from '../../entities/xiaohongshu-profile.entity';
import { Countries } from 'src/entities/countries.entity';
import { CurrencyRate } from 'src/entities/currency_rates.entity';
import { NotificationModule } from 'src/common/services/notification/notification.module';
import { SocialMediaPosts } from 'src/entities/social-media-posts.entity';
import { InstagramMedias } from 'src/entities/instagram-medias.entity';
import { EncryptionModule } from 'src/common/services/encryption/encryption.module';
import { WhatsAppModule } from 'src/common/services/whatsapp/whatsapp.module';
import { UserPermissions } from 'src/entities/user-permissions.entity';
import { StripeModule } from 'src/common/services/payment-gateway/stripe/stripe.module';
import { ErrorReport } from 'src/entities/error-report.entity';
import { CategoryTranslation } from 'src/entities/category-translations.entity';
import { KeywordTranslation } from 'src/entities/keyword-translations.entity';
import { Keywords } from 'src/entities/keywords.entity';
import { CanpaignModule } from '../campaign/campaign.module';

@Module({
  imports: [NotificationModule, EncryptionModule, StripeModule, WhatsAppModule,
    forwardRef(() => CanpaignModule),
    TypeOrmModule.forFeature([Users, ErrorReport, UserPermissions, BrandIndustries, Categories, FileManagers, FileLogs, InfluencerCategory, SocialMedias, InstagramProfiles, FacebookPages, YoutubeChannels, TikTokProfiles, XiaohongshuProfiles, Countries, CurrencyRate, SocialMediaPosts, InstagramMedias, CategoryTranslation, KeywordTranslation, Keywords])
  ],
  controllers: [CommonController],
  providers: [CommonService, CommonRepository],
  exports: [CommonService]
})
export class CommonModule { }
