import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { ScheduleModule } from "@nestjs/schedule"
import { CronService } from "./cron.service"
// import { CronController } from "./cron.controller" // Commented out to avoid auth dependencies in script mode
import { PayrollModule } from "../payroll/payroll.module"
import { EmployeesModule } from "../employees/employees.module"
import { Company } from "../company/entities/company.entity"
import { CompanyRepository } from "../company/repositories/company.repository"
import { CompanySubscription } from "../company/entities/company-subscription.entity"
import { CompanySubscriptionRepository } from "../company/repositories/company-subscription.repository"
import { CompanyProfile } from "../company/entities/company-profile.entity"
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository"
import { Employee } from "../employees/entities/employee.entity"
import { EmployeeRepository } from "../employees/repositories/employee.repository"
import { Project } from "../projects/entities/project.entity"
import { ProjectRepository } from "../projects/repositories/project.repository"
import { Auth } from "../auth/entities/auth.entity"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { TimeTracking } from "../time-tracking/entities/time-tracking.entity"
import { TimeTrackingRepository } from "../time-tracking/repositories/time-tracking.repository"
import { ClockInRecord } from "../time-tracking/entities/clock-in-record.entity"
import { ClockInRecordRepository } from "../time-tracking/repositories/clock-in-record.repository"
import { LeaveRequest } from "../leave-requests/entities/leave-request.entity"
import { LeaveRequestRepository } from "../leave-requests/repositories/leave-request.repository"
import { PartyPayment } from "../party-types/entities/party-payment.entity"
import { PartyPaymentHistory } from "../party-types/entities/party-payment-history.entity"
import { NotificationModule } from "../notification/notification.module"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Company,
      CompanySubscription,
      CompanyProfile,
      Employee,
      Project,
      Auth,
      TimeTracking,
      ClockInRecord,
      LeaveRequest,
      PartyPayment,
      PartyPaymentHistory,
    ]),
    ScheduleModule.forRoot(),
    PayrollModule,
    EmployeesModule,
    NotificationModule,
  ],
  controllers: [],
  providers: [
    CronService,
    CompanyRepository,
    CompanySubscriptionRepository,
    CompanyProfileRepository,
    EmployeeRepository,
    ProjectRepository,
    AuthRepository,
    TimeTrackingRepository,
    ClockInRecordRepository,
    LeaveRequestRepository,
  ],
  exports: [CronService],
})
export class CronModule {}
