import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { StripeController } from "./stripe.controller"
import { StripeService } from "./stripe.service"
import { StripeSettingsModule } from "../stripe-settings/stripe-settings.module"
import { Subscription } from "../subscriptions/entities/subscription.entity"
import { Transaction } from "../transactions/entities/transaction.entity"
import { SubscriptionPlan } from "../subscription-plans/entities/subscription-plan.entity"
import { WebhookLog } from "../webhook-logs/entities/webhook-log.entity"
import { SubscriptionHistory } from "../subscription-history/entities/subscription-history.entity"
import { SubscriptionRepository } from "../subscriptions/repository/subscription.repository"
import { TransactionRepository } from "../transactions/repository/transaction.repository"
import { SubscriptionPlanRepository } from "../subscription-plans/repository/subscription-plan.repository"
import { WebhookLogRepository } from "../webhook-logs/repository/webhook-log.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"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Subscription,
      Transaction,
      SubscriptionPlan,
      WebhookLog,
      SubscriptionHistory,
      User,
      UserLogin,
      SendSms,
      PasswordReset,
      Introduction,
    ]),
    StripeSettingsModule,
  ],
  controllers: [StripeController],
  providers: [
    StripeService,
    SubscriptionRepository,
    TransactionRepository,
    SubscriptionPlanRepository,
    WebhookLogRepository,
    SubscriptionHistoryRepository,
    AuthService,
    AuthRepository,
    UserLoginRepository,
    SendSmsRepository,
    PasswordResetRepository,
    IntroductionRepository,
  ],
  exports: [StripeService],
})
export class StripeModule {}
