import { Module } from "@nestjs/common"
import { CustomersService } from "./v1/customers.service"
import { CustomersController } from "./v1/customers.controller"
import { TypeOrmModule } from "@nestjs/typeorm"
import { AuthService } from "../auth/v1/auth.service"
import { AuthRepository } from "../auth/repositories/auth.repository"
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 { Auth } from "../auth/entities/auth.entity"
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 { CustomerRepository } from "./repositories/customers.repository"
import { Customer } from "./entities/customer.entity"
import { ClientCompanyRepository } from "../clients-companies/repositories/clients-companies.repository"
import { ClientsCompany } from "../clients-companies/entities/clients-company.entity"
import { ClientCompanyContactRepository } from "../client-company-contacts/repositories/client-company-contacts.repository"
import { ClientCompanyContact } from "../client-company-contacts/entities/client-company-contact.entity"
import { CityRepository } from "../city/repositories/city.repository"
import { StateRepository } from "../state/repositories/state.repository"
import { CountryRepository } from "../country/repositories/country.repository"
import { City } from "../city/entities/city.entity"
import { State } from "../state/entities/state.entity"
import { Country } from "../country/entities/country.entity"
import { HospitalRepository } from "../hospitals/repositories/hospital.repository"
import { Hospital } from "../hospitals/entities/hospital.entity"
import { TeamMemberRepository } from "../team-member/repositories/team_member.repository"
import { TeamMember } from "../team-member/entities/team_member.entity"
import { RoleRepository } from "../role/repositories/role.repository"
import { Role } from "../role/entities/role.entity"
import { PhoneNumbersRepository } from "./repositories/phone-numbers.repository"
import { CustomerPhoneNumbers } from "./entities/customer_phone_number.entity"
import { RatingRepository } from "../rating/repositories/rating.repository"
import { Rating } from "../rating/entities/rating.entity"
import { VehicleRepository } from "../vehicle-type/repositories/vehicle-type.repository"
import { VehicleType } from "../vehicle-type/entities/vehicle-type.entity"
import { NotificationModule } from "../notification/notification.module"
import { CustomerTagRepository } from "../customers-tags/repositories/customer_tags.repository"
import { CustomerTag } from "../customers-tags/entities/customer_tags.entity"
import { CustomerLoginRepository } from "./repositories/customer-login.repository"
import { CustomerLogin } from "./entities/customer_login.entity"
import { CustomerTreatmentPlanRepository } from "../customer-treatment-plan/repositories/customer_treatment_plan.repository"
import { CustomerTreatmentPlan } from "../customer-treatment-plan/entities/customer_treatment_plan.entity"
import { CustomerEpisode } from "./entities/customer_episode.entity"
import { EpisodeLog } from "./entities/episode_log.entity"
import { CustomerEpisodeRepository } from "./repositories/customer-episode.repository"
import { EpisodeLogRepository } from "./repositories/episode-log.repository"
import { CloudflareR2Service } from "../../utils/cloudflare-r2.service"
import { TripLogsRepository } from "../trips/repositories/trip-logs.repository"
import { TripLog } from "../trips/entities/trip-logs.entity"
import { Trip } from "../trips/entities/trip.entity"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Customer,
      Auth,
      UserLogin,
      UserOldPassword,
      RolePermission,
      ClientsCompany,
      ClientCompanyContact,
      City,
      State,
      Country,
      Hospital,
      TeamMember,
      Role,
      CustomerPhoneNumbers,
      Rating,
      VehicleType,
      CustomerTag,
      CustomerLogin,
      CustomerTreatmentPlan,
      CustomerEpisode,
      EpisodeLog,
      TripLog,
      Trip,
    ]),
    NotificationModule,
  ],
  controllers: [CustomersController],
  providers: [
    CustomerRepository,
    CustomersService,
    AuthService,
    AuthRepository,
    UserLoginRepository,
    UserOldPasswordRepository,
    RolePermissionRepository,
    ClientCompanyRepository,
    ClientCompanyContactRepository,
    CityRepository,
    StateRepository,
    CountryRepository,
    HospitalRepository,
    TeamMemberRepository,
    RoleRepository,
    PhoneNumbersRepository,
    RatingRepository,
    VehicleRepository,
    CustomerTagRepository,
    CustomerLoginRepository,
    CustomerTreatmentPlanRepository,
    CustomerEpisodeRepository,
    EpisodeLogRepository,
    CloudflareR2Service,
    TripLogsRepository,
  ],
})
export class CustomersModule {}
