prepare('SELECT COUNT(*) FROM acoes WHERE conta_id = ? AND usuario_id = ?'); $stmt->execute([$id, $ao_usuario_id]); if ((int) $stmt->fetchColumn() > 0) { $erro = 'Não é possível excluir: esta conta já tem ações registradas nela.'; } else { $pdo->prepare('DELETE FROM contas WHERE id = ? AND usuario_id = ?')->execute([$id, $ao_usuario_id]); header('Location: contas.php?excluido=1'); exit; } } if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['acao'] ?? '') === 'salvar') { $id = (int) ($_POST['id'] ?? 0); $corretora_id = (int) ($_POST['corretora_id'] ?? 0); $nome = trim($_POST['nome'] ?? ''); // A corretora é um catálogo global — só precisa existir, não precisa // pertencer a este usuário. $stmtCorretora = $pdo->prepare('SELECT id FROM corretoras WHERE id = ?'); $stmtCorretora->execute([$corretora_id]); $corretoraValida = (bool) $stmtCorretora->fetch(); if ($nome === '' || !$corretoraValida) { $erro = 'Selecione uma corretora válida e informe o nome da conta.'; } else { // O limite de até 3 contas é por usuário dentro de cada corretora — // não pelo total de contas de todo mundo naquela corretora. $stmtCount = $pdo->prepare('SELECT COUNT(*) FROM contas WHERE corretora_id = ? AND usuario_id = ? AND id != ?'); $stmtCount->execute([$corretora_id, $ao_usuario_id, $id ?: 0]); if ((int) $stmtCount->fetchColumn() >= AO_MAX_CONTAS_POR_CORRETORA) { $erro = 'Esta corretora já tem o máximo de ' . AO_MAX_CONTAS_POR_CORRETORA . ' contas.'; } else { try { if ($id > 0) { $stmt = $pdo->prepare('UPDATE contas SET corretora_id = ?, nome = ? WHERE id = ? AND usuario_id = ?'); $stmt->execute([$corretora_id, $nome, $id, $ao_usuario_id]); } else { $stmt = $pdo->prepare('INSERT INTO contas (corretora_id, usuario_id, nome) VALUES (?, ?, ?)'); $stmt->execute([$corretora_id, $ao_usuario_id, $nome]); } header('Location: contas.php?salvo=1'); exit; } catch (PDOException $e) { $erro = ($e->getCode() === '23000') ? 'Essa corretora já tem uma conta com esse nome.' : ('Erro ao salvar: ' . $e->getMessage()); } } } } $editando = null; if (isset($_GET['editar'])) { $stmt = $pdo->prepare('SELECT * FROM contas WHERE id = ? AND usuario_id = ?'); $stmt->execute([(int) $_GET['editar'], $ao_usuario_id]); $editando = $stmt->fetch() ?: null; } elseif (isset($_GET['corretora'])) { // Vindo de "Ver contas" em Corretoras: só pré-seleciona a corretora no formulário. $editando = ['id' => 0, 'corretora_id' => (int) $_GET['corretora'], 'nome' => '']; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['acao'] ?? '') === 'salvar' && $erro) { $editando = ['id' => $id, 'corretora_id' => $corretora_id, 'nome' => $nome]; } if (isset($_GET['salvo'])) $sucesso = 'Conta salva com sucesso.'; if (isset($_GET['excluido'])) $sucesso = 'Conta excluída.'; // Corretora é global: a lista de opções é a mesma para todos os usuários. $stmtCorretoras = $pdo->query('SELECT id, nome FROM corretoras ORDER BY nome'); $corretoras = $stmtCorretoras->fetchAll(); $stmt = $pdo->prepare( 'SELECT ct.*, cr.nome AS corretora_nome, (SELECT COUNT(*) FROM acoes a WHERE a.conta_id = ct.id) AS total_acoes FROM contas ct INNER JOIN corretoras cr ON cr.id = ct.corretora_id WHERE ct.usuario_id = ? ORDER BY cr.nome, ct.nome' ); $stmt->execute([$ao_usuario_id]); $contas = $stmt->fetchAll(); require __DIR__ . '/includes/header.php'; ?>
Nenhuma corretora cadastrada ainda no sistema. Cadastre uma corretora antes de criar contas.
Você pode ter até 3 contas suas em cada corretora.
| Corretora | Conta | Ações vinculadas | |
|---|---|---|---|
| Nenhuma conta cadastrada ainda. | |||
| = htmlspecialchars($c['corretora_nome']) ?> | = htmlspecialchars($c['nome']) ?> | = (int) $c['total_acoes'] ?> | Editar |