import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { Subscription } from "./entities/subscription.entity"
import { SubscriptionHistory } from "../subscription-history/entities/subscription-history.entity"
import { SubscriptionController } from "./subscription.controller"
import { SubscriptionService } from "./subscription.service"
import { SubscriptionRepository } from "./repository/subscription.repository"
import { SubscriptionHistoryRepository } from "../subscription-history/repository/subscription-history.repository"
import { AuthService } from "../auth/auth.service"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { UserLoginRepository } from "../auth/repositories/user-login.repository"
import { User } from "../users/entity/users.entity"
import { UserLogin } from "../auth/entities/user-login.entity"
import { SendSms } from "../auth/entities/send_sms.entity"
import { PasswordReset } from "../password/entities/password-resets.entity"
import { SendSmsRepository } from "../auth/repositories/send-sms.repository"
import { PasswordResetRepository } from "../password/repository/password-resets.repository"
import { IntroductionRepository } from "../introductions/repository/introductions.repository"
import { Introduction } from "../introductions/entities/introductions.entity"
import { SubscriptionPlan } from "../subscription-plans/entities/subscription-plan.entity"
import { StripeModule } from "../stripe/stripe.module"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Subscription,
      SubscriptionHistory,
      User,
      UserLogin,
      SendSms,
      PasswordReset,
      Introduction,
      SubscriptionPlan,
    ]),
    StripeModule,
  ],
  controllers: [SubscriptionController],
  providers: [
    SubscriptionService,
    SubscriptionRepository,
    SubscriptionHistoryRepository,
    AuthService,
    AuthRepository,
    UserLoginRepository,
    SendSmsRepository,
    PasswordResetRepository,
    IntroductionRepository,
  ],
  exports: [SubscriptionService, SubscriptionRepository],
})
export class SubscriptionModule {}
