#!/usr/bin/env bash
# Weekly check: detect if the published GSheet has been updated (all 3 tabs)
# Usage: ./check_gsheet.sh [--quiet]

set -euo pipefail

URLS=(
    'https://docs.google.com/spreadsheets/d/e/2PACX-1vS8FoDF7YhI--Gg8YpmV_xVND7E8v0pCaM-MneJNJMIkVherpbl1xyFYWaBbtVBWGqHWIJh4m5m7Pau/pub?output=csv'
    'https://docs.google.com/spreadsheets/d/e/2PACX-1vS8FoDF7YhI--Gg8YpmV_xVND7E8v0pCaM-MneJNJMIkVherpbl1xyFYWaBbtVBWGqHWIJh4m5m7Pau/pub?output=csv&gid=1278142382'
    'https://docs.google.com/spreadsheets/d/e/2PACX-1vS8FoDF7YhI--Gg8YpmV_xVND7E8v0pCaM-MneJNJMIkVherpbl1xyFYWaBbtVBWGqHWIJh4m5m7Pau/pub?output=csv&gid=253472677'
)
HASH_FILE="$HOME/.gsheet_mz_hash"
LOG_FILE="$HOME/.gsheet_mz_log"

fetch_or_skip() {
    local body rc=0
    body=$(curl -sL --max-time 30 "$1") || rc=$?
    if [ $rc -ne 0 ]; then
        echo "$(date '+%Y-%m-%d %H:%M') — ⚠ Fetch failed (curl exit $rc), skipping" >> "$LOG_FILE"
        return 1
    fi
    if [ ${#body} -lt 100 ]; then
        echo "$(date '+%Y-%m-%d %H:%M') — ⚠ Empty/short response, skipping" >> "$LOG_FILE"
        return 1
    fi
    echo "$body"
}

ALL=""
for u in "${URLS[@]}"; do
    body=$(fetch_or_skip "$u") || exit 0
    ALL+=$body
done
CURRENT=$(echo "$ALL" | sha256sum | cut -d' ' -f1)

if [ ! -f "$HASH_FILE" ]; then
    echo "$CURRENT" > "$HASH_FILE"
    echo "$(date '+%Y-%m-%d %H:%M') — INIT hash stored: ${CURRENT:0:12}..." | tee -a "$LOG_FILE"
    exit 0
fi

OLD=$(cat "$HASH_FILE")

if [ "$CURRENT" != "$OLD" ]; then
    MSG="⚠ GSheet MZ mise à jour ! Hash: ${OLD:0:12} → ${CURRENT:0:12}"
    echo "$(date '+%Y-%m-%d %H:%M') — $MSG" | tee -a "$LOG_FILE"
    echo "$CURRENT" > "$HASH_FILE"
    if [ -f "$HOME/.hermes/.env" ]; then
        set -a; source "$HOME/.hermes/.env"; set +a
        curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
            -d "chat_id=${TELEGRAM_HOME_CHANNEL}" \
            -d "text=${MSG}" > /dev/null
    fi
else
    if [ "${1:-}" != "--quiet" ]; then
        echo "$(date '+%Y-%m-%d %H:%M') — ✓ Pas de changement" >> "$LOG_FILE"
    fi
fi
