#!/usr/bin/env python3
import sys
import os
import logging
from datetime import datetime

# Add the project root to the Python path
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app.common.database import SessionLocal
from app.advisor_service.services.schedule_service import refresh_all_advisor_statuses

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler("/var/log/dealerpulse/advisor_status_refresh.log"),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger(__name__)

def main():
    """
    Refresh all advisor statuses based on their schedules
    This script is meant to be called by a cron job
    """
    logger.info(f"Starting advisor status refresh at {datetime.now()}")
    
    try:
        # Create a new database session
        db = SessionLocal()
        
        # Refresh all advisor statuses
        result = refresh_all_advisor_statuses(db)
        
        logger.info(f"Refresh completed: {result}")
        
    except Exception as e:
        logger.error(f"Error refreshing advisor statuses: {str(e)}")
        sys.exit(1)
    finally:
        # Close the database session
        db.close()
    
    logger.info(f"Finished advisor status refresh at {datetime.now()}")

if __name__ == "__main__":
    main() 