import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { PrismaModule } from '@core/database/prisma/prisma.module';
import { SiteAttendanceCheckpointController } from './controllers/checkpoint.controller';
import { SiteAttendanceCheckinController } from './controllers/checkin.controller';
import { SharedCheckinController } from './controllers/shared-checkin.controller';
import { CheckpointService } from './services/checkpoint.service';
import { CheckinService } from './services/checkin.service';
import { SharedCheckinService } from './services/shared-checkin.service';
import { CheckpointRepository } from './repositories/checkpoint.repository';
import { AttendanceEventRepository } from './repositories/attendance-event.repository';
import { DailySummaryRepository } from './repositories/daily-summary.repository';
import { SharedCheckinPartnerRepository } from './repositories/shared-checkin-partner.repository';
import { TicketUsageRepository } from './repositories/ticket-usage.repository';
import { GeocodingService } from './services/geocoding.service';

@Module({
  imports: [PrismaModule, ConfigModule],
  controllers: [
    SiteAttendanceCheckpointController,
    SiteAttendanceCheckinController,
    SharedCheckinController,
  ],
  providers: [
    CheckpointService,
    CheckinService,
    SharedCheckinService,
    CheckpointRepository,
    AttendanceEventRepository,
    DailySummaryRepository,
    SharedCheckinPartnerRepository,
    TicketUsageRepository,
    GeocodingService,
  ],
})
export class SiteAttendanceModule {}
