import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { ClientCompanyContract } from "../client-contract/entities/client-contract.entity"
import { ClientCompanyContractRepository } from "../client-contract/repositories/client-contarct.repository"
import { NotificationModule } from "../notification/notification.module"
import { TeamMember } from "../team-member/entities/team_member.entity"
import { TeamMemberRepository } from "../team-member/repositories/team_member.repository"
import { Trip } from "../trips/entities/trip.entity"
import { TripRepository } from "../trips/repositories/trip.repository"
import { CronService } from "./v1/cron.service"
import { AuthService } from "../auth/v1/auth.service"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { Auth } from "../auth/entities/auth.entity"
import { UserLoginRepository } from "../auth/repositories/user-login.repository"
import { UserOldPasswordRepository } from "../auth/repositories/old-passwords.repository"
import { RolePermissionRepository } from "../role-permission/repositories/role-permission.repository"
import { UserLogin } from "../auth/entities/user-login.entity"
import { UserOldPassword } from "../auth/entities/user-old-password.entity"
import { RolePermission } from "../role-permission/entities/role-permission.entity"
import { DriverAvailabilityRepository } from "../driver-availability/repositories/driver-availability.repository"
import { DriverAvailability } from "../driver-availability/entities/driver-availability.entity"
import { RoleRepository } from "../role/repositories/role.repository"
import { Role } from "../role/entities/role.entity"
import { InvoiceRepository } from "../invoices/repositories/invoice.repository"
import { Invoice } from "../invoices/entities/invoice.entity"
import { VehicleMaintenanceRepository } from "../vehicle-maintenance/repositories/vehicle-maintenance.repository"
import { VehicleMaintenance } from "../vehicle-maintenance/entities/vehicle-maintenance.entity"
import { FleetManagementRepository } from "../fleet-management/repositories/fleet-management.repository"
import { FleetManagement } from "../fleet-management/entities/fleet-management.entity"
import { DriverFleetHistoryRepository } from "../fleet-management/repositories/driver-fleet-history.repository"
import { DriverFleetHistory } from "../fleet-management/entities/driver-fleet-history.entity"
import { VehicleStatusRepository } from "../vehicle-status/repositories/vehicle-status.repository"
import { VehicleStatus } from "../vehicle-status/entities/vehicle-status.entity"
import { ApiLog } from "../api-log/entities/api-log.entity"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Trip,
      TeamMember,
      ClientCompanyContract,
      Auth,
      UserLogin,
      UserOldPassword,
      RolePermission,
      DriverAvailability,
      Role,
      Invoice,
      VehicleMaintenance,
      FleetManagement,
      DriverFleetHistory,
      VehicleStatus,
      ApiLog,
    ]),
    NotificationModule,
  ],
  providers: [
    CronService,
    TripRepository,
    TeamMemberRepository,
    ClientCompanyContractRepository,
    AuthService,
    AuthRepository,
    UserLoginRepository,
    UserOldPasswordRepository,
    RolePermissionRepository,
    DriverAvailabilityRepository,
    RoleRepository,
    InvoiceRepository,
    VehicleMaintenanceRepository,
    FleetManagementRepository,
    DriverFleetHistoryRepository,
    VehicleStatusRepository,
  ],
  exports: [CronService],
})
export class CronModule {}
