import { Module } from "@nestjs/common"
import { TeamMemberService } from "./v1/team-member.service"
import { TeamMemberController } from "./v1/team-member.controller"
import { TypeOrmModule } from "@nestjs/typeorm"
import { TeamMember } from "./entities/team_member.entity"
import { ApiLog } from "../api-log/entities/api-log.entity"
import { TeamMemberRepository } from "./repositories/team_member.repository"
import { AuthService } from "../auth/v1/auth.service"
import { AuthRepository } from "../auth/repositories/auth.repository"
import { UserLoginRepository } from "../auth/repositories/user-login.repository"
import { Auth } from "../auth/entities/auth.entity"
import { UserLogin } from "../auth/entities/user-login.entity"
import { UserOldPasswordRepository } from "../auth/repositories/old-passwords.repository"
import { UserOldPassword } from "../auth/entities/user-old-password.entity"
import { RolePermissionRepository } from "../role-permission/repositories/role-permission.repository"
import { RolePermission } from "../role-permission/entities/role-permission.entity"
import { AddressRepository } from "./repositories/address.repository"
import { IdProofRepository } from "./repositories/id-proof.repository"
import { Address } from "./entities/address.entity"
import { IdProof } from "./entities/id-proof.entity"
import { DepartmentRepository } from "../department/repositories/department.repository"
import { BusinessVerticalRepository } from "../business-verticals/repositories/business-verticals.repository"
import { Department } from "../department/entities/department.entity"
import { BusinessVertical } from "../business-verticals/entities/business-verticals.entity"
import { RoleRepository } from "../role/repositories/role.repository"
import { Role } from "../role/entities/role.entity"
import { DriverController } from "./v1/driver.controller"
import { FleetManagement } from "../fleet-management/entities/fleet-management.entity"
import { FleetManagementRepository } from "../fleet-management/repositories/fleet-management.repository"
import { TripFleetRepository } from "../trips/repositories/trip-fleet-repository"
import { TripFleetAssignment } from "../trips/entities/fleet-trip-management.entity"
import { DeclinedTripRepository } from "../trips/repositories/declined-trip.repository"
import { DeclinedTrip } from "../trips/entities/declined-trip.entity"
import { Trip } from "../trips/entities/trip.entity"
import { TripRepository } from "../trips/repositories/trip.repository"
import { TripCancelRepository } from "../trips/repositories/trip-cancel-repository"
import { TripCancellation } from "../trips/entities/trip-cancellations.entity"
import { Rating } from "../rating/entities/rating.entity"
import { RatingRepository } from "../rating/repositories/rating.repository"
import { TripIntermediateStopRepository } from "../trip-intermediate-stops/repositories/trip-intermediate-stop.repository"
import { TripIntermediateStop } from "../trip-intermediate-stops/entities/trip-intermediate-stop.entity"
import { DriverFleetHistoryRepository } from "../fleet-management/repositories/driver-fleet-history.repository"
import { DriverFleetHistory } from "../fleet-management/entities/driver-fleet-history.entity"
import { VehicleStatusService } from "../vehicle-status/v1/vehicle-status.service"
import { VehicleStatusRepository } from "../vehicle-status/repositories/vehicle-status.repository"
import { VehicleStatus } from "../vehicle-status/entities/vehicle-status.entity"
import { LanguagesRepository } from "./repositories/languages.repository"
import { Language } from "./entities/languages.entity"
import { NotificationModule } from "../notification/notification.module"
import { DispatcherController } from "./v1/dispatcher.controller"
import { CustomerRepository } from "../customers/repositories/customers.repository"
import { Customer } from "../customers/entities/customer.entity"
import { TripBasePricingRepository } from "../trips/repositories/trip-base-price.repository"
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 { ChatConversationRepository } from "../chat/repositories/chat-conversation.repository"
import { ChatConversation } from "../chat/entities/chat-conversation.entity"
import { TripTimelineRepository } from "../trips/repositories/trip-timeline.repository"
import { TripTimelineHistory } from "../trips/entities/trip-timeline.entity"
import { TripsModule } from "../trips/trips.module"
import { TripAddOnsPricingRepository } from "../trips/repositories/trip-addons-pricing.repository"
import { TripAddonsPricing } from "../trips/entities/trip-addons-pricing.entity"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      TeamMember,
      ApiLog,
      Auth,
      UserLogin,
      UserOldPassword,
      RolePermission,
      Address,
      IdProof,
      Department,
      BusinessVertical,
      Role,
      FleetManagement,
      TripFleetAssignment,
      DeclinedTrip,
      Trip,
      TripCancellation,
      Rating,
      TripIntermediateStop,
      DriverFleetHistory,
      VehicleStatus,
      Language,
      Customer,
      TripBasePricing,
      ChatMessage,
      ChatRoom,
      ChatParticipant,
      ChatConversation,
      TripTimelineHistory,
      TripAddonsPricing,
    ]),
    NotificationModule,
    TripsModule,
  ],
  providers: [
    TeamMemberService,
    TeamMemberRepository,
    AuthService,
    AuthRepository,
    UserLoginRepository,
    UserOldPasswordRepository,
    RolePermissionRepository,
    AddressRepository,
    IdProofRepository,
    DepartmentRepository,
    BusinessVerticalRepository,
    RoleRepository,
    FleetManagementRepository,
    TripFleetRepository,
    DeclinedTripRepository,
    TripRepository,
    TripCancelRepository,
    RatingRepository,
    TripIntermediateStopRepository,
    DriverFleetHistoryRepository,
    VehicleStatusService,
    VehicleStatusRepository,
    LanguagesRepository,
    CustomerRepository,
    TripBasePricingRepository,
    ChatMessageRepository,
    ChatRoomRepository,
    ChatParticipantRepository,
    ChatConversationRepository,
    TripTimelineRepository,
    TripAddOnsPricingRepository,
  ],
  controllers: [TeamMemberController, DriverController, DispatcherController],
  exports: [TeamMemberService],
})
export class TeamMemberModule {}
