#!/bin/bash
# ============================================================
# Eventfox Marketing — cPanel Shared Hosting Installer
# Run via cPanel Terminal or SSH:
#   bash install.sh
# ============================================================
set -e

APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
HOME_DIR="$HOME"
DATA_DIR="$HOME_DIR/eventfox_data"
VENV="$APP_DIR/venv"

echo ""
echo "======================================================="
echo "  Eventfox Marketing — Shared cPanel Installer"
echo "======================================================="
echo "  App dir : $APP_DIR"
echo "  Data dir: $DATA_DIR"
echo ""

# ── Check Python ───────────────────────────────────────────
echo "[ 1/7 ] Checking Python..."
PYTHON=$(which python3.11 2>/dev/null || which python3.10 2>/dev/null \
      || which python3.9  2>/dev/null || which python3 2>/dev/null || echo "")
if [ -z "$PYTHON" ]; then
    echo "ERROR: Python 3 not found."
    echo "       Go to cPanel > Software > Setup Python App and create an app first."
    exit 1
fi
PYVER=$($PYTHON --version 2>&1)
echo "       $PYVER ✓"

# ── Check Node.js ──────────────────────────────────────────
echo "[ 2/7 ] Checking Node.js..."
NODE=$(which node 2>/dev/null || which nodejs 2>/dev/null || echo "")
if [ -z "$NODE" ]; then
    echo "ERROR: Node.js not found."
    echo "       Go to cPanel > Software > Setup Node.js App"
    echo "       Create a Node.js app with startup file: extractor/wa_service.js"
    echo "       Then re-run this installer."
    exit 1
fi
NODE_VER=$(node --version)
echo "       Node $NODE_VER ✓"

# Check Node version >= 18
NODE_MAJOR=$(echo $NODE_VER | sed 's/v//' | cut -d. -f1)
if [ "$NODE_MAJOR" -lt 18 ]; then
    echo "ERROR: Node.js 18+ required (you have $NODE_VER)"
    exit 1
fi

# ── Check Chromium ─────────────────────────────────────────
echo "[ 3/7 ] Checking Chromium..."
CHROME=$(which chromium-browser 2>/dev/null || which chromium 2>/dev/null \
      || which google-chrome 2>/dev/null || echo "")
if [ -z "$CHROME" ]; then
    echo "WARNING: Chromium not found in PATH."
    echo "         Trying common paths..."
    for p in /usr/bin/chromium-browser /usr/bin/chromium /usr/local/bin/chromium; do
        if [ -f "$p" ]; then CHROME="$p"; break; fi
    done
fi
if [ -n "$CHROME" ]; then
    echo "         Found: $CHROME ✓"
    export CHROMIUM_PATH="$CHROME"
    echo "export CHROMIUM_PATH=$CHROME" >> "$APP_DIR/.env"
else
    echo "WARNING: Chromium not found."
    echo "         WhatsApp QR linking may not work without it."
    echo "         Contact your host and ask them to install chromium."
    echo "         Some hosts: yum install chromium  OR  apt install chromium-browser"
fi

# ── Create data directory ──────────────────────────────────
echo "[ 4/7 ] Creating data directory..."
mkdir -p "$DATA_DIR/logs"
mkdir -p "$DATA_DIR/.wa_sessions"
chmod 755 "$DATA_DIR"
echo "export DATA_DIR=$DATA_DIR" >> "$APP_DIR/.env"
echo "       $DATA_DIR ✓"

# ── Python packages ────────────────────────────────────────
echo "[ 5/7 ] Installing Python packages..."
$PYTHON -m venv "$VENV" 2>/dev/null || true
source "$VENV/bin/activate" 2>/dev/null || true
pip install --upgrade pip -q
pip install flask openpyxl pandas -q
echo "       Flask, openpyxl, pandas ✓"

# ── Node.js packages ───────────────────────────────────────
echo "[ 6/7 ] Installing Node.js packages..."
cd "$APP_DIR/extractor"
npm install --prefer-offline 2>/dev/null || npm install
cd "$APP_DIR"
echo "       whatsapp-web.js, express, qrcode ✓"

# ── Write config ────────────────────────────────────────────
echo "[ 7/7 ] Writing config..."
cat > "$APP_DIR/.env" << ENVEOF
DATA_DIR=$DATA_DIR
WA_SERVICE_URL=http://127.0.0.1:3001
WA_ADMIN_PHONE=+17786808901
PORT=5000
CHROMIUM_PATH=$CHROME
ENVEOF
echo "       .env written ✓"

# ── Write .htaccess ────────────────────────────────────────
cat > "$APP_DIR/public/.htaccess" 2>/dev/null || cat > "$APP_DIR/.htaccess" << HTEOF
PassengerEnabled On
PassengerStartupFile passenger_wsgi.py
PassengerAppType wsgi
PassengerPython $VENV/bin/python3

RewriteEngine On
RewriteRule ^(.*)$ - [L]
HTEOF

echo ""
echo "======================================================="
echo "  Installation Complete!"
echo "======================================================="
echo ""
echo "NEXT STEPS:"
echo ""
echo "Step 1 — Set up Python App in cPanel:"
echo "   cPanel > Setup Python App > Create Application"
echo "   - Python version : 3.11 or 3.10"
echo "   - App root       : eventfox  (or wherever this folder is)"
echo "   - Startup file   : passenger_wsgi.py"
echo "   - Entry point    : application"
echo "   - Click Create, then install packages:"
echo "     pip install flask openpyxl pandas"
echo ""
echo "Step 2 — Set up Node.js App in cPanel:"
echo "   cPanel > Setup Node.js App > Create Application"
echo "   - Node.js version: 18 or 20"
echo "   - App root       : eventfox/extractor"
echo "   - Startup file   : wa_service.js"
echo "   - App URL        : (leave blank — internal only)"
echo "   - Environment var: WA_PORT=3001"
echo "   - Environment var: DATA_DIR=$DATA_DIR"
echo "   - Click Create"
echo ""
echo "Step 3 — Open your domain in browser"
echo "   Login with: +17786808901"
echo ""
echo "Note: Both apps must be RUNNING for the system to work."
echo "   Python app = web dashboard"
echo "   Node.js app = WhatsApp connector"
echo ""
