import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { ConfigOperativaService } from 'src/config-operativa/config-operativa.service';
import { IncidenciasService } from './incidencias.service';
import { YoutrackClient } from './youtrack.client';

/** Cada 5 minutos manda a YouTrack lo encolado. Kill switch: config youtrack_activo (global). */
@Injectable()
export class IncidenciasCron {
  private readonly logger = new Logger(IncidenciasCron.name);
  private corriendo = false;

  constructor(
    private readonly incidencias: IncidenciasService,
    private readonly youtrack: YoutrackClient,
    private readonly config: ConfigOperativaService,
  ) {}

  @Cron('*/5 * * * *')
  async drenar() {
    if (this.corriendo || !this.youtrack.disponible || !(await this.config.youtrackActivo())) return;
    this.corriendo = true;
    try {
      const r = await this.incidencias.drenar();
      if (r.creadas || r.comentadas || r.fallas) {
        this.logger.log(`YouTrack: ${r.creadas} creadas, ${r.comentadas} comentarios, ${r.fallas} fallas`);
      }
    } finally {
      this.corriendo = false;
    }
  }
}
