<?php
if (!function_exists('renderProductCard')) {
    /**
     * Renderiza um card de produto padrão — layout unificado para toda a loja.
     * @param array $row      Dados do produto vindo do banco.
     * @param bool  $carousel Quando TRUE, omite o wrapper col-* Bootstrap (use dentro do Owl Carousel).
     */
    function renderProductCard($row, $carousel = false, $index = 0) {
        global $conn;
        $id = (int)($row['id'] ?? 0);
        $nomeEscaped = htmlspecialchars($row['nome'] ?? '');
        $imagemUrl = '../adm/uploads/produtos/' . htmlspecialchars($row['imagem_principal'] ?? '');
        $urlProduto = 'produto.php?nome=' . urlencode($row['nome'] ?? '');

        require_once __DIR__ . '/../../adm/config/price_helper.php';

        $hasVariacoes    = false;
        $bestCalc        = null;
        $isVariacaoMenor = false;

        // Calcula os preços do produto base
        $calcBase = calcularPrecoVariacao([], $row);
        $bestCalc = $calcBase;

        // Verifica variações para encontrar o menor preço
        if (isset($conn) && $id > 0) {
            $res_var = $conn->query("SELECT * FROM produto_variacoes WHERE produto_id = $id");
            if ($res_var && $res_var->num_rows > 0) {
                $hasVariacoes = true;
                while ($v = $res_var->fetch_assoc()) {
                    $calc = calcularPrecoVariacao($v, $row);
                    if ($calc['preco_final'] < $bestCalc['preco_final']) {
                        $bestCalc        = $calc;
                        $isVariacaoMenor = true;
                    }
                }
            }
        }

        // Extrai os 3 preços independentes do melhor cálculo
        $precoVarejo    = $bestCalc['preco_varejo'];
        $emPromo        = $bestCalc['em_promocao'];
        $precoPromo     = $bestCalc['preco_promocional'];  // float|null
        $emAtacado      = $bestCalc['em_atacado'];
        $precoAtacado   = $bestCalc['preco_atacado'];       // float|null
        $precoFinal     = $bestCalc['preco_final'];

        // Para badge e compatibilidade
        $isPromo            = $emPromo;
        $menorPrecoFinal    = $precoFinal;
        $maiorPrecoOriginal = $precoVarejo;

        $waNumero = !empty($GLOBALS['whatsappLoja']) ? $GLOBALS['whatsappLoja'] : (!empty($whatsappLoja) ? $whatsappLoja : '');
        
        if (!empty($waNumero)) {
            $waUrl = 'https://wa.me/' . $waNumero . '?text=Olá!%20Tenho%20interesse%20no%20produto%20' . urlencode($row['nome'] ?? '');
            $waTarget = ' target="_blank"';
        } else {
            $waUrl = '#';
            $waTarget = '';
        }
        $waSemNumero = empty($waNumero);

        $estoque = isset($row['estoque']) ? (int)$row['estoque'] : 99;
        $vender_sem_estoque = $row['vender_sem_estoque'] ?? 'não';
        $isEsgotado = ($estoque <= 0 && $vender_sem_estoque === 'não');

        // Imagem com grayscale se esgotado
        $imgStyle = $isEsgotado ? 'filter: grayscale(100%);' : '';

        // --- HTML do card ---
        // No modo carrossel o Owl Carousel gerencia a largura dos slides;
        // o wrapper Bootstrap col-* não deve ser usado (causa card "achatado").
        if ($carousel) {
            $html  = '<div class="product-card-wrapper h-100">';
        } else {
            $delay = 0.1 + (($index % 4) * 0.2); // 0.1s, 0.3s, 0.5s, 0.7s
            $html  = '<div class="col-lg-4 col-md-6 product-card-wrapper wow slideInUp" data-wow-delay="' . $delay . 's">';
        }
        $html .= '  <div class="team-item position-relative h-100">';

        // Badge ESGOTADO ou PROMO ou ATACADO
        if ($isEsgotado) {
            $html .= '    <div class="badge-esgotado">Esgotado</div>';
        } elseif ($isPromo) {
            $porcentagem = 0;
            if ($maiorPrecoOriginal > 0) {
                $porcentagem = round((($maiorPrecoOriginal - $menorPrecoFinal) / $maiorPrecoOriginal) * 100);
            }
            $textoBadge = $porcentagem > 0 ? "{$porcentagem}% OFF" : "Promoção";
            // Etiqueta verde reaproveitando classe esgotado e forçando a cor do tema
            $html .= '    <div class="badge-esgotado" style="background-color: var(--color-success) !important;">' . $textoBadge . '</div>';
        } elseif ($emAtacado) {
            // Etiqueta laranja para Atacado
            $html .= '    <div class="badge-esgotado" style="background-color: #f97316 !important;">Atacado</div>';
        }


        // Imagem
        // Usa o whatsapp1 da tabela dados_loja (definido em theme-init.php) ou fallback
        $waNumero = !empty($GLOBALS['whatsappLoja']) ? $GLOBALS['whatsappLoja'] : (!empty($whatsappLoja) ? $whatsappLoja : '');
        
        // Formatar o preço (apenas para fallback, se precisar)
        $precoFormatado = number_format($menorPrecoFinal, 2, ',', '.');
        $precoOriginalFormatado = number_format($maiorPrecoOriginal, 2, ',', '.');

        $html .= '    <div class="position-relative overflow-hidden" style="z-index: 1;">';
        $html .= '      <a href="' . $urlProduto . '" class="d-block">';
        $html .= '        <img class="product-card-img" src="' . $imagemUrl . '" alt="' . $nomeEscaped . '" style="' . $imgStyle . '">';
        $html .= '      </a>';
        $html .= '    </div>';

        // Corpo
        $html .= '    <div class="team-text bg-light p-4">';
        $html .= '      <a href="' . $urlProduto . '" class="text-decoration-none">';
        $html .= '        <h4 class="product-card-name" style="font-size: 1.25rem; font-weight: 700; color: var(--primary); margin-bottom: 8px;">' . $nomeEscaped . '</h4>';
        $html .= '      </a>';

        $html .= '      <div class="product-card-price-block mb-3">';

        // Prefixo "A partir de" para variações
        if ($isVariacaoMenor) {
            $html .= '        <span style="font-size:0.8rem;color:#888;display:block;font-weight:normal;margin-bottom:2px;">A partir de</span>';
        }

        // ── Bloco de preços: os 3 são independentes e coexistentes ──────────
        // 1. Preço Varejo (sempre exibido, riscado se há promoção)
        if ($emPromo && $precoPromo !== null) {
            // Varejo riscado + Promocional em destaque
            $html .= '        <p class="mb-0" style="font-size:0.85rem;color:#888;text-decoration:line-through;line-height:1;">Varejo: R$ ' . number_format($precoVarejo, 2, ',', '.') . '</p>';
            $html .= '        <p class="mb-1" style="font-size:1.15rem;color:var(--color-success);font-weight:800;line-height:1.2;">Promoção: R$ ' . number_format($precoPromo, 2, ',', '.') . '</p>';
        } else {
            $html .= '        <p class="product-card-price mb-1" style="font-size:1.65rem;font-weight:800;color:var(--primary);line-height:1.1;">R$ ' . number_format($precoVarejo, 2, ',', '.') . '</p>';
        }

        // 2. Preço Atacado (independente — aparece sempre que estiver configurado)
        if ($emAtacado && $precoAtacado !== null) {
            $html .= '        <p class="mb-0" style="font-size:1.5rem;font-weight:900;color:var(--color-warning);line-height:1;">R$ ' . number_format($precoAtacado, 2, ',', '.') . '</p>';
            $html .= '        <span style="font-size:0.72rem;background:var(--color-warning);color:#fff;padding:2px 8px;border-radius:4px;font-weight:700;display:inline-block;margin-top:2px;">🏭 ATACADO</span>';
            
            $regra = $row['regra_atacado'] ?? 'padrao';
            $min_qtd = $row['atacado_min_qtd'] ?? 6;
            $min_valor = $row['atacado_min_valor'] ?? 0.00;
            
            $html .= '        <div style="font-size:0.75rem; color:#666; margin-top:4px; line-height:1.2;">';
            if ($regra == 'padrao') {
                $html .= '          Mínimo: <strong>' . $min_qtd . ' peças</strong>';
            } elseif ($regra == 'valor_global') {
                $html .= '          Mínimo: <strong>R$ ' . number_format($min_valor, 2, ',', '.') . '</strong>';
            } elseif ($regra == 'referencia') {
                $html .= '          Mínimo: <strong>' . $min_qtd . ' peças</strong> (iguais)';
            } elseif ($regra == 'grade') {
                $html .= '          <strong>Grade Fechada</strong>';
            }
            $html .= '        </div>';
        }

        $html .= '      </div>';

        // Botões
        $html .= '      <div class="row mt-2 g-2">';

        if ($isEsgotado) {
            // Produto esgotado: botão WhatsApp para aviso de reposição
            if (!empty($waNumero)) {
                $waEsgotadoUrl = 'https://wa.me/' . $waNumero . '?text=Olá!%20Gostaria%20de%20ser%20avisado%20quando%20o%20produto%20' . urlencode($row['nome'] ?? '') . '%20estiver%20disponível%20novamente.';
            } else {
                $waEsgotadoUrl = '#';
            }
            $onclickEsgotado = $waSemNumero ? ' onclick="event.preventDefault(); alert(\'WhatsApp da loja está indisponível\');"' : '';
            $html .= '        <div class="col-12">';
            $html .= '          <a href="' . $waEsgotadoUrl . '"' . $waTarget . $onclickEsgotado . ' class="btn btn-success w-100 py-2 rounded-0">';
            $html .= '            <i class="fab fa-whatsapp me-2"></i> Avise-me quando chegar';
            $html .= '          </a>';
            $html .= '        </div>';
        } else {
            // Botão Comprar
            $html .= '        <div class="col-6">';
            $html .= '          <button class="btn btn-primary w-100 py-2 rounded-0"';
            if ($hasVariacoes) {
                $html .= '            onclick="window.location.href=\'' . $urlProduto . '\'">';
            } else {
                $html .= '            onclick="addCarrinho(' . $id . ', \'' . addslashes($row['nome'] ?? '') . '\', ' . floatval($precoFinal) . ')">';
            }
            $html .= '            <i class="fas fa-shopping-cart me-2"></i> Comprar';
            $html .= '          </button>';
            $html .= '        </div>';

            // Botão WhatsApp
            $onclickWa = $waSemNumero ? ' onclick="event.preventDefault(); alert(\'WhatsApp da loja está indisponível\');"' : '';
            $html .= '        <div class="col-6">';
            $html .= '          <a href="' . $waUrl . '"' . $waTarget . $onclickWa . ' class="btn btn-success w-100 py-2 rounded-0">';
            $html .= '            <i class="fab fa-whatsapp me-2"></i> WhatsApp';
            $html .= '          </a>';
            $html .= '        </div>';
        }

        $html .= '      </div>'; // row g-2
        $html .= '    </div>';   // team-text
        $html .= '  </div>';     // team-item
        $html .= '</div>';       // product-card-wrapper

        return $html;
    }
}
?>
