import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { LeaveRequest } from "./entities/leave-request.entity"
import { LeaveRequestApprovalLog } from "./entities/leave-request-approval-log.entity"
import { LeaveRequestsService } from "./leave-requests.service"
import { LeaveRequestsController } from "./leave-requests.controller"
import { LeaveRequestRepository } from "./repositories/leave-request.repository"
import { LeaveRequestApprovalLogRepository } from "./repositories/leave-request-approval-log.repository"
import { EmployeeLeaveBalance } from "../employee-leave-balances/entities/employee-leave-balance.entity"
import { EmployeeLeaveBalanceRepository } from "../employee-leave-balances/repositories/employee-leave-balance.repository"
import { EmployeesModule } from "../employees/employees.module"
import { RolePermissionRepository } from "../role-permissions/repositories/role-permission.repository"
import { RolePermissionsService } from "../role-permissions/role-permissions.service"
import { RoleRepository } from "../role/repositories/role.repository"
import { RoleService } from "../role/role.service"
import { Role } from "../role/entities/role.entity"
import { RolePermission } from "../role-permissions/entities/role-permission.entity"
import { CompanySubscriptionRepository } from "../company/repositories/company-subscription.repository"
import { CompanySubscription } from "../company/entities/company-subscription.entity"
import { Permission } from "../permissions/entities/permission.entity"
import { PermissionRepository } from "../permissions/repositories/permission.repository"
import { Auth } from "../auth/entities/auth.entity"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { LeaveType } from "../leave-types/entities/leave-type.entity"
import { LeaveTypeRepository } from "../leave-types/repositories/leave-type.repository"
import { NotificationModule } from "../notification/notification.module"
import { CompanySetting } from "../company/entities/company-settings.entity"
import { CompanySettingsRepository } from "../company/repositories/company-settings.repository"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      LeaveRequest,
      LeaveRequestApprovalLog,
      EmployeeLeaveBalance,
      Role,
      RolePermission,
      CompanySubscription,
      Permission,
      Auth,
      LeaveType,
      CompanySetting,
    ]),
    EmployeesModule,
    NotificationModule,
  ],
  controllers: [LeaveRequestsController],
  providers: [
    LeaveRequestsService,
    LeaveRequestRepository,
    LeaveRequestApprovalLogRepository,
    EmployeeLeaveBalanceRepository,
    RoleService,
    RoleRepository,
    RolePermissionsService,
    RolePermissionRepository,
    CompanySubscriptionRepository,
    PermissionRepository,
    AuthRepository,
    LeaveTypeRepository,
    CompanySettingsRepository,
  ],
  exports: [TypeOrmModule, LeaveRequestsService, LeaveRequestRepository],
})
export class LeaveRequestsModule {}
