from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from app.scheduler.cron_jobs import logout_all_advisors, process_booking_intent_async_wrapper
from zoneinfo import ZoneInfo
from app.scheduler.cron_jobs import send_appointment_reminders

scheduler = BackgroundScheduler()

def start_scheduler():
    scheduler.add_job (
        process_booking_intent_async_wrapper, 
        IntervalTrigger(seconds=900), 
        id="process_booking_intent", 
        replace_existing=True,
        coalesce=True,
        max_instances=1,
        misfire_grace_time=None
    )

    # scheduler.add_job (
    #     logout_all_advisors, 
    #     IntervalTrigger(seconds=60), 
    #     id="logout_all_advisors_test", 
    #     replace_existing=True,
    #     coalesce=True,
    #     max_instances=1,
    #     misfire_grace_time=None
    # )

    scheduler.add_job(
        logout_all_advisors,
        trigger='cron',
        hour=18,
        id="logout_all_advisors",
        replace_existing=True,
        coalesce=True,
        max_instances=1,
        misfire_grace_time=None,
        timezone=ZoneInfo('America/Los_Angeles')
    )
    
    scheduler.add_job(
        send_appointment_reminders,
        trigger='interval',
        seconds=30,  # 🔄 Run every 30 seconds
        id="send_appointment_reminders",
        replace_existing=True,
        coalesce=True,
        max_instances=1,
        misfire_grace_time=None
    )
    
    scheduler.start()
    print("Scheduler started.")

def stop_scheduler():
    scheduler.shutdown(wait=False)
    print("Scheduler stopped.")
    