#!/bin/bash

###############################################################################
# Lotto 6aus49 - Automatische Tipp-Generierung Setup
#
# Richtet Cron-Jobs ein für automatische wöchentliche Tipp-Generierung
#
# Zeitplan:
# - Dienstag 09:00 (vor Mittwoch-Ziehung)
# - Freitag 09:00 (vor Samstag-Ziehung)
#
# Verwendung:
#   chmod +x setup_cron.sh
#   ./setup_cron.sh
###############################################################################

set -e

# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}╔═══════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║  LOTTO 6AUS49 - AUTOMATISIERUNG SETUP                    ║${NC}"
echo -e "${BLUE}╚═══════════════════════════════════════════════════════════╝${NC}"
echo ""

# Project Directory
PROJECT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
SCRIPT_PATH="${PROJECT_DIR}/scripts/automation/weekly_tip_generator.py"
LOG_DIR="${PROJECT_DIR}/logs"
LOG_FILE="${LOG_DIR}/weekly_tips.log"

echo -e "${YELLOW}📁 Project Directory:${NC} ${PROJECT_DIR}"
echo -e "${YELLOW}🐍 Script Path:${NC} ${SCRIPT_PATH}"
echo -e "${YELLOW}📝 Log File:${NC} ${LOG_FILE}"
echo ""

# Check if script exists
if [ ! -f "${SCRIPT_PATH}" ]; then
    echo -e "${RED}❌ Fehler: Script nicht gefunden: ${SCRIPT_PATH}${NC}"
    exit 1
fi

# Create logs directory
mkdir -p "${LOG_DIR}"
echo -e "${GREEN}✅ Logs-Verzeichnis erstellt/überprüft${NC}"

# Check Python
PYTHON_CMD="python3"
if ! command -v ${PYTHON_CMD} &> /dev/null; then
    echo -e "${RED}❌ Python3 nicht gefunden${NC}"
    exit 1
fi

PYTHON_VERSION=$(${PYTHON_CMD} --version 2>&1 | awk '{print $2}')
echo -e "${GREEN}✅ Python gefunden: ${PYTHON_VERSION}${NC}"

# Check required Python packages
echo ""
echo -e "${BLUE}🔍 Überprüfe Python-Pakete...${NC}"

REQUIRED_PACKAGES=("pandas" "numpy" "sklearn" "requests")
MISSING_PACKAGES=()

for package in "${REQUIRED_PACKAGES[@]}"; do
    if ${PYTHON_CMD} -c "import ${package}" 2>/dev/null; then
        echo -e "${GREEN}  ✅ ${package}${NC}"
    else
        echo -e "${RED}  ❌ ${package} fehlt${NC}"
        MISSING_PACKAGES+=("${package}")
    fi
done

if [ ${#MISSING_PACKAGES[@]} -gt 0 ]; then
    echo ""
    echo -e "${YELLOW}⚠️  Fehlende Pakete gefunden. Installation mit:${NC}"
    echo -e "${YELLOW}   pip install ${MISSING_PACKAGES[*]}${NC}"
    echo ""
    read -p "Jetzt installieren? (j/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[JjYy]$ ]]; then
        pip install "${MISSING_PACKAGES[@]}"
        echo -e "${GREEN}✅ Pakete installiert${NC}"
    else
        echo -e "${RED}❌ Installation abgebrochen${NC}"
        exit 1
    fi
fi

# Test script
echo ""
echo -e "${BLUE}🧪 Teste Script...${NC}"
if ${PYTHON_CMD} "${SCRIPT_PATH}" --history > /dev/null 2>&1; then
    echo -e "${GREEN}✅ Script funktioniert${NC}"
else
    echo -e "${RED}❌ Script-Test fehlgeschlagen${NC}"
    echo -e "${YELLOW}Führe manuell aus: ${PYTHON_CMD} ${SCRIPT_PATH} --history${NC}"
    exit 1
fi

# Test notifications
echo ""
echo -e "${BLUE}📲 Teste Benachrichtigungs-System...${NC}"
NOTIFIER_PATH="${PROJECT_DIR}/scripts/utils/notifier.py"

if [ -f "${NOTIFIER_PATH}" ]; then
    if ${PYTHON_CMD} "${NOTIFIER_PATH}" --test 2>&1 | grep -q "erfolgreich"; then
        echo -e "${GREEN}✅ Benachrichtigungen funktionieren${NC}"
    else
        echo -e "${YELLOW}⚠️  Benachrichtigungen nicht konfiguriert${NC}"
        echo -e "${YELLOW}   Konfiguriere config/notifications.json${NC}"
    fi
else
    echo -e "${YELLOW}⚠️  Notifier nicht gefunden${NC}"
fi

# Generate cron entries
echo ""
echo -e "${BLUE}⚙️  Erstelle Cron-Job Einträge...${NC}"

# Virtuelles Environment
VENV_PYTHON="${PROJECT_DIR}/../Eurojackpot/venv/bin/python3"
if [ ! -f "${VENV_PYTHON}" ]; then
    VENV_PYTHON="${PYTHON_CMD}"
fi

UPDATE_SCRIPT="${PROJECT_DIR}/scripts/automation/auto_update_and_learn.py"
UPDATE_LOG="${LOG_DIR}/auto_update.log"

CRON_ENTRIES="# ========== LOTTO 6AUS49 AUTOMATION ==========
# Tipp-Generierung: Dienstag & Freitag um 09:00 (vor Ziehungen Mi & Sa)
0 9 * * 2,5 cd ${PROJECT_DIR} && ${VENV_PYTHON} ${SCRIPT_PATH} >> ${LOG_FILE} 2>&1
# Auto-Update & Learning: Mittwoch & Sonntag um 21:00 (nach Ziehungen)
0 21 * * 3,0 cd ${PROJECT_DIR} && ${VENV_PYTHON} ${UPDATE_SCRIPT} >> ${UPDATE_LOG} 2>&1"

echo ""
echo -e "${YELLOW}Cron-Job Einträge:${NC}"
echo "─────────────────────────────────────────────────────────"
echo "${CRON_ENTRIES}"
echo "─────────────────────────────────────────────────────────"
echo ""

# Ask to install
read -p "Cron-Job jetzt installieren? (j/n): " -n 1 -r
echo

if [[ $REPLY =~ ^[JjYy]$ ]]; then
    # Backup current crontab
    CRON_BACKUP="${PROJECT_DIR}/logs/crontab_backup_$(date +%Y%m%d_%H%M%S).txt"
    crontab -l > "${CRON_BACKUP}" 2>/dev/null || true
    echo -e "${GREEN}✅ Backup erstellt: ${CRON_BACKUP}${NC}"

    # Check if entry already exists
    if crontab -l 2>/dev/null | grep -q "LOTTO 6AUS49 AUTOMATION"; then
        echo -e "${YELLOW}⚠️  Cron-Jobs existieren bereits${NC}"
        read -p "Überschreiben? (j/n): " -n 1 -r
        echo
        if [[ ! $REPLY =~ ^[JjYy]$ ]]; then
            echo -e "${BLUE}ℹ️  Installation abgebrochen${NC}"
            exit 0
        fi

        # Remove old entries
        crontab -l 2>/dev/null | grep -v "LOTTO 6AUS49" | grep -v "weekly_tip_generator.py" | grep -v "auto_update_and_learn.py" | crontab -
    fi

    # Add new entries
    (crontab -l 2>/dev/null; echo "${CRON_ENTRIES}") | crontab -

    echo -e "${GREEN}✅ Cron-Jobs erfolgreich installiert!${NC}"
    echo ""
    echo -e "${BLUE}📅 Zeitplan:${NC}"
    echo "  • Dienstag 09:00 - Tipps generieren (vor Mi-Ziehung)"
    echo "  • Mittwoch 21:00 - Auto-Update & Learning (nach Mi-Ziehung)"
    echo "  • Freitag 09:00 - Tipps generieren (vor Sa-Ziehung)"
    echo "  • Sonntag 21:00 - Auto-Update & Learning (nach Sa-Ziehung)"
    echo ""
    echo -e "${BLUE}📝 Logs:${NC}"
    echo "  • Tipps: ${LOG_FILE}"
    echo "  • Updates: ${UPDATE_LOG}"
    echo ""

    # Show current crontab
    echo -e "${BLUE}🕐 Aktuelle Cron-Jobs:${NC}"
    echo "─────────────────────────────────────────────────────────"
    crontab -l | grep -v "^#" | grep -v "^$" || echo "Keine anderen Cron-Jobs"
    echo "─────────────────────────────────────────────────────────"

else
    echo -e "${BLUE}ℹ️  Installation abgebrochen${NC}"
    echo ""
    echo -e "${YELLOW}Manuell installieren mit:${NC}"
    echo "  crontab -e"
    echo ""
    echo "Und folgende Einträge hinzufügen:"
    echo "${CRON_ENTRIES}"
fi

echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║  SETUP ABGESCHLOSSEN                                     ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${BLUE}Nützliche Befehle:${NC}"
echo "  • Cron-Jobs anzeigen:     crontab -l"
echo "  • Cron-Jobs entfernen:    crontab -e (dann Zeilen löschen)"
echo "  • Tipp-Logs anzeigen:     tail -f ${LOG_FILE}"
echo "  • Update-Logs anzeigen:   tail -f ${UPDATE_LOG}"
echo "  • Tipps manuell generieren: ${VENV_PYTHON} ${SCRIPT_PATH} --force"
echo "  • Update manuell starten:   ${VENV_PYTHON} ${UPDATE_SCRIPT}"
echo "  • Historie anzeigen:        ${VENV_PYTHON} ${SCRIPT_PATH} --history"
echo "  • Test-Notification:        ${VENV_PYTHON} ${NOTIFIER_PATH} --test"
echo ""
echo -e "${YELLOW}🍀 Viel Glück bei der nächsten Ziehung! 🍀${NC}"
echo ""
