import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import { CarteraInmService } from './cartera.service';

/** Avisos diarios del vertical. Idempotente: una corrida perdida sólo atrasa los avisos un día. */
@Injectable()
export class CarteraInmCron {
  private readonly logger = new Logger(CarteraInmCron.name);
  private corriendo = false;

  constructor(private readonly cartera: CarteraInmService) {}

  // 05:30: antes de que abran las oficinas comerciales.
  @Cron('0 30 5 * * *', { name: 'inm-tareas-diarias', timeZone: 'America/Asuncion' })
  async correr() {
    if (this.corriendo) return;
    this.corriendo = true;
    try {
      const r = await this.cartera.tareasDiarias();
      this.logger.log(`Inmobiliario diario: ${JSON.stringify(r)}`);
    } catch (e) {
      this.logger.error(`Falló la tarea diaria del inmobiliario: ${(e as Error)?.message}`);
    } finally {
      this.corriendo = false;
    }
  }
}
