# app/scheduler.py
import asyncio
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger

from app.db import database
from app.v1.services.saas.invoices import run_due_reminders

scheduler = BackgroundScheduler()

# def reminder_job():
#     """Background job to check invoices and send reminders daily."""
#     print(f"[Scheduler] Running reminders at {datetime.utcnow()}")

#     # Create DB connection
#     db = database.get_mongo_db()

#     # Call async function from sync job
#     asyncio.run(run_due_reminders(db, None))  # No BackgroundTasks when run outside request

def reminder_job():
    print(f"[Scheduler] Running reminders...")
    db = database.get_mongo_db()
    loop = asyncio.get_event_loop()
    loop.create_task(run_due_reminders(db, None))  # Schedule the async task

def start_scheduler():
    print("🔄 Starting APScheduler...")
    # scheduler.add_job(reminder_job, CronTrigger(hour=9, minute=0))
    scheduler.add_job(reminder_job, "interval", seconds=30)
    scheduler.start()
    print("✅ APScheduler started")
