import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
import { SuscripcionesService } from './suscripciones.service';

@Injectable()
export class SuscripcionesCronService {
  private readonly logger = new Logger(SuscripcionesCronService.name);
  constructor(
    private readonly suscripcionesService: SuscripcionesService,
  ) {}

  /**
   * Cron diario a las 2:00 AM para verificar vencimientos.
   * Configurable via CRON_SUSCRIPCIONES_SCHEDULE env var.
   */
  @Cron(process.env.CRON_SUSCRIPCIONES_SCHEDULE || CronExpression.EVERY_DAY_AT_2AM)
  async handleVerificacionVencimientos() {
    this.logger.log(
      'Ejecutando cron de verificación de vencimientos',
      'SuscripcionesCron',
    );
    try {
      const resumen = await this.suscripcionesService.verificarVencimientos();
      this.logger.log(
        `Cron completado: ${JSON.stringify(resumen)}`,
        'SuscripcionesCron',
      );
    } catch (error) {
      this.logger.error(
        `Error en cron de vencimientos: ${error instanceof Error ? error.message : 'unknown'}`,
        'SuscripcionesCron',
      );
    }
  }
}
