#!/usr/bin/env bash
set -e
cd /home/iotcuboc/pyme || exit 1

echo "=============================================="
echo " ElaboraPro Compras V4.11.3 - Ajuste visual"
echo "=============================================="

TS=$(date +%Y%m%d_%H%M%S)
B="backups/elaborapro_compras_v4_11_3_$TS"
mkdir -p "$B"
cp -p public/compras_v3.php "$B/"
cp -p public/compra_editar_v3.php "$B/"
echo "Backup: /home/iotcuboc/pyme/$B"

TMP_C=$(mktemp)
TMP_D=$(mktemp)
trap 'rm -f "$TMP_C" "$TMP_D"' EXIT
cp -p public/compras_v3.php "$TMP_C"
cp -p public/compra_editar_v3.php "$TMP_D"

TMP_C="$TMP_C" TMP_D="$TMP_D" php <<'PHP'
<?php
$fc=getenv('TMP_C'); $fd=getenv('TMP_D');
$c=file_get_contents($fc); $d=file_get_contents($fd);
if ($c===false || $d===false) exit(1);
if (strpos($c,'ELABORAPRO_COMPRAS_V4_11_3')!==false) {
    fwrite(STDERR,"ERROR: V4.11.3 ya aplicado.\n"); exit(1);
}
if (strpos($c,'ELABORAPRO_COMPRAS_V4_11_2')===false) {
    fwrite(STDERR,"ERROR: no se detecta V4.11.2 en compras_v3.php.\n"); exit(1);
}

function rx(&$s,$p,$r,$label){
    $x=preg_replace($p,$r,$s,1,$n);
    if($x===null || $n!==1){fwrite(STDERR,"ERROR patrón $label: coincidencias=$n\n");exit(1);}
    $s=$x;
}

/* Detalle -> verde pastel */
rx(
    $c,
    '/class="btn secondary ep-purchase-action"(\s+href="<\?=\s*BASE_URL\s*\?>\/compra_editar_v3\.php\?id=)/',
    'class="btn ep-purchase-detail ep-purchase-action"$1',
    'Detalle verde'
);

/* Confirmar -> azul pastel */
rx(
    $c,
    '/class="btn ep-purchase-primary ep-purchase-action"(?=[\s\S]{0,250}confirmar=<\?=\s*\(int\)\$r\[[\'"]id[\'"]\])/',
    'class="btn ep-purchase-confirm ep-purchase-action"',
    'Confirmar pastel'
);

/* Buscar: convertir formulario en una fila real */
rx(
    $c,
    '/<form method="get" class="no-print" style="margin:15px 0;display:flex;gap:10px;flex-wrap:wrap">/',
    '<form method="get" class="no-print ep-purchase-search">',
    'form búsqueda'
);

/* Corregir costos -> azul pastel */
rx(
    $d,
    '/class="btn secondary"(?=\s+href="<\?=\s*BASE_URL\s*\?>\/compra_corregir_v3\.php\?id=)/',
    'class="btn ep-purchase-correct"',
    'Corregir costos'
);

$cssC=<<<'CSS'

<style>
/* ELABORAPRO_COMPRAS_V4_11_3 */
.op3-main .ep-purchase-detail{
    background:#BFE3C9;
    border-color:#A8D5B5;
    color:#205C36;
}
.op3-main .ep-purchase-detail:hover{
    background:#AEDAB9;
    border-color:#9BCDAA;
    color:#205C36;
}
.op3-main .ep-purchase-confirm{
    background:#C9DCFA;
    border-color:#AFCBF8;
    color:#174F9E;
}
.op3-main .ep-purchase-confirm:hover{
    background:#BBD3F8;
    border-color:#9EBFF3;
    color:#123F80;
}
.op3-main .ep-purchase-search{
    margin:15px 0;
    display:flex;
    align-items:center;
    gap:10px;
    flex-wrap:nowrap;
}
.op3-main .ep-purchase-search input[type="search"],
.op3-main .ep-purchase-search input[name="q"]{
    flex:1 1 auto;
    min-width:0;
    margin:0;
}
.op3-main .ep-purchase-search .btn,
.op3-main .ep-purchase-search button{
    flex:0 0 auto;
    margin:0;
}
@media (max-width:640px){
    .op3-main .ep-purchase-search{gap:8px}
}
</style>

CSS;

$cssD=<<<'CSS'

<style>
/* ELABORAPRO_COMPRAS_V4_11_3 */
.op3-main .ep-purchase-correct{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:34px;
    padding:6px 12px;
    border-radius:8px;
    text-decoration:none;
    white-space:nowrap;
    background:#C9DCFA;
    border:1px solid #AFCBF8;
    color:#174F9E;
}
.op3-main .ep-purchase-correct:hover{
    background:#BBD3F8;
    border-color:#9EBFF3;
    color:#123F80;
}
</style>

CSS;

$footer='/<\?php\s+render_footer_v3\(\);\s*\?>/';
if(preg_match_all($footer,$c)!==1 || preg_match_all($footer,$d)!==1){
    fwrite(STDERR,"ERROR: footer inesperado.\n"); exit(1);
}
$c=preg_replace($footer,$cssC.'<?php render_footer_v3(); ?>',$c,1);
$d=preg_replace($footer,$cssD.'<?php render_footer_v3(); ?>',$d,1);

foreach(['ELABORAPRO_COMPRAS_V4_11_3','ep-purchase-detail','ep-purchase-confirm','ep-purchase-search'] as $x)
    if(strpos($c,$x)===false){fwrite(STDERR,"ERROR validación compras: $x\n");exit(1);}
foreach(['ELABORAPRO_COMPRAS_V4_11_3','ep-purchase-correct'] as $x)
    if(strpos($d,$x)===false){fwrite(STDERR,"ERROR validación detalle: $x\n");exit(1);}

file_put_contents($fc,$c)===false && exit(1);
file_put_contents($fd,$d)===false && exit(1);
echo "OK: ajustes preparados en temporales.\n";
PHP

echo
echo "===== LINT TEMPORAL ====="
php -l "$TMP_C"
php -l "$TMP_D"

echo
echo "===== VALIDACION ====="
grep -n -E 'ELABORAPRO_COMPRAS_V4_11_3|ep-purchase-detail|ep-purchase-confirm|ep-purchase-search|ep-purchase-correct' "$TMP_C" "$TMP_D"

echo
echo "===== INSTALANDO ====="
cp -p "$TMP_C" public/compras_v3.php
cp -p "$TMP_D" public/compra_editar_v3.php

echo
echo "===== LINT FINAL ====="
if ! php -l public/compras_v3.php || ! php -l public/compra_editar_v3.php; then
    echo "ERROR: restaurando respaldo..."
    cp -p "$B/compras_v3.php" public/compras_v3.php
    cp -p "$B/compra_editar_v3.php" public/compra_editar_v3.php
    exit 1
fi

echo
echo "===== STOCK SIGUE PRESENTE ====="
grep -n -B3 -A10 'upsert_stock_delta' public/compras_v3.php

echo
echo "=============================================="
echo " OK - V4.11.3 instalado"
echo " Respaldo: /home/iotcuboc/pyme/$B"
echo "=============================================="
