import { Module } from "@nestjs/common"
import { ConfigModule } from "@nestjs/config"
import { TripSocketGateway } from "./trip-socket.gateway"
import { TripsService } from "../trips/v1/trips.service"
import { AuthService } from "../auth/v1/auth.service"
import { TripTypeRepository } from "../trips/repositories/trip-type.repository"
import { TripRepository } from "../trips/repositories/trip.repository"
import { ClientCompanyRepository } from "../clients-companies/repositories/clients-companies.repository"
import { ClientCompanyContactRepository } from "../client-company-contacts/repositories/client-company-contacts.repository"
import { CustomerRepository } from "../customers/repositories/customers.repository"
import { HospitalRepository } from "../hospitals/repositories/hospital.repository"
import { AddOnRepository } from "../add-ons/repositories/add-ons.repository"
import { TripFleetRepository } from "../trips/repositories/trip-fleet-repository"
import { FleetManagementService } from "../fleet-management/v1/fleet-management.service"
import { VehicleStatusService } from "../vehicle-status/v1/vehicle-status.service"
import { TripBabySeatRepository } from "../trips/repositories/trip-baby-repository"
import { FleetManagementRepository } from "../fleet-management/repositories/fleet-management.repository"
import { EscortRepository } from "../escorts/repositories/escort.repository"
import { TripCancelRepository } from "../trips/repositories/trip-cancel-repository"
import { NotificationService } from "../notification/v1/notification.service"
import { UserLoginRepository } from "../auth/repositories/user-login.repository"
import { CityRepository } from "../city/repositories/city.repository"
import { PricingPlanRepository } from "../plans/repositories/plan.repository"
import { ClientCompanyContractRepository } from "../client-contract/repositories/client-contarct.repository"
import { TripAddOnsPricingRepository } from "../trips/repositories/trip-addons-pricing.repository"
import { TripServicePricingRepository } from "../trips/repositories/trips-service-pricing.repository"
import { TripTrackingRepository } from "../trips/repositories/trip-tracking.repository"
import { TypeOrmModule } from "@nestjs/typeorm"
import { Trip } from "../trips/entities/trip.entity"
import { FleetManagement } from "../fleet-management/entities/fleet-management.entity"
import { Escort } from "../escorts/entities/escort.entity"
import { TeamMember } from "../team-member/entities/team_member.entity"
import { Auth } from "../auth/entities/auth.entity"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { UserOldPasswordRepository } from "../auth/repositories/old-passwords.repository"
import { RolePermissionRepository } from "../role-permission/repositories/role-permission.repository"
import { TripType } from "../trips/entities/trip-type.entity"
import { ClientsCompany } from "../clients-companies/entities/clients-company.entity"
import { ClientCompanyContact } from "../client-company-contacts/entities/client-company-contact.entity"
import { Customer } from "../customers/entities/customer.entity"
import { Hospital } from "../hospitals/entities/hospital.entity"
import { AddOn } from "../add-ons/entities/add-ons.entity"
import { TripFleetAssignment } from "../trips/entities/fleet-trip-management.entity"
import { VehicleModelRepository } from "../vehicle-model/repositories/vehicle-model.repository"
import { VehicleManufacturer } from "../vehicle-manufacturer/entities/vehicle-manufacturer.entity"
import { VehicleManufacturerRepository } from "../vehicle-manufacturer/repositories/vehicle-manufacturer.repository"
import { DriverFleetHistoryRepository } from "../fleet-management/repositories/driver-fleet-history.repository"
import { VehicleStatusRepository } from "../vehicle-status/repositories/vehicle-status.repository"
import { TripBabySeat } from "../trips/entities/trip-baby-seat.entity"
import { TripCancellation } from "../trips/entities/trip-cancellations.entity"
import { Notification } from "../notification/entities/notification.entity"
import { CustomerNotification } from "../notification/entities/customer-notification.entity"
import { NotificationRepository } from "../notification/repositories/notification.repository"
import { CustomerNotificationRepository } from "../notification/repositories/customer_notification.repository"
import { FirebaseNotificationService } from "../notification/v1/firebase-notification.service"
import { CustomerLoginRepository } from "../customers/repositories/customer-login.repository"
import { CustomerLogin } from "../customers/entities/customer_login.entity"
import { UserLogin } from "../auth/entities/user-login.entity"
import { City } from "../city/entities/city.entity"
import { Plan } from "../plans/entities/plan.entity"
import { ClientCompanyContract } from "../client-contract/entities/client-contract.entity"
import { TripAddonsPricing } from "../trips/entities/trip-addons-pricing.entity"
import { TripServicePricing } from "../trips/entities/trip-service-pricing.entity"
import { TripTracking } from "../trips/entities/trip-tracking.entity"
import { UserOldPassword } from "../auth/entities/user-old-password.entity"
import { RolePermission } from "../role-permission/entities/role-permission.entity"
import { VehicleModel } from "../vehicle-model/entities/vehicle-model.entity"
import { DriverFleetHistory } from "../fleet-management/entities/driver-fleet-history.entity"
import { VehicleStatus } from "../vehicle-status/entities/vehicle-status.entity"
import { TripBasePricingRepository } from "../trips/repositories/trip-base-price.repository"
import { VehiclePricingRepository } from "../vehicle-pricing/repositories/vehicle-pricing.repository"
import { VehiclePricing } from "../vehicle-pricing/entities/vehicle-pricing.entity"
import { MeetAndGreetPricingRepository } from "../meet-greet-pricing/repositories/meet-greet-pricing.repository"
import { MeetAndGreetPricing } from "../meet-greet-pricing/entities/meet-greet-pricing.entity"
import { TripBasePricing } from "../trips/entities/trip-base-pricing.entity"
import { ChatMessage } from "../chat/entities/chat-message.entity"
import { ChatRoom } from "../chat/entities/chat-room.entity"
import { ChatParticipant } from "../chat/entities/chat-participant.entity"
import { ChatMessageRepository } from "../chat/repositories/chat-message.repository"
import { ChatRoomRepository } from "../chat/repositories/chat-room.repository"
import { ChatParticipantRepository } from "../chat/repositories/chat-participant.repository"
import { RoleRepository } from "../role/repositories/role.repository"
import { TeamMemberRepository } from "../team-member/repositories/team_member.repository"
import { Role } from "../role/entities/role.entity"
import { CustomersService } from "../customers/v1/customers.service"
import { StateRepository } from "../state/repositories/state.repository"
import { State } from "../state/entities/state.entity"
import { CountryRepository } from "../country/repositories/country.repository"
import { Country } from "../country/entities/country.entity"
import { CustomerTagRepository } from "../customers-tags/repositories/customer_tags.repository"
import { CustomerTag } from "../customers-tags/entities/customer_tags.entity"
import { PhoneNumbersRepository } from "../customers/repositories/phone-numbers.repository"
import { CustomerPhoneNumbers } from "../customers/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 { CustomerEpisode } from "../customers/entities/customer_episode.entity"
import { EpisodeLog } from "../customers/entities/episode_log.entity"
import { CustomerEpisodeRepository } from "../customers/repositories/customer-episode.repository"
import { EpisodeLogRepository } from "../customers/repositories/episode-log.repository"
import { AddOnsPricingRepository } from "../add-ons-pricing/repositories/add-ons-pricing.repository"
import { AddOnsPricing } from "../add-ons-pricing/entities/add-ons-pricing.entity"
import { CloudflareR2Service } from "src/utils/cloudflare-r2.service"
import { TripLogsRepository } from "../trips/repositories/trip-logs.repository"
import { TripLog } from "../trips/entities/trip-logs.entity"
import { InvoiceTripRepository } from "../invoices/repositories/trip-invoice.repository"
import { InvoiceTrips } from "../invoices/entities/trip-invoice.entity"
import { TripTimelineRepository } from "../trips/repositories/trip-timeline.repository"
import { TripTimelineHistory } from "../trips/entities/trip-timeline.entity"

@Module({
  imports: [
    ConfigModule,
    TypeOrmModule.forFeature([
      Trip,
      FleetManagement,
      Escort,
      TeamMember,
      Auth,
      TripType,
      ClientsCompany,
      ClientCompanyContact,
      Customer,
      Hospital,
      AddOn,
      TripFleetAssignment,
      TripBabySeat,
      TripCancellation,
      Notification,
      CustomerNotification,
      CustomerLogin,
      UserLogin,
      City,
      Plan,
      ClientCompanyContract,
      TripAddonsPricing,
      TripServicePricing,
      TripTracking,
      UserOldPassword,
      RolePermission,
      VehicleModel,
      VehicleManufacturer,
      DriverFleetHistory,
      VehicleStatus,
      VehiclePricing,
      MeetAndGreetPricing,
      TripBasePricing,
      ChatMessage,
      ChatRoom,
      ChatParticipant,
      Role,
      TeamMember,
      State,
      Country,
      CustomerTag,
      CustomerPhoneNumbers,
      Rating,
      VehicleType,
      CustomerEpisode,
      EpisodeLog,
      AddOnsPricing,
      TripLog,
      InvoiceTrips,
      TripTimelineHistory,
    ]),
  ],
  providers: [
    TripSocketGateway,
    TripsService,
    AuthService,
    TripTypeRepository,
    TripRepository,
    ClientCompanyRepository,
    ClientCompanyContactRepository,
    CustomerRepository,
    HospitalRepository,
    AddOnRepository,
    TripFleetRepository,
    FleetManagementService,
    VehicleStatusService,
    TripBabySeatRepository,
    FleetManagementRepository,
    EscortRepository,
    TripCancelRepository,
    NotificationService,
    UserLoginRepository,
    CityRepository,
    PricingPlanRepository,
    ClientCompanyContractRepository,
    TripAddOnsPricingRepository,
    TripServicePricingRepository,
    TripTrackingRepository,
    AuthRepository,
    UserOldPasswordRepository,
    RolePermissionRepository,
    VehicleModelRepository,
    VehicleManufacturerRepository,
    DriverFleetHistoryRepository,
    VehicleStatusRepository,
    TripBabySeatRepository,
    NotificationRepository,
    CustomerNotificationRepository,
    CustomerLoginRepository,
    FirebaseNotificationService,
    TripBasePricingRepository,
    VehiclePricingRepository,
    MeetAndGreetPricingRepository,
    TripBasePricingRepository,
    ChatMessageRepository,
    ChatRoomRepository,
    ChatParticipantRepository,
    RoleRepository,
    TeamMemberRepository,
    CustomersService,
    StateRepository,
    CountryRepository,
    CustomerTagRepository,
    PhoneNumbersRepository,
    RatingRepository,
    VehicleRepository,
    CustomerEpisodeRepository,
    EpisodeLogRepository,
    AddOnsPricingRepository,
    CloudflareR2Service,
    TripLogsRepository,
    InvoiceTripRepository,
    TripTimelineRepository,
  ],
})
export class TripSocketModule {}
