#!/bin/bash

# Fresh cron setup for Slack Presence Tracker (Multi-user version)
# This script will set up cron jobs with proper virtual environment handling

echo "=========================================="
echo "Slack Presence Tracker - Fresh Cron Setup"
echo "=========================================="
echo ""

# Get the absolute path to the project directory
PROJECT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PYTHON_PATH=$(which python3)

echo "Project directory: $PROJECT_DIR"
echo "Python path: $PYTHON_PATH"
echo ""

# Check for virtual environment
VENV_PATH=""
if [ -d "$PROJECT_DIR/venv" ]; then
    VENV_PATH="$PROJECT_DIR/venv"
    echo "Found virtual environment: venv"
elif [ -d "$PROJECT_DIR/myenv" ]; then
    VENV_PATH="$PROJECT_DIR/myenv"
    echo "Found virtual environment: myenv"
elif [ -d "$PROJECT_DIR/env" ]; then
    VENV_PATH="$PROJECT_DIR/env"
    echo "Found virtual environment: env"
elif [ -d "$PROJECT_DIR/.venv" ]; then
    VENV_PATH="$PROJECT_DIR/.venv"
    echo "Found virtual environment: .venv"
fi

echo ""
echo "Setting up cron jobs..."
echo ""

# Create the cron entries based on whether venv exists
if [ ! -z "$VENV_PATH" ]; then
    echo "Using virtual environment at: $VENV_PATH"
    
    # Create cron entries with venv activation
    CRON_PRESENCE="* * * * * cd $PROJECT_DIR && source $VENV_PATH/bin/activate && python check_presence_team.py >> logs/cron_presence.log 2>&1"
    CRON_SUMMARY="1 0 * * * cd $PROJECT_DIR && source $VENV_PATH/bin/activate && python team_summary.py --type daily --csv >> logs/cron_summary.log 2>&1"
    CRON_WEEKLY="5 0 * * 1 cd $PROJECT_DIR && source $VENV_PATH/bin/activate && python team_summary.py --type weekly --save >> logs/cron_weekly.log 2>&1"
    CRON_MONTHLY="10 0 1 * * cd $PROJECT_DIR && source $VENV_PATH/bin/activate && python team_summary.py --type monthly --save >> logs/cron_monthly.log 2>&1"
else
    echo "No virtual environment found, using system Python"
    
    # Create cron entries without venv
    CRON_PRESENCE="* * * * * cd $PROJECT_DIR && $PYTHON_PATH check_presence_team.py >> logs/cron_presence.log 2>&1"
    CRON_SUMMARY="1 0 * * * cd $PROJECT_DIR && $PYTHON_PATH team_summary.py --type daily --csv >> logs/cron_summary.log 2>&1"
    CRON_WEEKLY="5 0 * * 1 cd $PROJECT_DIR && $PYTHON_PATH team_summary.py --type weekly --save >> logs/cron_weekly.log 2>&1"
    CRON_MONTHLY="10 0 1 * * cd $PROJECT_DIR && $PYTHON_PATH team_summary.py --type monthly --save >> logs/cron_monthly.log 2>&1"
fi

# Check if crontab exists
crontab -l > /dev/null 2>&1
if [ $? -eq 0 ]; then
    # Crontab exists, back it up
    echo "Backing up existing crontab to: crontab_backup_$(date +%Y%m%d_%H%M%S).txt"
    crontab -l > "crontab_backup_$(date +%Y%m%d_%H%M%S).txt"
fi

# Add all cron jobs
(
    # Add header comment
    echo "# Slack Presence Tracker - Installed $(date)"
    echo ""
    
    # Add the jobs
    echo "# Check team presence every minute"
    echo "$CRON_PRESENCE"
    echo ""
    echo "# Generate daily team summary at 00:01"
    echo "$CRON_SUMMARY"
    echo ""
    echo "# Generate weekly summary every Monday at 00:05"
    echo "$CRON_WEEKLY"
    echo ""
    echo "# Generate monthly summary on the 1st at 00:10"
    echo "$CRON_MONTHLY"
) | crontab -

echo "✓ Cron jobs installed successfully!"
echo ""
echo "Current crontab:"
echo "------------------------"
crontab -l
echo "------------------------"
echo ""

# Test the presence check command
echo "Testing the presence check command..."
if [ ! -z "$VENV_PATH" ]; then
    cd $PROJECT_DIR && source $VENV_PATH/bin/activate && python check_presence_team.py
else
    cd $PROJECT_DIR && $PYTHON_PATH check_presence_team.py
fi

if [ $? -eq 0 ]; then
    echo "✓ Presence check test successful!"
else
    echo "✗ Presence check test failed - please check your configuration"
    exit 1
fi

echo ""
echo "=========================================="
echo "Setup complete!"
echo "=========================================="
echo ""
echo "The following cron jobs are now active:"
echo "1. check_presence_team.py - Runs every minute"
echo "2. team_summary.py (daily) - Runs at 00:01"
echo "3. team_summary.py (weekly) - Runs Mondays at 00:05"  
echo "4. team_summary.py (monthly) - Runs 1st of month at 00:10"
echo ""
echo "To monitor the presence checks, use:"
echo "  tail -f $PROJECT_DIR/logs/cron_presence.log"
echo ""
echo "To check cron status:"
echo "  ./check_cron_status.sh"
echo ""
echo "To view your crontab:"
echo "  crontab -l"
echo ""
echo "To remove all cron jobs:"
echo "  crontab -r"
echo "
