import { Processor, WorkerHost } from '@nestjs/bullmq';
import { Logger } from '@nestjs/common';
import type { Job } from 'bullmq';
import { LegajosVencimientoJobService } from './legajos-vencimiento-job.service';

export const LEGAJOS_QUEUE_NAME = 'rrhh-legajos-queue';
export const LEGAJOS_VENCIMIENTO_JOB_NAME = 'actualizar-estados-vencimiento';

type VencimientoJobData = {
  empresaId?: string;
};

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

  constructor(private readonly jobService: LegajosVencimientoJobService) {
    super();
  }

  async process(job: Job<VencimientoJobData>): Promise<void> {
    if (job.name !== LEGAJOS_VENCIMIENTO_JOB_NAME) return;
    const empresaId = job.data?.empresaId;
    this.logger.log(
      `Ejecutando job de vencimientos de legajos${empresaId ? ` (empresa=${empresaId})` : ' (todas las empresas)'}`,
    );
    const r = await this.jobService.ejecutar(empresaId);
    this.logger.log(
      `Job finalizado: empresas=${r.empresas_procesadas} docs=${r.documentos_evaluados} ` +
        `actualizados=${r.documentos_actualizados} alertas=${r.alertas_enviadas}`,
    );
  }
}
