<?php
require_once 'conexao.php';
session_start();

date_default_timezone_set('America/Sao_Paulo');

if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

if (isset($_SESSION['mensagem'])) {
    echo '<div style="position: fixed; top: 80px; right: 20px; padding: 10px 20px; background: #2ecc71; color: white; border-radius: 4px; z-index: 2000;">'
       . htmlspecialchars($_SESSION['mensagem'])
       . '</div>';

    unset($_SESSION['mensagem']);

    echo '<script>
            setTimeout(function() {
                document.querySelector("div[style*=\'position: fixed\']").style.display = "none";
            }, 3000);
          </script>';
}

$clienteId = (int)$_GET['id'];

// Busca os dados do cliente
$sql = "SELECT * FROM clientes WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $clienteId);
$stmt->execute();
$resultado = $stmt->get_result();

if ($resultado->num_rows === 0) {
    header('Location: lista_clientes.php?erro=cliente_nao_encontrado');
    exit;
}

$cliente = $resultado->fetch_assoc();
$stmt->close();

// Buscar logs do cliente
$sqlLogs = "SELECT * FROM cliente_logs WHERE cliente_id = ? ORDER BY id DESC";
$stmtLogs = $conn->prepare($sqlLogs);
$stmtLogs->bind_param("i", $clienteId);
$stmtLogs->execute();
$resultadoLogs = $stmtLogs->get_result();
$logs = $resultadoLogs->fetch_all(MYSQLI_ASSOC);
$stmtLogs->close();

// Buscar produtos do cliente
$sqlProdutos = "SELECT cp.*, lp.nome as nome_original, lp.descricao as descricao_original 
               FROM cliente_produtos cp
               LEFT JOIN lista_produtos lp ON cp.lista_produto_id = lp.id
               WHERE cp.cliente_id = ?
               ORDER BY cp.data_cadastro DESC";
$stmtProdutos = $conn->prepare($sqlProdutos);
$stmtProdutos->bind_param("i", $clienteId);
$stmtProdutos->execute();
$resultadoProdutos = $stmtProdutos->get_result();
$produtos = $resultadoProdutos->fetch_all(MYSQLI_ASSOC);
$stmtProdutos->close();

// Buscar atividades do cliente com filtro de status
$filtroStatus = $_GET['status'] ?? 'todos';

$sqlAtividades = "SELECT *, 
                 CASE 
                   WHEN concluida = 1 THEN 'concluida'
                   WHEN data_agendada < NOW() THEN 'atrasada'
                   ELSE 'pendente'
                 END AS status,
                 notificar, data_notificacao
                 FROM atividades 
                 WHERE cliente_id = ?";

if ($filtroStatus !== 'todos') {
    if ($filtroStatus === 'concluida') {
        $sqlAtividades .= " AND concluida = 1";
    } elseif ($filtroStatus === 'pendente') {
        $sqlAtividades .= " AND concluida = 0 AND data_agendada >= NOW()";
    } elseif ($filtroStatus === 'atrasada') {
        $sqlAtividades .= " AND concluida = 0 AND data_agendada < NOW()";
    }
}

$sqlAtividades .= " ORDER BY data_agendada ASC";

$stmtAtividades = $conn->prepare($sqlAtividades);
$stmtAtividades->bind_param("i", $clienteId);
$stmtAtividades->execute();
$resultadoAtividades = $stmtAtividades->get_result();
$atividades = $resultadoAtividades->fetch_all(MYSQLI_ASSOC);
$stmtAtividades->close();

// Buscar arquivos do cliente
$sqlArquivos = "SELECT * FROM cliente_arquivos WHERE cliente_id = ? ORDER BY data_upload DESC";
$stmtArquivos = $conn->prepare($sqlArquivos);
$stmtArquivos->bind_param("i", $clienteId);
$stmtArquivos->execute();
$resultadoArquivos = $stmtArquivos->get_result();
$arquivos = $resultadoArquivos->fetch_all(MYSQLI_ASSOC);
$stmtArquivos->close();

// Buscar lista de atividades padrão
$listaAtividades = [];
$sqlListaAtividades = "SELECT * FROM lista_atividades WHERE ativo = 1 ORDER BY nome";
$resultadoListaAtividades = $conn->query($sqlListaAtividades);
if ($resultadoListaAtividades) {
    $listaAtividades = $resultadoListaAtividades->fetch_all(MYSQLI_ASSOC);
}

// Calcular valor total de todos os produtos
$valorTotalProdutos = 0;
$quantidadeTotalProdutos = 0;
foreach ($produtos as $produto) {
    $valorTotalProdutos += $produto['valor'];
    $quantidadeTotalProdutos += $produto['quantidade'];
}

// Buscar lista de produtos disponíveis
$listaProdutos = [];
$sqlListaProdutos = "SELECT * FROM lista_produtos WHERE ativo = 1 ORDER BY nome";
$resultadoListaProdutos = $conn->query($sqlListaProdutos);
if ($resultadoListaProdutos) {
    $listaProdutos = $resultadoListaProdutos->fetch_all(MYSQLI_ASSOC);
}

$campos = [
    'Nome Cliente', 'Email', 'Telefone', 'Telefone 2','Endereco', 'Cidade', 'Estado',
    'CEP', 'Bairro', 'Complemento', 'Instagram', 'Linkedin','Observacoes', 'status'
];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['cadastrar_atividade'])) {
        // Verificar CSRF token
        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
            $_SESSION['mensagem'] = "Token de segurança inválido!";
            header("Location: editar_cliente.php?id=$clienteId");
            exit;
        }

        $tipoCadastro = $_POST['tipo_cadastro_atividade'] ?? 'manual';
        $descricao = '';
        $notificar = isset($_POST['notificar']) ? 1 : 0;
        $tempo_notificacao = isset($_POST['tempo_notificacao']) ? (int)$_POST['tempo_notificacao'] : 0;
        $unidade_tempo = $_POST['unidade_tempo'] ?? 'minutos';
        
        if ($tipoCadastro === 'lista') {
            $listaAtividadeId = (int)$_POST['lista_atividade_id'];
            
            // Verificar se a atividade existe
            $sqlVerifica = "SELECT * FROM lista_atividades WHERE id = ?";
            $stmtVerifica = $conn->prepare($sqlVerifica);
            $stmtVerifica->bind_param("i", $listaAtividadeId);
            $stmtVerifica->execute();
            $atividade = $stmtVerifica->get_result()->fetch_assoc();
            $stmtVerifica->close();
            
            if (!$atividade) {
                $_SESSION['mensagem'] = "Atividade selecionada não encontrada!";
                header("Location: editar_cliente.php?id=$clienteId#atividades");
                exit;
            }
            
            $descricao = $atividade['nome'];
            if (!empty($atividade['descricao'])) {
                $descricao .= ": " . $atividade['descricao'];
            }
        } else {
            $descricao = trim($_POST['descricao_atividade'] ?? '');
            
            if (empty($descricao)) {
                $_SESSION['mensagem'] = "Descrição da atividade é obrigatória!";
                header("Location: editar_cliente.php?id=$clienteId#atividades");
                exit;
            }
        }
        
        $dataAtividade = trim($_POST['data_atividade'] ?? '');
        
        if (empty($dataAtividade)) {
            $_SESSION['mensagem'] = "Data da atividade é obrigatória!";
            header("Location: editar_cliente.php?id=$clienteId#atividades");
            exit;
        }
        
        // Converter data para formato MySQL
        $dataMySQL = date('Y-m-d H:i:s', strtotime($dataAtividade));
        
        // Calcular data da notificação se necessário
        $dataNotificacao = null;
        if ($notificar && $tempo_notificacao > 0) {
            $intervalo = $tempo_notificacao;
            if ($unidade_tempo === 'horas') {
                $intervalo *= 60;
            } elseif ($unidade_tempo === 'dias') {
                $intervalo *= 1440;
            }
            
            $dataNotificacao = date('Y-m-d H:i:s', strtotime("-$intervalo minutes", strtotime($dataAtividade)));
        }
        
        $usuarioId = $_SESSION['usuario_id'] ?? 0;
        $nomeUsuario = $_SESSION['usuario_nome'] ?? 'Sistema';
        
        // Inserir atividade
        $sqlInsert = "INSERT INTO atividades 
                     (cliente_id, descricao, data_agendada, notificar, data_notificacao, usuario_id, nome_usuario, data_cadastro)
                     VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
        $stmtInsert = $conn->prepare($sqlInsert);
        $stmtInsert->bind_param("issiiss", 
            $clienteId,
            $descricao,
            $dataMySQL,
            $notificar,
            $dataNotificacao,
            $usuarioId,
            $nomeUsuario
        );
        
        if ($stmtInsert->execute()) {
            // Log da ação
            $detalhes = "Atividade cadastrada:\n";
            $detalhes .= "- Descrição: $descricao\n";
            $detalhes .= "- Data agendada: $dataAtividade\n";
            if ($notificar && $tempo_notificacao > 0) {
                $detalhes .= "- Notificação: $tempo_notificacao $unidade_tempo antes\n";
            }
            
            $sqlLog = "INSERT INTO cliente_logs (cliente_id, usuario_id, nome_usuario, acao, detalhes)
                       VALUES (?, ?, ?, 'cadastro_atividade', ?)";
            $stmtLog = $conn->prepare($sqlLog);
            $stmtLog->bind_param("iiss", $clienteId, $usuarioId, $nomeUsuario, $detalhes);
            $stmtLog->execute();
            $stmtLog->close();
            
            $_SESSION['mensagem'] = "Atividade cadastrada com sucesso!";
            header("Location: editar_cliente.php?id=$clienteId#atividades");
            exit;
        } else {
            $_SESSION['mensagem'] = "Erro ao cadastrar atividade: " . $conn->error;
            header("Location: editar_cliente.php?id=$clienteId");
            exit;
        }
    }
    // Outros métodos POST...
}

// Restante do código HTML permanece o mesmo...
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <!-- Cabeçalho permanece o mesmo... -->
</head>
<body>
    <!-- Código HTML anterior permanece o mesmo até a seção de atividades -->

    <div id="atividades" class="tab-content">
        <div class="form-atividade">
            <h3>Nova Atividade</h3>
            <form method="POST">
                <input type="hidden" name="cadastrar_atividade" value="1">
                <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
                
                <div class="tipo-cadastro">
                    <label>
                        <input type="radio" name="tipo_cadastro_atividade" value="manual" checked onchange="mudarTipoCadastroAtividade(this.value)"> 
                        Cadastrar manualmente
                    </label>
                    <label>
                        <input type="radio" name="tipo_cadastro_atividade" value="lista" onchange="mudarTipoCadastroAtividade(this.value)"> 
                        Selecionar da lista de atividades
                    </label>
                </div>
                
                <div id="form-atividade-manual" class="form-cadastro active">
                    <label for="descricao_atividade">Descrição da Atividade</label>
                    <textarea name="descricao_atividade" id="descricao_atividade" rows="3" required></textarea>
                </div>
                
                <div id="form-atividade-lista" class="form-cadastro">
                    <label for="lista_atividade_id">Atividade</label>
                    <select name="lista_atividade_id" id="lista_atividade_id">
                        <option value="">-- Selecione uma atividade --</option>
                        <?php foreach ($listaAtividades as $atividade): ?>
                            <option value="<?= $atividade['id'] ?>">
                                <?= htmlspecialchars($atividade['nome']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                
                <label for="data_atividade">Data e Hora para Conclusão</label>
                <input type="datetime-local" name="data_atividade" id="data_atividade" required>
                
                <div class="notificacao-container">
                    <label>
                        <input type="checkbox" name="notificar" id="notificar" onchange="toggleNotificacao(this.checked)">
                        Notificar antes da atividade
                    </label>
                    
                    <div id="campos-notificacao" style="display: none;">
                        <div class="notificacao-fields">
                            <label for="tempo_notificacao">Notificar</label>
                            <input type="number" name="tempo_notificacao" id="tempo_notificacao" min="1" value="15">
                            <select name="unidade_tempo" id="unidade_tempo">
                                <option value="minutos">minutos antes</option>
                                <option value="horas">horas antes</option>
                                <option value="dias">dias antes</option>
                            </select>
                        </div>
                    </div>
                </div>
                
                <button type="submit" class="btn">
                    <i class="fas fa-calendar-plus"></i> Agendar Atividade
                </button>
            </form>
        </div>

        <!-- Restante do código HTML permanece o mesmo... -->
    </div>

    <!-- Restante do código HTML permanece o mesmo... -->

    <script>
        // Funções JavaScript permanecem as mesmas, com a adição de:
        function mudarTipoCadastroAtividade(tipo) {
            document.getElementById('form-atividade-manual').style.display = tipo === 'manual' ? 'block' : 'none';
            document.getElementById('form-atividade-lista').style.display = tipo === 'lista' ? 'block' : 'none';
        }
        
        function toggleNotificacao(habilitado) {
            document.getElementById('campos-notificacao').style.display = habilitado ? 'block' : 'none';
        }

        // Configurar data/hora padrão para o campo de atividade
        document.addEventListener('DOMContentLoaded', function() {
            const now = new Date();
            now.setHours(now.getHours() + 1);
            
            const year = now.getFullYear();
            const month = String(now.getMonth() + 1).padStart(2, '0');
            const day = String(now.getDate()).padStart(2, '0');
            const hours = String(now.getHours()).padStart(2, '0');
            const minutes = String(now.getMinutes()).padStart(2, '0');
            
            document.getElementById('data_atividade').value = `${year}-${month}-${day}T${hours}:${minutes}`;
            
            if (window.location.hash) {
                const tabName = window.location.hash.substring(1);
                if (tabName) {
                    const tabButtons = document.getElementsByClassName('tab-button');
                    for (let i = 0; i < tabButtons.length; i++) {
                        if (tabButtons[i].getAttribute('onclick').includes(tabName)) {
                            tabButtons[i].click();
                            break;
                        }
                    }
                }
            }
        });
    </script>
</body>
</html>