One Hat Cyber Team
Your IP :
216.73.216.36
Server IP :
162.240.179.46
Server :
Linux vps-14493116.nutrivittasaude.com.br 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.2.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
lifeprimeti
/
meta.lifeprimeti.com.br
/
admin
/
View File Name :
empresas.php
<?php require_once __DIR__ . '/../config/database.php'; requireSuperAdmin(); $titulo = 'Gerenciar Empresas'; require_once __DIR__ . '/../includes/header.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) { if ($_POST['acao'] === 'toggle_status') { $id = (int)$_POST['id']; $pdo->prepare("UPDATE empresas SET aprovado = CASE WHEN aprovado = 1 THEN 0 ELSE 1 END WHERE id=?")->execute([$id]); $_SESSION['success_msg'] = 'Status alterado!'; redirect('empresas.php'); } if ($_POST['acao'] === 'toggle_bloqueio') { $id = (int)$_POST['id']; $emp = $pdo->prepare("SELECT bloqueado FROM empresas WHERE id=?")->execute([$id]); $emp = $pdo->query("SELECT bloqueado FROM empresas WHERE id=$id")->fetch(); $novoBloqueio = $emp && $emp['bloqueado'] ? 0 : 1; $motivo = $_POST['motivo'] ?? ''; if ($novoBloqueio) { $pdo->prepare("UPDATE empresas SET bloqueado=1, bloqueado_motivo=?, bloqueado_em=NOW() WHERE id=?")->execute([$motivo, $id]); $_SESSION['success_msg'] = 'Empresa bloqueada!'; } else { $pdo->prepare("UPDATE empresas SET bloqueado=0, bloqueado_motivo=NULL, bloqueado_em=NULL WHERE id=?")->execute([$id]); $_SESSION['success_msg'] = 'Empresa desbloqueada!'; } redirect('empresas.php'); } if ($_POST['acao'] === 'confirm_pagamento') { $id = (int)$_POST['id']; $pdo->prepare("UPDATE empresas SET payment_grace_start=NULL WHERE id=?")->execute([$id]); if (!empty($_POST['data_pagamento'])) { $pdo->prepare("UPDATE empresas SET ultima_fatura_gerada=? WHERE id=?")->execute([$_POST['data_pagamento'], $id]); } // Criar fatura como paga $emp = $pdo->query("SELECT e.plano_id, e.plano_valor, p.valor, p.nome FROM empresas e LEFT JOIN planos p ON e.plano_id=p.id WHERE e.id=$id")->fetch(); if ($emp) { $valor = $emp['plano_valor'] > 0 ? $emp['plano_valor'] : ($emp['valor'] ?? 0); $venc = date('Y-m-d', strtotime('+1 month')); $pdo->prepare("INSERT INTO faturas (empresa_id, plano_id, valor, status, metodo, data_vencimento, data_pagamento) VALUES (?,?,?,'paga','manual',?,?)") ->execute([$id, $emp['plano_id'], $valor, $venc, $_POST['data_pagamento'] ?? date('Y-m-d')]); } $_SESSION['success_msg'] = 'Pagamento manual confirmado!'; redirect('empresas.php'); } if ($_POST['acao'] === 'delete') { $id = (int)$_POST['id']; $pdo->prepare("DELETE FROM empresas WHERE id=?")->execute([$id]); $_SESSION['success_msg'] = 'Empresa removida!'; redirect('empresas.php'); } if ($_POST['acao'] === 'editar') { $id = (int)$_POST['id']; $nome = trim($_POST['nome']); $plano_id = (int)($_POST['plano_id'] ?? 0) ?: null; $documento = trim($_POST['documento']); $telefone = trim($_POST['telefone']); $email = trim($_POST['email']); $endereco = trim($_POST['endereco']); $ativo = (int)($_POST['ativo'] ?? 0); $aprovado = (int)($_POST['aprovado'] ?? 0); $payment_gateway = $_POST['payment_gateway'] ?? null; $data_expiracao = $_POST['data_expiracao'] ?? null; $plano_valor = str_replace(['R$', ' ', '.', ','], ['', '', '', '.'], $_POST['plano_valor'] ?? 0); $pdo->prepare("UPDATE empresas SET nome=?, plano_id=?, documento=?, telefone=?, email=?, endereco=?, ativo=?, aprovado=?, payment_gateway=?, data_expiracao=?, plano_valor=? WHERE id=?") ->execute([$nome, $plano_id, $documento, $telefone, $email, $endereco, $ativo, $aprovado, $payment_gateway, $data_expiracao, $plano_valor, $id]); $_SESSION['success_msg'] = 'Empresa atualizada!'; redirect('empresas.php'); } } $tab = $_GET['tab'] ?? 'todas'; $planos = $pdo->query("SELECT id, nome, valor, gateway_hubpay, gateway_mercadopago, gateway_asaas, gateway_manual FROM planos WHERE ativo = 1 ORDER BY nome")->fetchAll(); if ($tab === 'pendentes') { $empresas = $pdo->query("SELECT e.*, p.nome as plano_nome, p.valor as plano_valor_tabela FROM empresas e LEFT JOIN planos p ON e.plano_id = p.id WHERE e.aprovado = 0 ORDER BY e.created_at DESC")->fetchAll(); } elseif ($tab === 'bloqueadas') { $empresas = $pdo->query("SELECT e.*, p.nome as plano_nome, p.valor as plano_valor_tabela FROM empresas e LEFT JOIN planos p ON e.plano_id = p.id WHERE e.bloqueado = 1 ORDER BY e.bloqueado_em DESC")->fetchAll(); } else { $empresas = $pdo->query("SELECT e.*, p.nome as plano_nome, p.valor as plano_valor_tabela FROM empresas e LEFT JOIN planos p ON e.plano_id = p.id ORDER BY e.nome")->fetchAll(); } ?> <div class="row mb-3"> <div class="col-12"> <div class="card"> <div class="card-header"> <ul class="nav nav-tabs card-header-tabs"> <li class="nav-item"><a class="nav-link <?= $tab === 'todas' ? 'active' : '' ?>" href="empresas.php">Todas</a></li> <li class="nav-item"><a class="nav-link <?= $tab === 'pendentes' ? 'active' : '' ?>" href="empresas.php?tab=pendentes">Pendentes</a></li> <li class="nav-item"><a class="nav-link <?= $tab === 'bloqueadas' ? 'active' : '' ?>" href="empresas.php?tab=bloqueadas">Bloqueadas</a></li> </ul> </div> <div class="card-body p-0"> <table class="table table-striped mb-0"> <thead><tr><th>ID</th><th>Nome</th><th>Plano</th><th>Gateway</th><th>Status</th><th>Bloqueio</th><th>Acoes</th></tr></thead> <tbody> <?php foreach ($empresas as $e): $bloqueado = !empty($e['bloqueado']); $payment_gateway = $e['payment_gateway']; ?> <tr class="<?= $bloqueado ? 'table-danger' : '' ?>"> <td><?= $e['id'] ?></td> <td><?= sanitize($e['nome']) ?></td> <td><?= sanitize($e['plano_nome'] ?? '-') ?></td> <td> <?php if ($payment_gateway): ?> <span class="badge bg-info"><?= ucfirst($payment_gateway) ?></span> <?php else: ?> <span class="badge bg-secondary">Nao definido</span> <?php endif; ?> </td> <td> <?php if ($e['aprovado']): ?><span class="badge bg-success">Ativo</span> <?php else: ?><span class="badge bg-warning">Pendente</span><?php endif; ?> <?= $e['ativo'] ? '' : '<span class="badge bg-danger">Inativo</span>' ?> </td> <td> <?php if ($bloqueado): ?> <span class="badge bg-danger" title="<?= sanitize($e['bloqueado_motivo'] ?? '') ?>">Bloqueado</span> <?php else: ?> <span class="badge bg-success">Liberado</span> <?php endif; ?> </td> <td style="white-space:nowrap"> <button class="btn btn-sm btn-info" data-bs-toggle="modal" data-bs-target="#modalEditar<?= $e['id'] ?>"><i class="bi bi-pencil"></i></button> <?php if ($bloqueado): ?> <form method="POST" style="display:inline" onsubmit="return confirm('Desbloquear empresa?')"> <input type="hidden" name="acao" value="toggle_bloqueio"> <input type="hidden" name="id" value="<?= $e['id'] ?>"> <button class="btn btn-sm btn-success"><i class="bi bi-unlock"></i></button> </form> <?php else: ?> <button class="btn btn-sm btn-danger" data-bs-toggle="modal" data-bs-target="#modalBloquear<?= $e['id'] ?>"><i class="bi bi-lock"></i></button> <?php endif; ?> <form method="POST" style="display:inline" onsubmit="return confirm('Confirmar?')"> <input type="hidden" name="acao" value="toggle_status"> <input type="hidden" name="id" value="<?= $e['id'] ?>"> <button class="btn btn-sm btn-<?= $e['aprovado'] ? 'warning' : 'success' ?>"><i class="bi bi-<?= $e['aprovado'] ? 'pause' : 'play' ?>"></i></button> </form> <?php if ($payment_gateway === 'manual' && !$bloqueado): ?> <button class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#modalConfirmPagamento<?= $e['id'] ?>"><i class="bi bi-credit-card"></i></button> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <?php foreach ($empresas as $e): $bloqueado = !empty($e['bloqueado']); $payment_gateway = $e['payment_gateway']; ?> <?php if ($payment_gateway === 'manual'): ?> <div class="modal fade" id="modalConfirmPagamento<?= $e['id'] ?>" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <form method="POST"> <input type="hidden" name="acao" value="confirm_pagamento"> <input type="hidden" name="id" value="<?= $e['id'] ?>"> <div class="modal-header"><h5 class="modal-title">Confirmar Pagamento Manual</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <div class="modal-body"> <p><strong><?= sanitize($e['nome']) ?></strong></p> <div class="mb-3"><label class="form-label">Data do Pagamento</label><input type="date" name="data_pagamento" class="form-control" value="<?= date('Y-m-d') ?>" required></div> </div> <div class="modal-footer"><button type="submit" class="btn btn-primary"><i class="bi bi-check-lg me-1"></i>Confirmar Pagamento</button></div> </form> </div> </div> </div> <?php endif; ?> <div class="modal fade" id="modalBloquear<?= $e['id'] ?>" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <form method="POST"> <input type="hidden" name="acao" value="toggle_bloqueio"> <input type="hidden" name="id" value="<?= $e['id'] ?>"> <div class="modal-header"><h5 class="modal-title">Bloquear Empresa</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <div class="modal-body"> <p>Deseja bloquear <strong><?= sanitize($e['nome']) ?></strong>?</p> <div class="mb-3"><label class="form-label">Motivo (opcional)</label><textarea name="motivo" class="form-control" rows="2"></textarea></div> </div> <div class="modal-footer"><button type="submit" class="btn btn-danger"><i class="bi bi-lock me-1"></i>Bloquear</button></div> </form> </div> </div> </div> <div class="modal fade" id="modalEditar<?= $e['id'] ?>" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <form method="POST"> <input type="hidden" name="acao" value="editar"> <input type="hidden" name="id" value="<?= $e['id'] ?>"> <div class="modal-header"><h5 class="modal-title">Editar: <?= sanitize($e['nome']) ?></h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <div class="modal-body"> <div class="mb-3"><label class="form-label">Nome</label><input type="text" name="nome" class="form-control" value="<?= sanitize($e['nome']) ?>" required></div> <div class="mb-3"><label class="form-label">Plano</label> <select name="plano_id" class="form-select" onchange="atualizarGateways(this, <?= $e['id'] ?>)"> <option value="">Sem plano</option> <?php foreach ($planos as $p): ?> <option value="<?= $p['id'] ?>" <?= $e['plano_id'] == $p['id'] ? 'selected' : '' ?> data-hubpay="<?= $p['gateway_hubpay'] ?>" data-mercadopago="<?= $p['gateway_mercadopago'] ?>" data-asaas="<?= $p['gateway_asaas'] ?>" data-manual="<?= $p['gateway_manual'] ?>"> <?= sanitize($p['nome']) ?> - <?= formatarMoeda($p['valor']) ?> </option> <?php endforeach; ?> </select> </div> <div class="mb-3" id="gatewayFields<?= $e['id'] ?>"> <label class="form-label">Gateway de Pagamento (Plano)</label> <?php $gateways = []; if ($e['plano_id']) { $planoAtual = $pdo->prepare("SELECT * FROM planos WHERE id=?")->execute([$e['plano_id']]); $planoAtual = $pdo->query("SELECT * FROM planos WHERE id={$e['plano_id']}")->fetch(); if ($planoAtual) { if ($planoAtual['gateway_hubpay']) $gateways[] = 'hubpay'; if ($planoAtual['gateway_mercadopago']) $gateways[] = 'mercadopago'; if ($planoAtual['gateway_asaas']) $gateways[] = 'asaas'; if ($planoAtual['gateway_manual']) $gateways[] = 'manual'; } } ?> <select name="payment_gateway" class="form-select"> <option value="">Nenhum</option> <?php foreach ($gateways as $g): ?> <option value="<?= $g ?>" <?= $e['payment_gateway'] === $g ? 'selected' : '' ?>><?= ucfirst($g) ?></option> <?php endforeach; ?> </select> </div> <div class="mb-3"><label class="form-label">CNPJ/CPF</label><input type="text" name="documento" class="form-control" value="<?= sanitize($e['documento']) ?>"></div> <div class="mb-3"><label class="form-label">Telefone</label><input type="text" name="telefone" class="form-control" value="<?= sanitize($e['telefone']) ?>"></div> <div class="mb-3"><label class="form-label">Email</label><input type="email" name="email" class="form-control" value="<?= sanitize($e['email']) ?>"></div> <div class="mb-3"><label class="form-label">Endereco</label><textarea name="endereco" class="form-control" rows="2"><?= sanitize($e['endereco']) ?></textarea></div> <div class="row g-3"> <div class="col-6"> <div class="form-check"><input type="checkbox" class="form-check-input" name="ativo" value="1" <?= $e['ativo'] ? 'checked' : '' ?>><label class="form-check-label">Ativo</label></div> <div class="form-check"><input type="checkbox" class="form-check-input" name="aprovado" value="1" <?= $e['aprovado'] ? 'checked' : '' ?>><label class="form-check-label">Aprovado</label></div> </div> <div class="col-6"> <label class="form-label">Data Expiracao</label> <input type="date" name="data_expiracao" class="form-control" value="<?= $e['data_expiracao'] ?? '' ?>"> </div> </div> <div class="mb-3 mt-3"> <label class="form-label">Valor Personalizado Plano</label> <input type="text" name="plano_valor" class="form-control mask-valor" value="<?= $e['plano_valor'] ? number_format($e['plano_valor'], 2, ',', '.') : '' ?>"> <small class="text-secondary">Deixe em branco para usar o valor padrao do plano</small> </div> </div> <div class="modal-footer"><button type="submit" class="btn btn-primary"><i class="bi bi-save me-1"></i>Salvar</button></div> </form> </div> </div> </div> <?php endforeach; ?> <script> function atualizarGateways(select, empresaId) { var opt = select.options[select.selectedIndex]; var gateways = []; var nomes = {hubpay:'Hubpay', mercadopago:'Mercado Pago', asaas:'Asaas', manual:'Manual'}; if (opt && opt.value) { if (opt.dataset.hubpay == 1) gateways.push('hubpay'); if (opt.dataset.mercadopago == 1) gateways.push('mercadopago'); if (opt.dataset.asaas == 1) gateways.push('asaas'); if (opt.dataset.manual == 1) gateways.push('manual'); } var sel = document.querySelector('#gatewayFields' + empresaId + ' select'); if (!sel) return; sel.innerHTML = '<option value="">Nenhum</option>'; gateways.forEach(function(g) { var o = document.createElement('option'); o.value = g; o.textContent = nomes[g] || g; sel.appendChild(o); }); } </script> <?php require_once __DIR__ . '/../includes/footer.php'; ?>