// vehicle-insurance.cron.ts
import { Injectable } from "@nestjs/common"
import { Cron, CronExpression } from "@nestjs/schedule"
import { InjectRepository } from "@nestjs/typeorm"
import { LessThanOrEqual, Repository } from "typeorm"
import { VehicleInsurance } from "../entities/vehicle-insurance.entity"

@Injectable()
export class VehicleInsuranceCron {
  constructor(
    @InjectRepository(VehicleInsurance)
    private readonly vehicleInsuranceRepository: Repository<VehicleInsurance>,
  ) {}

  @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
  async expireOldPolicies() {
    const today = new Date()

    const expiredInsurances: any = await this.vehicleInsuranceRepository.find({
      where: {
        end_date: LessThanOrEqual(today),
      },
    })

    for (const insurance of expiredInsurances) {
      insurance.status = "expired"
      await this.vehicleInsuranceRepository.save(insurance)
    }

    console.log(`${expiredInsurances.length} vehicle insurances expired.`)
  }
}
