import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { Auth } from "../../../modules/auth/entities/auth.entity"
import { AuthModule } from "../../../modules/auth/auth.module"
import { AdminSeedService } from "./admin-seed.service"
import { AuthService } from "../../../modules/auth/auth.service"
import { UserLoginRepository } from "../../../modules/auth/repositories/user-login.repository"
import { Role } from "../../../modules/role/entities/role.entity"
import { AuthRepository } from "../../../modules/auth/repositories/auth.repository"
import { UserLogin } from "../../../modules/auth/entities/user-login.entity"
import { Category } from "../../../modules/categories/entities/category.entity"
import { UserBlacklistedTokenRepository } from "src/modules/auth/repositories/user-blacklisted-token.repository"
import { BlacklistedToken } from "src/modules/auth/entities/user-blacklisted-token.entity"
import { EmployeeRepository } from "src/modules/employees/repositories/employee.repository"
import { Employee } from "src/modules/employees/entities/employee.entity"
import { EmployeeInformation } from "src/modules/employees/entities/employee-information.entity"
import { Department } from "src/modules/departments/entities/department.entity"
import { Company } from "src/modules/company/entities/company.entity"
import { RolePermissionsService } from "src/modules/role-permissions/role-permissions.service"
import { RolePermissionRepository } from "src/modules/role-permissions/repositories/role-permission.repository"
import { RolePermission } from "src/modules/role-permissions/entities/role-permission.entity"
import { RoleService } from "src/modules/role/role.service"
import { RoleRepository } from "src/modules/role/repositories/role.repository"
import { PermissionsService } from "src/modules/permissions/permissions.service"
import { PermissionRepository } from "src/modules/permissions/repositories/permission.repository"
import { Permission } from "src/modules/permissions/entities/permission.entity"
import { CompanySubscriptionRepository } from "src/modules/company/repositories/company-subscription.repository"
import { CompanySubscription } from "src/modules/company/entities/company-subscription.entity"
import { PasswordSetupToken } from "src/modules/auth/entities/password-setup-token.entity"
import { PasswordSetupTokenRepository } from "src/modules/auth/repositories/password-setup-token.repository"
import { CompanyProfileRepository } from "src/modules/company/repositories/company-profile.repository"
import { CompanyProfile } from "src/modules/company/entities/company-profile.entity"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Auth,
      Role,
      UserLogin,
      Category,
      BlacklistedToken,
      Employee,
      EmployeeInformation,
      Department,
      Company,
      RolePermission,
      Permission,
      CompanySubscription,
      PasswordSetupToken,
      CompanyProfile,
    ]),
    AuthModule,
  ],
  providers: [
    AdminSeedService,
    AuthService,
    UserLoginRepository,
    AuthRepository,
    UserBlacklistedTokenRepository,
    PasswordSetupTokenRepository,
    EmployeeRepository,
    RolePermissionsService,
    RolePermissionRepository,
    RoleService,
    RoleRepository,
    PermissionsService,
    PermissionRepository,
    CompanySubscriptionRepository,
    AuthRepository,
    UserBlacklistedTokenRepository,
    EmployeeRepository,
    RolePermissionsService,
    RolePermissionRepository,
    RoleService,
    RoleRepository,
    PermissionsService,
    PermissionRepository,
    CompanySubscriptionRepository,
    CompanyProfileRepository,
  ],
  exports: [AdminSeedService],
})
export class AdminSeedModule {}
