const cron = require('node-cron')
const ProjectModel = require('../models/ProjectModel')
const NotificationModel = require('../models/NotificationModel')

// تابع برای به‌روزرسانی پروژه‌های منقضی شده
const updateExpiredProjects = async () => {
  const now = new Date()
  const oneMonthAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000)

  try {
    // جستجوی پروژه‌های منقضی شده که هنوز به‌روزرسانی نشده‌اند
    const expiredProjects = await ProjectModel.find({
      isExpired: false, // فقط پروژه‌هایی که هنوز منقضی نشده‌اند
      acceptedAt: { $lte: oneMonthAgo } // بر اساس تاریخ انقضا
    })

    for (const project of expiredProjects) {
      project.isExpired = true // تنظیم وضعیت منقضی شده
      await project.save()

      // ایجاد و ذخیره نوتیفیکیشن
      const notification = new NotificationModel({
        user_id: project.creator_id,
        project_post_id: project._id,
        type: 'project',
        title: 'انقضای پروژه',
        description: `پروژه شما با عنوان: ${project.title} منقضی شد.`
      })
      await notification.save()
    }

    console.log(`Updated ${expiredProjects.length} expired projects successfully`)
  } catch (error) {
    console.error('Error updating expired projects:', error)
  }
}

// تنظیم کرون جاب برای اجرای هر ساعت
cron.schedule('0 * * * *', () => {
  console.log('Running cron job to update expired projects')
  updateExpiredProjects()
})

module.exports = updateExpiredProjects
