#!/usr/bin/env bash
set -euo pipefail

ROOT="/var/www/html/BEBIDAS_ON"
PEDIDOS="$ROOT/public/gestao/pedidos.php"
ENTREGAS="$ROOT/public/gestao/entregas.php"
CSS="$ROOT/public/assets/css/style.css"
HEADER="$ROOT/public/gestao/partials/header.php"
BACKUP="/var/backups/bebidas_on_cancelado_vermelho_$(date +%Y%m%d_%H%M%S)"

if [[ ! -f "$PEDIDOS" || ! -f "$CSS" ]]; then
  echo "ERRO: sistema BEBIDAS_ON não encontrado em $ROOT"
  exit 1
fi

mkdir -p "$BACKUP"
cp -a "$PEDIDOS" "$BACKUP/pedidos.php"
cp -a "$CSS" "$BACKUP/style.css"
[[ -f "$ENTREGAS" ]] && cp -a "$ENTREGAS" "$BACKUP/entregas.php"
[[ -f "$HEADER" ]] && cp -a "$HEADER" "$BACKUP/header.php"

python3 - <<'PY'
from pathlib import Path
import re

root = Path('/var/www/html/BEBIDAS_ON')

# -----------------------------------------------------------------
# PEDIDOS: adiciona classe na linha quando status = CANCELADO.
# -----------------------------------------------------------------
pedidos = root / 'public/gestao/pedidos.php'
code = pedidos.read_text(encoding='utf-8')

if 'pedido-cancelado' not in code:
    patterns = [
        (
            r'(<\?php\s+foreach\s*\(\s*\$orders\s+as\s+\$order\s*\)\s*:\s*\?>\s*)<tr(?:\s+[^>]*)?>',
            r'''\1<tr class="<?= (($order['status'] ?? '') === 'CANCELADO') ? 'pedido-cancelado' : '' ?>">'''
        ),
        (
            r'(<\?php\s+foreach\s*\(\s*\$orders\s+as\s+\$order\s*\)\s*\{\s*\?>\s*)<tr(?:\s+[^>]*)?>',
            r'''\1<tr class="<?= (($order['status'] ?? '') === 'CANCELADO') ? 'pedido-cancelado' : '' ?>">'''
        ),
    ]
    changed = False
    for pattern, replacement in patterns:
        code2, n = re.subn(pattern, replacement, code, count=1, flags=re.S)
        if n:
            code = code2
            changed = True
            break
    if not changed:
        raise SystemExit('ERRO: não encontrei a linha da tabela em pedidos.php')
    pedidos.write_text(code, encoding='utf-8')

# -----------------------------------------------------------------
# ENTREGAS: também destaca entrega cancelada, se a página existir.
# -----------------------------------------------------------------
entregas = root / 'public/gestao/entregas.php'
if entregas.exists():
    code = entregas.read_text(encoding='utf-8')
    if 'entrega-cancelada' not in code:
        pattern = r'(<\?php\s+foreach\s*\(\s*\$deliveries\s+as\s+\$en\s*\)\s*:\s*\?>)\s*<tr(?:\s+[^>]*)?>'
        replacement = r'''\1<tr class="<?= ((($en['status'] ?? '') === 'CANCELADO') || (($en['status_pedido'] ?? '') === 'CANCELADO')) ? 'pedido-cancelado entrega-cancelada' : '' ?>">'''
        code2, n = re.subn(pattern, replacement, code, count=1, flags=re.S)
        if n:
            entregas.write_text(code2, encoding='utf-8')
        else:
            print('AVISO: estrutura de entregas.php diferente; pedidos.php foi corrigido normalmente.')

# -----------------------------------------------------------------
# CSS idempotente.
# -----------------------------------------------------------------
css = root / 'public/assets/css/style.css'
style = css.read_text(encoding='utf-8')
marker = '/* CANCELADO VERMELHO - BEBIDAS ON */'
if marker not in style:
    style += r'''

/* CANCELADO VERMELHO - BEBIDAS ON */
table tbody tr.pedido-cancelado td{
    background:#fff0f0 !important;
    color:#991b1b !important;
    border-bottom-color:#efb5b5 !important;
}

table tbody tr.pedido-cancelado td:first-child{
    box-shadow:inset 6px 0 0 #dc2626;
}

table tbody tr.pedido-cancelado strong,
table tbody tr.pedido-cancelado .text-danger{
    color:#b91c1c !important;
}

table tbody tr.pedido-cancelado .table-subtitle,
table tbody tr.pedido-cancelado .muted{
    color:#a94444 !important;
}

table tbody tr.pedido-cancelado select{
    background:#fff7f7 !important;
    border-color:#dc2626 !important;
    color:#991b1b !important;
    font-weight:800 !important;
}

table tbody tr.pedido-cancelado .status-badge{
    background:#fee2e2 !important;
    color:#991b1b !important;
    border:1px solid #dc2626 !important;
}

table tbody tr.pedido-cancelado .btn-primary{
    background:#b91c1c !important;
    color:#fff !important;
}

table tbody tr.pedido-cancelado:hover td{
    background:#ffe3e3 !important;
}
'''
    css.write_text(style, encoding='utf-8')

# Cache bust do CSS, sem depender do formato exato da URL.
header = root / 'public/gestao/partials/header.php'
if header.exists():
    h = header.read_text(encoding='utf-8')
    h2, n = re.subn(
        r'(/assets/css/style\.css)(?:\?v=[^\'\"]*)?',
        r'\1?v=20260802_cancelado_vermelho',
        h,
        count=1
    )
    if n:
        header.write_text(h2, encoding='utf-8')

print('PORTAL CONFIGURADO: pedidos cancelados em vermelho.')
PY

php -l "$PEDIDOS"
[[ -f "$ENTREGAS" ]] && php -l "$ENTREGAS"
[[ -f "$HEADER" ]] && php -l "$HEADER"

chown www-data:www-data "$PEDIDOS" "$CSS"
chmod 664 "$PEDIDOS" "$CSS"
if [[ -f "$ENTREGAS" ]]; then
  chown www-data:www-data "$ENTREGAS"
  chmod 664 "$ENTREGAS"
fi
if [[ -f "$HEADER" ]]; then
  chown www-data:www-data "$HEADER"
  chmod 664 "$HEADER"
fi

systemctl reload apache2

echo "CANCELADO VERMELHO INSTALADO"
echo "Backup: $BACKUP"
echo "Pedidos: http://51.91.156.22/BEBIDAS_ON/public/gestao/pedidos.php"
echo "Entregas: http://51.91.156.22/BEBIDAS_ON/public/gestao/entregas.php"
