import { Processor, WorkerHost } from '@nestjs/bullmq';
import { Logger } from '@nestjs/common';
import type { Job } from 'bullmq';
import { RelojesMarcadoresService } from './relojes-marcadores.service';
import {
  PRESENTISMO_SYNC_JOB_NAME,
  PRESENTISMO_SYNC_QUEUE_NAME,
} from './presentismo-sync-scheduler.service';

type PresentismoSyncJobData = {
  relojId: string;
  empresaId: string;
};

@Processor(PRESENTISMO_SYNC_QUEUE_NAME)
export class PresentismoSyncProcessor extends WorkerHost {
  private readonly logger = new Logger(PresentismoSyncProcessor.name);

  constructor(private readonly relojesService: RelojesMarcadoresService) {
    super();
  }

  async process(job: Job<PresentismoSyncJobData>): Promise<void> {
    if (job.name !== PRESENTISMO_SYNC_JOB_NAME) return;
    const { relojId, empresaId } = job.data || {};
    if (!relojId || !empresaId) {
      this.logger.warn(`Job ${job.id} inválido: faltan relojId/empresaId`);
      return;
    }

    this.logger.log(`Sync automático presentismo reloj=${relojId} empresa=${empresaId}`);
    await this.relojesService.sincronizar(relojId, empresaId, {});
  }
}
