import { TimeTrackingCDCPort } from '../changeDataCapture/business/ports/timeTrackingCDCPort';
import { FacialRecognitionKioskPort } from '../facialRecognition/business/ports/facialRecognitionKioskPort';
import { FacialRecognitionTimeTrackingConfigPort } from '../facialRecognition/business/ports/facialRecognitionTimeTrackingConfigPort';
import { TimeTrackingDaySummaryPort } from '../timeOff/business/ports/timeTrackingDaySummaryPort';
import { TimeTrackingWorkScheduleDataPort } from '../timeOff/business/ports/timeTrackingWorkScheduleDataPort';
import { UsersTimeTrackingSettingPort } from '../users/business/ports/usersTimeTrackingSettingPort';
import { TimeTrackingEmployeePort } from './business/ports/employeeTablePorts';
import ScheduleCategorizedHoursPort from './business/ports/scheduleCategorizedHoursPort';
import { TimeTrackingFaceAssignmentQueueConsumerPort } from './business/ports/timeTrackingFaceAssignmentQueueConsumerPort';
import { TimeTrackingKioskLinkPort } from './business/ports/timeTrackingKioskLinkPort';
import { TimeTrackingKioskPort } from './business/ports/timeTrackingKioskPort';
import TimeTrackingNotificationsPort from './business/ports/timeTrackingNotificationsPort';
import { TimeTrackingNotifyBulkCategorizedHourReviewedPort } from './business/ports/timeTrackingNotifyBulkCategorizedHourReviewedPort';
import { TimeTrackingPoliciesPort } from './business/ports/timeTrackingPoliciesPort';
import { TimeTrackingQueueConsumerPort } from './business/ports/timeTrackingQueueConsumerPort';
import { UsersServicePort } from './business/ports/userServicePort';
import WorkScheduleServicePort from './business/ports/workScheduleServicePort';
import TimeTrackingEmployeeAdapter from './business/services/employeeTableAdapter';
import TimeTrackingKioskAdapter from './business/services/kiosk';
import TimeTrackingKioskLinkAdapter from './business/services/kioskLink';
import TimeTrackingPoliciesAdapter from './business/services/policies';
import { ReportService as ReportServiceAdapter, ReportServicePort } from './business/services/report';
import TimeTrackingService, { TimeTrackingServiceAdapter } from './business/services/timeTracking';
import { UsersServiceAdapter } from './business/services/usersServiceAdapter';
import { WorkScheduleServiceAdapter } from './business/services/workScheduleAdapter';
import { FacialRecognitionKioskAdapter } from './infrastructure/adapters/facialRecognitionKioskAdapter';
import { FacialRecognitionTimeTrackingConfigAdapter } from './infrastructure/adapters/facialRecognitionTimeTrackingConfigAdapter';
import { ScheduleCategorizedHoursAdapter } from './infrastructure/adapters/repositories/scheduleCategorizedHoursAdapter';
import ShiftAssignedDayRepositoryAdapter from './infrastructure/adapters/repositories/shiftManagement/shiftAssignedDayRepositoryAdapter';
import ShiftAssignmentRepositoryAdapter from './infrastructure/adapters/repositories/shiftManagement/shiftAssignmentRepositoryAdapter';
import ShiftRepositoryAdapter from './infrastructure/adapters/repositories/shiftManagement/shiftRepositoryAdapter';
import ShiftRotationRepositoryAdapter from './infrastructure/adapters/repositories/shiftManagement/shiftRotationRepositoryAdapter';
import TimeTrackingCategorizedHourRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingCategorizedHourAdapter';
import { TimeTrackingCategorizedHourApprovalStepRepositoryAdapter } from './infrastructure/adapters/repositories/timeTracking/timeTrackingCategorizedHourApprovalStepRepositoryAdapter';
import TimeTrackingConfigRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingConfigRepositoryAdapter';
import TimeTrackingEntriesRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingEntriesRepositoryAdapter';
import TimeTrackingFaceAssignmentRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingFaceAssignment';
import TimeTrackingHourCategorizationAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingHourCategorizationAdapter';
import { TimeTrackingIncidenceNotificationLogRepositoryAdapter } from './infrastructure/adapters/repositories/timeTracking/timeTrackingIncidenceNotificationLogRepositoryAdapter';
import TimeTrackingKioskUserRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingKioskUser';
import TimeTrackingUserSettingRepositoryAdapter from './infrastructure/adapters/repositories/timeTracking/timeTrackingUserSettingRepositoryAdapter';
import TimeTrackingKioskLinkRepositoryAdapter from './infrastructure/adapters/repositories/timeTrackingKioskLinkRepositoryAdapter';
import TimeTrackingKioskRepositoryAdapter from './infrastructure/adapters/repositories/timeTrackingKioskRepositoryAdapter';
import { TimeTrackingNotificationsAdapter } from './infrastructure/adapters/repositories/timeTrackingNotificationsAdapter';
import TimeTrackingPoliciesRepositoryAdapter from './infrastructure/adapters/repositories/timeTrackingPoliciesRepositoryAdapter';
import TimeTrackingPolicyApprovalStepsRepositoryAdapter from './infrastructure/adapters/repositories/timeTrackingPolicyApprovalStepsRepositoryAdapter';
import { TimeTrackingRepositoryAdapter } from './infrastructure/adapters/repositories/timeTrackingRepository';
import TimeTrackingSettingRepositoryAdapter from './infrastructure/adapters/repositories/timeTrackingSettingRepositoryAdapter';
import { WorkScheduleRepositoryAdapter } from './infrastructure/adapters/repositories/workScheduleRepositoryAdapter';
import { TimeTrackingCDCAdapter } from './infrastructure/adapters/timeTrackingCDCAdapter';
import { TimeTrackingDaySummaryAdapter } from './infrastructure/adapters/timeTrackingDaySummaryAdapter';
import { TimeTrackingFaceAssignmentQueueConsumerAdapter } from './infrastructure/adapters/timeTrackingFaceAssignmentQueueConsumerAdapter';
import { TimeTrackingNotifyBulkCategorizedHourReviewedAdapter } from './infrastructure/adapters/timeTrackingNotifyBulkCategorizedHourReviewedAdapter';
import { TimeTrackingQueueConsumerAdapter } from './infrastructure/adapters/timeTrackingQueueConsumerAdapter';
import { TimeTrackingWorkScheduleDataAdapter } from './infrastructure/adapters/timeTrackingWorkScheduleDataAdapter';
import { UsersTimeTrackingSettingAdapter } from './infrastructure/adapters/usersTimeTrackingSettingAdapter';
import ShiftAssignedDayRepositoryPort from './infrastructure/ports/shiftManagement/shiftAssignedDayRepositoryPort';
import ShiftAssignmentRepositoryPort from './infrastructure/ports/shiftManagement/shiftAssignmentRepositoryPort';
import ShiftRepositoryPort from './infrastructure/ports/shiftManagement/shiftRepositoryPort';
import ShiftRotationRepositoryPort from './infrastructure/ports/shiftManagement/shiftRotationRepositoryPort';
import { TimeTrackingCategorizedHourApprovalStepRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingCategorizedHourApprovalStepRepositoryPort';
import { TimeTrackingCategorizedHourRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingCategorizedHourRepositoryPort';
import { TimeTrackingConfigRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingConfigRepositoryPort';
import { TimeTrackingEntriesRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingEntriesRepositoryPort';
import TimeTrackingFaceAssignmentRepositoryPort from './infrastructure/ports/timeTracking/timeTrackingFaceAssignmentRepositoryPort';
import { TimeTrackingHourCategorizationRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingHourCategorizationRepositoryPort';
import { TimeTrackingIncidenceNotificationLogRepositoryPort } from './infrastructure/ports/timeTracking/timeTrackingIncidenceNotificationLogRepositoryPort';
import TimeTrackingKioskUserRepositoryPort from './infrastructure/ports/timeTracking/timeTrackingKioskUserPort';
import TimeTrackingUserSettingRepositoryPort from './infrastructure/ports/timeTracking/timeTrackingUserSettingRepositoryPort';
import TimeTrackingKioskLinkRepositoryPort from './infrastructure/ports/TimeTrackingKioskLinkRepositoryPort';
import TimeTrackingKioskRepositoryPort from './infrastructure/ports/TimeTrackingKioskRepositoryPort';
import TimeTrackingPoliciesRepositoryPort from './infrastructure/ports/TimeTrackingPoliciesRepositoryPort';
import TimeTrackingPolicyApprovalStepsRepositoryPort from './infrastructure/ports/TimeTrackingPolicyApprovalStepsRepositoryPort';
import { TimeTrackingRepositoryPort } from './infrastructure/ports/TimeTrackingRepositoryPort';
import TimeTrackingSettingRepositoryPort from './infrastructure/ports/TimeTrackingSettingRepositoryPort';
import { WorkScheduleRepositoryPort } from './infrastructure/ports/WorkScheduleRepositoryPort';

export const trackingPortsHandlers = {
    [TimeTrackingService.name]: TimeTrackingServiceAdapter,
    [TimeTrackingRepositoryPort.name]: TimeTrackingRepositoryAdapter,
    [WorkScheduleServicePort.name]: WorkScheduleServiceAdapter,
    [WorkScheduleRepositoryPort.name]: WorkScheduleRepositoryAdapter,
    [ReportServicePort.name]: ReportServiceAdapter,
    [UsersServicePort.name]: UsersServiceAdapter,
    [TimeTrackingEmployeePort.name]: TimeTrackingEmployeeAdapter,
    [TimeTrackingPoliciesPort.name]: TimeTrackingPoliciesAdapter,
    [TimeTrackingPoliciesRepositoryPort.name]: TimeTrackingPoliciesRepositoryAdapter,
    [TimeTrackingKioskPort.name]: TimeTrackingKioskAdapter,
    [TimeTrackingKioskRepositoryPort.name]: TimeTrackingKioskRepositoryAdapter,
    [TimeTrackingKioskLinkPort.name]: TimeTrackingKioskLinkAdapter,
    [TimeTrackingKioskLinkRepositoryPort.name]: TimeTrackingKioskLinkRepositoryAdapter,
    [TimeTrackingSettingRepositoryPort.name]: TimeTrackingSettingRepositoryAdapter,
    [ShiftAssignedDayRepositoryPort.name]: ShiftAssignedDayRepositoryAdapter,
    [ShiftAssignmentRepositoryPort.name]: ShiftAssignmentRepositoryAdapter,
    [TimeTrackingUserSettingRepositoryPort.name]: TimeTrackingUserSettingRepositoryAdapter,
    [ShiftRepositoryPort.name]: ShiftRepositoryAdapter,
    [ShiftRotationRepositoryPort.name]: ShiftRotationRepositoryAdapter,
    [ScheduleCategorizedHoursPort.name]: ScheduleCategorizedHoursAdapter,
    [TimeTrackingNotifyBulkCategorizedHourReviewedPort.name]: TimeTrackingNotifyBulkCategorizedHourReviewedAdapter,
    [TimeTrackingNotificationsPort.name]: TimeTrackingNotificationsAdapter,
    [TimeTrackingConfigRepositoryPort.name]: TimeTrackingConfigRepositoryAdapter,
    [TimeTrackingEntriesRepositoryPort.name]: TimeTrackingEntriesRepositoryAdapter,
    [TimeTrackingFaceAssignmentRepositoryPort.name]: TimeTrackingFaceAssignmentRepositoryAdapter,
    [TimeTrackingHourCategorizationRepositoryPort.name]: TimeTrackingHourCategorizationAdapter,
    [TimeTrackingIncidenceNotificationLogRepositoryPort.name]: TimeTrackingIncidenceNotificationLogRepositoryAdapter,
    [TimeTrackingKioskUserRepositoryPort.name]: TimeTrackingKioskUserRepositoryAdapter,
    [TimeTrackingCategorizedHourApprovalStepRepositoryPort.name]: TimeTrackingCategorizedHourApprovalStepRepositoryAdapter,
    [TimeTrackingCategorizedHourRepositoryPort.name]: TimeTrackingCategorizedHourRepositoryAdapter,
    [TimeTrackingQueueConsumerPort.name]: TimeTrackingQueueConsumerAdapter,
    [TimeTrackingFaceAssignmentQueueConsumerPort.name]: TimeTrackingFaceAssignmentQueueConsumerAdapter,
    [TimeTrackingPolicyApprovalStepsRepositoryPort.name]: TimeTrackingPolicyApprovalStepsRepositoryAdapter,
    [UsersTimeTrackingSettingPort.name]: UsersTimeTrackingSettingAdapter,
    [FacialRecognitionTimeTrackingConfigPort.name]: FacialRecognitionTimeTrackingConfigAdapter,
    [FacialRecognitionKioskPort.name]: FacialRecognitionKioskAdapter,
    [TimeTrackingDaySummaryPort.name]: TimeTrackingDaySummaryAdapter,
    [TimeTrackingWorkScheduleDataPort.name]: TimeTrackingWorkScheduleDataAdapter,
    [TimeTrackingCDCPort.name]: TimeTrackingCDCAdapter,
};
