import { Global, Module } from "@nestjs/common"
import { AuthService } from "./auth.service"
import { AuthController } from "./auth.controller"
import { UserLoginRepository } from "./repositories/user-login.repository"
import { TypeOrmModule } from "@nestjs/typeorm"
import { Auth } from "./entities/auth.entity"
import { AuthRepository } from "./repositories/auth.repository"
import { UserLogin } from "./entities/user-login.entity"
import { ApiLog } from "../api-log/entities/api-log.entity"
import { UserBlacklistedTokenRepository } from "./repositories/user-blacklisted-token.repository"
import { BlacklistedToken } from "./entities/user-blacklisted-token.entity"
import { PasswordSetupTokenRepository } from "./repositories/password-setup-token.repository"
import { PasswordSetupToken } from "./entities/password-setup-token.entity"
import { EmployeeRepository } from "../employees/repositories/employee.repository"
import { Employee } from "../employees/entities/employee.entity"
import { CompanySubscription } from "../company/entities/company-subscription.entity"
import { CompanySubscriptionRepository } from "../company/repositories/company-subscription.repository"
import { RolePermissionsModule } from "../role-permissions/role-permissions.module"
import { RoleModule } from "../role/role.module"
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository"
import { CompanyProfile } from "../company/entities/company-profile.entity"

@Global()
@Module({
  imports: [
    TypeOrmModule.forFeature([
      Auth,
      UserLogin,
      ApiLog,
      BlacklistedToken,
      PasswordSetupToken,
      Employee,
      CompanySubscription,
      CompanyProfile,
    ]),
    RolePermissionsModule,
    RoleModule,
  ],
  controllers: [AuthController],
  providers: [
    AuthRepository,
    AuthService,
    UserLoginRepository,
    UserBlacklistedTokenRepository,
    PasswordSetupTokenRepository,
    EmployeeRepository,
    CompanySubscriptionRepository,
    CompanyProfileRepository,
  ],
  exports: [
    AuthRepository,
    AuthService,
    UserLoginRepository,
    UserBlacklistedTokenRepository,
    PasswordSetupTokenRepository,
  ],
})
export class AuthModule {}
