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

// Verifica se o usuário está logado
if (!isset($_SESSION['logado'])) {
    header('Location: login.php');
    exit;
}

// Verifica o tenant_id
$tenant_id = $_SESSION['tenant_id'] ?? null;
if (!$tenant_id || !is_numeric($tenant_id)) {
    die("Erro: tenant_id inválido.");
}

// Informações da sessão
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';
$is_admin = ($permissao === 'admin');
$is_super_admin = ($permissao === 'super_admin');

// 🔥 NOVA FUNÇÃO CRÍTICA: Sanitizar para JavaScript
function sanitizarParaJS($texto) {
    if (empty($texto)) return '';
    
    // Primeiro, converter para JSON (isso escapa tudo corretamente)
    $json = json_encode($texto, JSON_UNESCAPED_UNICODE);
    
    // json_encode retorna uma string JSON, então precisamos remover as aspas externas
    // para usar diretamente no JavaScript
    return $json;
}

// 🔥 FUNÇÃO PARA SANITIZAR HTML
function sanitizarParaHTML($texto) {
    if (empty($texto)) return '';
    
    // Remove caracteres de controle (exceto quebra de linha)
    $texto = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/u', '', $texto);
    
    // Converte quebras de linha para HTML e escapa caracteres especiais
    return nl2br(htmlspecialchars($texto, ENT_QUOTES | ENT_HTML5, 'UTF-8'));
}

// 🔥 FUNÇÃO AUXILIAR: Para usar em atributos data-*
function sanitizarParaAtributo($texto) {
    if (empty($texto)) return '';
    return htmlspecialchars($texto, ENT_QUOTES, 'UTF-8');
}

// FUNÇÃO AUXILIAR PARA FORMATAR DURAÇÃO
function formatarDuracao($minutos) {
    if ($minutos < 60) {
        return $minutos . ' minutos';
    } else {
        $horas = floor($minutos / 60);
        $minutos_restantes = $minutos % 60;
        if ($minutos_restantes == 0) {
            return $horas . ' hora' . ($horas > 1 ? 's' : '');
        } else {
            return $horas . 'h' . $minutos_restantes . 'min';
        }
    }
}

// Buscar se o usuário pode ver todos os clientes
$ver_todos_clientes = 0;
if ($usuario_id) {
    $stmtPerm = $conn->prepare("SELECT ver_todos_clientes FROM usuarios WHERE id = ?");
    $stmtPerm->bind_param("i", $usuario_id);
    $stmtPerm->execute();
    $resultPerm = $stmtPerm->get_result();
    
    if ($resultPerm->num_rows > 0) {
        $linhaPerm = $resultPerm->fetch_assoc();
        $ver_todos_clientes = isset($linhaPerm['ver_todos_clientes']) ? (int)$linhaPerm['ver_todos_clientes'] : 0;
    }
    $stmtPerm->close();
}

// Configura fuso horário
date_default_timezone_set('America/Sao_Paulo');

// Obter atividades do usuário (incluindo agendas compartilhadas)
$atividades = [];

if ($usuario_id) {
    $sql = "
        SELECT 
            a.id,
            a.nome AS titulo,
            a.descricao,
            a.data_agendada,
            a.concluida,
            a.lista_atividade_id,
            a.notificacao_minutos_antes,
            a.duracao_minutos,
            la.nome AS nome_atividade,
            la.descricao AS descricao_atividade,
            a.nome AS nome_atividade_original,
            CASE 
                WHEN c.Nome_Cliente IS NULL THEN a.nome
                ELSE c.Nome_Cliente
            END AS nome_cliente,
            a.cliente_id,
            u.nome AS usuario_nome,
            u.id AS usuario_id,
            ca.usuario_compartilhado_id IS NOT NULL AS agenda_compartilhada,
            a.usuario_id AS proprietario_id
        FROM atividades a
        LEFT JOIN lista_atividades la ON a.lista_atividade_id = la.id
        LEFT JOIN clientes c ON a.cliente_id = c.id AND c.tenant_id = ?
        LEFT JOIN usuarios u ON a.usuario_id = u.id
        LEFT JOIN compartilhamento_agenda ca ON (a.usuario_id = ca.usuario_proprietario_id AND ca.usuario_compartilhado_id = ? AND ca.ativo = 1)
        WHERE (a.usuario_id = ? OR ca.usuario_compartilhado_id = ?) 
          AND a.ativo = 1 
          AND (c.tenant_id IS NULL OR c.tenant_id = ?)
        ORDER BY a.data_agendada
    ";

    if ($stmt = $conn->prepare($sql)) {
        $stmt->bind_param("iiiii", $tenant_id, $usuario_id, $usuario_id, $usuario_id, $tenant_id);
        $stmt->execute();
        $result = $stmt->get_result();

        while ($row = $result->fetch_assoc()) {
            // 🔥 SANITIZAR A DESCRIÇÃO AO BUSCAR DO BANCO
            if (!empty($row['descricao'])) {
                $row['descricao_sanitizada'] = sanitizarParaJS($row['descricao']);
                $row['descricao_html'] = sanitizarParaHTML($row['descricao']);
            } else {
                $row['descricao_sanitizada'] = '""';
                $row['descricao_html'] = '';
            }
            
            if (empty($row['usuario_nome'])) {
                $row['usuario_nome'] = 'Fluxo Automatizado';
            }
            if (empty($row['usuario_id'])) {
                $row['usuario_id'] = 0;
            }
            if (empty($row['nome_cliente'])) {
                $row['nome_cliente'] = '(sem cliente)';
            }

            $atividades[] = $row;
        }

        $stmt->close();
    } else {
        error_log("Erro ao preparar a consulta: " . $conn->error);
    }
}

// Obter lista de clientes para o select
$clientes = [];
if ($is_admin || $is_super_admin || $ver_todos_clientes === 1) {
    $sql_clientes = "SELECT id, Nome_Cliente FROM clientes WHERE tenant_id = ? ORDER BY Nome_Cliente";
    if ($stmt = $conn->prepare($sql_clientes)) {
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()) {
            $clientes[] = $row;
        }
        $stmt->close();
    }
} else {
    $sql_clientes = "SELECT id, Nome_Cliente FROM clientes WHERE tenant_id = ? AND responsavel = ? ORDER BY Nome_Cliente";
    if ($stmt = $conn->prepare($sql_clientes)) {
        $stmt->bind_param("ii", $tenant_id, $usuario_id);
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()) {
            $clientes[] = $row;
        }
        $stmt->close();
    }
}

// Obter lista de tipos de atividades
$tipos_atividades = [];
$sql_tipos = "SELECT id, nome FROM lista_atividades WHERE tenant_id = ? AND ativo = 1 ORDER BY nome";
if ($stmt = $conn->prepare($sql_tipos)) {
    $stmt->bind_param("i", $tenant_id);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $tipos_atividades[] = $row;
    }
    $stmt->close();
}

// Obter lista de usuários para compartilhamento
$usuarios_compartilhamento = [];
$sql_usuarios = "SELECT id, nome, email FROM usuarios WHERE tenant_id = ? AND id != ? AND ativo = 'sim' ORDER BY nome";
if ($stmt = $conn->prepare($sql_usuarios)) {
    $stmt->bind_param("ii", $tenant_id, $usuario_id);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $usuarios_compartilhamento[] = $row;
    }
    $stmt->close();
}

// Obter usuários que já têm acesso à agenda
$usuarios_compartilhados = [];
$sql_compartilhados = "SELECT u.id, u.nome, u.email 
                      FROM compartilhamento_agenda ca 
                      JOIN usuarios u ON ca.usuario_compartilhado_id = u.id 
                      WHERE ca.usuario_proprietario_id = ? AND ca.ativo = 1 
                      ORDER BY u.nome";
if ($stmt = $conn->prepare($sql_compartilhados)) {
    $stmt->bind_param("i", $usuario_id);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $usuarios_compartilhados[] = $row;
    }
    $stmt->close();
}

// 🔥 VAMOS CRIAR UM ARRAY COM OS DADOS JÁ SANITIZADOS PARA O JS
$atividades_js = [];
foreach ($atividades as $atividade) {
    $atividades_js[] = [
        'id' => $atividade['id'],
        'titulo' => $atividade['nome_cliente'] ?: $atividade['nome_atividade_original'],
        'data_agendada' => $atividade['data_agendada'],
        'concluida' => (bool)$atividade['concluida'],
        'descricao' => $atividade['descricao_sanitizada'],
        'descricao_html' => $atividade['descricao_html'],
        'nome_atividade' => $atividade['nome_atividade'] ?? '',
        'cliente_id' => $atividade['cliente_id'],
        'usuario_nome' => $atividade['usuario_nome'] ?? '',
        'agenda_compartilhada' => (bool)$atividade['agenda_compartilhada'],
        'proprietario_id' => $atividade['proprietario_id'],
        'duracao_minutos' => $atividade['duracao_minutos'] ?? 0,
        'nome_original' => $atividade['nome_atividade_original']
    ];
}

?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Sistema de Organização de Negócios</title>
    <meta name="csrf-token" content="<?php echo $_SESSION['csrf_token']; ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/fullcalendar@5.11.3/main.min.css" rel="stylesheet">
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
            overflow-x: hidden;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 50px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        .sidebar {
            position: fixed;
            left: 0;
            top: 80px;
            height: calc(100vh - 80px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar-menu {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar-menu li {
            border-bottom: 1px solid #eee;
        }
        
        .sidebar-menu a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
            transition: background-color 0.3s;
        }
        
        .sidebar-menu i {
            width: 24px;
            height: 24px;
            margin-right: 15px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .sidebar-menu .menu-text {
            opacity: 0;
            transition: opacity 0.3s ease;
        }
        
        .submenu-sidebar {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease;
            background-color: #f9f9f9;
        }
        
        .submenu-sidebar a {
            padding-left: 50px;
            font-size: 0.9em;
        }
        
        .menu-item-sidebar {
            position: relative;
        }
        
        .menu-item-sidebar > a:after {
            content: "▶";
            margin-left: auto;
            font-size: 0.8em;
            transition: transform 0.3s;
        }
        
        .content-wrapper {
            margin-top: 20px;
            padding: 60px;
            margin-right: 80px;
            margin-left: 80px;
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 1800px;
            margin: 0 auto;
        }
        
        #calendar {
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            padding: 20px;
        }
        
        .fc-event {
            cursor: move;
            font-size: 0.85em;
            padding: 2px 4px;
        }
        
        .fc-event-concluida {
            cursor: not-allowed !important;
            opacity: 0.7;
        }
        
        .fc-event-compartilhada {
            cursor: not-allowed !important;
            opacity: 0.8;
        }
        
        .fc-event-time {
            font-weight: bold;
        }
        
        .fc-event-particular {
            background-color: #8B4513;
            border-color: #8B4513;
        }
        
        .legend {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
            margin-bottom: 20px;
        }
        
        .legend-item {
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .legend-color {
            width: 15px;
            height: 15px;
            border-radius: 3px;
        }
        
        .modal-activity {
            display: none;
            position: fixed;
            z-index: 2000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0,0,0,0.5);
            backdrop-filter: blur(5px);
        }
        
        .modal-activity-content {
            background-color: #fefefe;
            margin: 5% auto;
            padding: 20px;
            border-radius: 8px;
            width: 60%;
            max-width: 700px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
            max-height: 80vh;
            overflow-y: auto;
            position: relative;
        }
        
        .close-modal {
            position: absolute;
            right: 20px;
            top: 10px;
            color: #aaa;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
            z-index: 1;
        }
        
        .close-modal:hover {
            color: #333;
        }
        
        .whatsapp-btn {
            margin-left: 15px;
            background: #25D366;
            color: white;
            border: none;
            padding: 6px 12px;
            border-radius: 4px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .user-info {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .user-photo {
            width: 40px;
            height: 40px;
            border-radius: 50%;
        }
        
        .user-initial {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: #ccc;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            font-size: 1.2em;
        }
        
        .version-info {
            margin: 10px 5px 0;
            padding-top: 10px;
            border-top: 1px solid #dee2e6;
            color: #6c757d;
            font-size: 0.8em;
        }

        .menu-container {
            position: relative;
            display: inline-block;
        }
        
        .dropdown-menu {
            display: none;
            position: absolute;
            right: 0;
            background-color: white;
            min-width: 200px;
            box-shadow: 0 8px 16px rgba(0,0,0,0.2);
            z-index: 1;
            border-radius: 4px;
            overflow: hidden;
        }
        
        .dropdown-menu a {
            color: #333;
            padding: 12px 16px;
            text-decoration: none;
            display: block;
            text-align: left;
            transition: background-color 0.3s;
        }
        
        .dropdown-menu a:hover {
            background-color: #f1f1f1;
        }
        
        .dropdown-menu.show {
            display: block;
        }
        
        .submenu {
            display: none;
            padding-left: 20px;
            margin-top: 10px;
            background-color: #f9f9f9;
        }
        
        .submenu a {
            display: block;
            padding: 8px 16px;
            text-decoration: none;
            color: #333;
            font-size: 0.9em;
        }
        
        .submenu a:hover {
            background-color: #f1f1f1;
        }
        
        .menu-item {
            position: relative;
        }
        
        .menu-item > a {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .menu-item > a:after {
            content: "▶";
            font-size: 0.8em;
            transition: transform 0.3s;
        }
        
        .menu-item.open > a:after {
            transform: rotate(90deg);
        }
        
        .menu-btn-success {
            color: #6B8E23;
        }
        
        .menu-btn-primary {
            color: #0000FF;
        }
        
        .menu-btn-danger {
            color: #e74c3c;
        }
        
        .action-buttons {
            margin-top: 20px;
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
        }
        
        .action-buttons button {
            padding: 8px 12px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .btn-concluir {
            background-color: #28a745;
            color: white;
        }
        
        .btn-editar {
            background-color: #17a2b8;
            color: white;
        }
        
        .btn-excluir {
            background-color: #dc3545;
            color: white;
        }
        
        .btn-enviar-email {
            background-color: #ffc107;
            color: black;
        }
        
        .edit-form {
            display: flex;
            gap: 10px;
            align-items: center;
            margin-top: 10px;
        }
        
        .edit-form input[type="text"] {
            flex-grow: 1;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .edit-modal-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }
        
        .edit-modal-form .form-group {
            margin-bottom: 15px;
        }
        
        .edit-modal-form label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        
        .edit-modal-form input,
        .edit-modal-form textarea,
        .edit-modal-form select {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .edit-modal-form textarea {
            min-height: 100px;
        }
        
        .compartilhamento-container {
            margin-bottom: 20px;
            padding: 15px;
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }

        .compartilhamento-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 15px;
        }

        .compartilhamento-form {
            display: flex;
            gap: 10px;
            align-items: center;
            margin-bottom: 15px;
        }

        .compartilhamento-form select {
            flex-grow: 1;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }

        .lista-compartilhados {
            margin-top: 15px;
        }

        .usuario-compartilhado {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 8px 0;
            border-bottom: 1px solid #eee;
        }

        .usuario-compartilhado:last-child {
            border-bottom: none;
        }

        .btn-remover-compartilhamento {
            background: #dc3545;
            color: white;
            border: none;
            padding: 2px 8px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 12px;
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .badge-compartilhada {
            background: #6c757d;
            color: white;
            padding: 2px 6px;
            border-radius: 4px;
            font-size: 0.8em;
            margin-left: 8px;
        }

        .admin-fixed-btn {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background: #8e44ad;
            color: white;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
            z-index: 999;
            cursor: pointer;
            transition: all 0.3s;
        }

        .admin-fixed-btn:hover {
            transform: scale(1.1);
            box-shadow: 0 6px 12px rgba(0,0,0,0.3);
        }

        .admin-fixed-btn .tooltip {
            position: absolute;
            right: 70px;
            background: #333;
            color: white;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 14px;
            white-space: nowrap;
            opacity: 0;
            transition: opacity 0.3s;
            pointer-events: none;
        }

        .admin-fixed-btn:hover .tooltip {
            opacity: 1;
        }
        
        .read-only-actions {
            margin-top: 20px;
            padding: 10px;
            background-color: #f8f9fa;
            border-radius: 4px;
            border-left: 4px solid #6c757d;
        }

        .notification-badge {
            position: absolute;
            top: -5px;
            right: -5px;
            background: #dc3545;
            color: white;
            border-radius: 50%;
            width: 20px;
            height: 20px;
            font-size: 12px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .btn-notification {
            position: relative;
        }

        @keyframes pulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.05); }
            100% { transform: scale(1); }
        }

        .pulse-notification {
            animation: pulse 2s infinite;
        }

        .fc-time-grid-event .fc-content {
            padding: 2px 4px;
        }

        .fc-event-title {
            font-weight: bold;
        }

        .fc-event-time {
            font-size: 0.9em;
            opacity: 0.9;
        }

        .duracao-container {
            display: flex;
            gap: 10px;
            align-items: center;
        }

        .duracao-input {
            flex: 1;
        }

        .duracao-preview {
            background: #f8f9fa;
            padding: 8px 12px;
            border-radius: 4px;
            font-size: 0.9em;
            color: #6c757d;
            min-width: 120px;
            text-align: center;
        }
        
        .notification-buttons {
            position: fixed;
            top: 100px;
            right: 20px;
            z-index: 9999;
            min-width: 300px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.3);
            border-radius: 8px;
        }

        .notification-buttons .btn {
            margin: 2px;
            font-size: 0.8em;
            padding: 4px 8px;
        }
        
        .fc-dragging {
            opacity: 0.7;
            cursor: move;
        }
        
        .loading-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255,255,255,0.8);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 9999;
            display: none;
        }
        
        .spinner {
            border: 5px solid #f3f3f3;
            border-top: 5px solid #3498db;
            border-radius: 50%;
            width: 50px;
            height: 50px;
            animation: spin 1s linear infinite;
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        .tooltip-concluida {
            position: absolute;
            background: #333;
            color: white;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 12px;
            z-index: 9999;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.3s;
        }
        
        /* CORREÇÕES PARA VISUALIZAÇÃO NAS VIEWS DE DIA E SEMANA */
        .fc-timegrid-slot {
            height: 3em !important;
            min-height: 3em !important;
        }
        
        .fc-timegrid-slot-label {
            height: 3em !important;
            line-height: 3em !important;
            vertical-align: middle !important;
        }
        
        .fc-timegrid-slot-label-cushion {
            padding: 0.5em 0 !important;
            font-size: 0.9em !important;
        }
        
        .fc-timegrid-event {
            margin: 2px 3px !important;
            min-height: 2.5em !important;
            border-radius: 4px !important;
        }
        
        .fc-timegrid-event-harness {
            margin: 2px 0 !important;
        }
        
        .fc-timegrid-event .fc-event-main {
            padding: 5px 8px !important;
            height: auto !important;
            min-height: 100% !important;
        }
        
        .fc-timegrid-event .fc-event-title-container {
            white-space: normal !important;
            word-wrap: break-word !important;
            line-height: 1.3 !important;
        }
        
        .fc-timegrid-event .fc-event-title {
            font-size: 12px !important;
            line-height: 1.3 !important;
            font-weight: bold !important;
            display: block !important;
            margin-bottom: 2px !important;
            max-height: 3em !important;
            overflow: hidden !important;
            text-overflow: ellipsis !important;
        }
        
        .fc-timegrid-event .fc-event-time {
            font-size: 11px !important;
            opacity: 0.9 !important;
            display: block !important;
            margin-bottom: 2px !important;
        }
        
        /* View de Mês */
        .fc-daygrid-event {
            padding: 4px 6px !important;
            margin: 2px 3px !important;
            min-height: 2em !important;
        }
        
        .fc-daygrid-event .fc-event-title {
            font-size: 12px !important;
            line-height: 1.3 !important;
            white-space: normal !important;
            word-break: break-word !important;
            max-height: 2.6em !important;
            overflow: hidden !important;
        }
        
        .fc-daygrid-day-frame {
            min-height: 120px !important;
        }
        
        .fc-daygrid-day-events {
            min-height: 80px !important;
        }
        
        /* Aumentar slots para mais espaço */
        .fc-timegrid-slot-lane {
            min-height: 50px !important;
        }
        
        .fc-timegrid-col-frame {
            min-height: 50px !important;
        }
        
        /* Ajuste para slots menores (meia hora) */
        .fc-timegrid-slot-minor {
            border-top-style: dotted !important;
            border-top-width: 1px !important;
        }
        
        /* Para eventos com duração longa */
        .fc-timegrid-event-short {
            min-height: 3em !important;
        }
        
        /* Melhorar a legibilidade */
        .fc-v-event {
            border: none !important;
            box-shadow: 0 1px 3px rgba(0,0,0,0.1) !important;
        }
        
        /* Ajuste para visualização em telas pequenas */
        @media (max-width: 768px) {
            .fc-timegrid-slot {
                height: 3.5em !important;
                min-height: 3.5em !important;
            }
            
            .fc-timegrid-event .fc-event-title {
                font-size: 11px !important;
            }
            
            .fc-timegrid-event .fc-event-time {
                font-size: 10px !important;
            }
            
            .fc-daygrid-day-frame {
                min-height: 100px !important;
            }
        }
    </style>
</head>
<body>

    <?php include 'menu_lateral.php'; ?>

    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <?php if (isset($_SESSION['erro'])): ?>
                <div class="alert alert-danger">
                    <?= htmlspecialchars($_SESSION['erro']) ?>
                </div>
                <?php unset($_SESSION['erro']); ?>
            <?php endif; ?>
            
            <?php if (isset($_SESSION['sucesso'])): ?>
                <div class="alert alert-success">
                    <?= htmlspecialchars($_SESSION['sucesso']) ?>
                </div>
                <?php unset($_SESSION['sucesso']); ?>
            <?php endif; ?>

            <!-- Seção de Compartilhamento de Agenda -->
            <div class="compartilhamento-container">
                <div class="compartilhamento-header">
                    <h3><i class="fas fa-share-alt"></i> Compartilhar Minha Agenda</h3>
                </div>
                
                <form class="compartilhamento-form" method="POST" action="compartilhar_agenda.php">
                    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                    <select name="usuario_compartilhado_id" required style="width:80px !important; max-width:25%;" id="usuario_compartilhado_id">
                        <option value="">Selecione um usuário para compartilhar</option>
                        <?php foreach ($usuarios_compartilhamento as $usuario): ?>
                            <option value="<?php echo $usuario['id']; ?>">
                                <?php echo htmlspecialchars($usuario['nome'] . ' (' . $usuario['email'] . ')'); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                    <button type="submit" class="btn btn-primary">
                        <i class="fas fa-share"></i> Compartilhar
                    </button>
                </form>
                
                <?php if (!empty($usuarios_compartilhados)): ?>
                <div class="lista-compartilhados">
                    <h4>Agenda compartilhada com:</h4>
                    <?php foreach ($usuarios_compartilhados as $usuario): ?>
                    <div class="usuario-compartilhado">
                        <span><?php echo htmlspecialchars($usuario['nome'] . ' (' . $usuario['email'] . ')'); ?></span>
                        <form method="POST" action="remover_compartilhamento_agenda.php" style="display:inline;">
                            <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
                            <input type="hidden" name="usuario_compartilhado_id" value="<?php echo $usuario['id']; ?>">
                            <button type="submit" class="btn-remover-compartilhamento" 
                                    onclick="return confirm('Tem certeza que deseja remover o compartilhamento?')">
                                <i class="fas fa-times"></i> Remover
                            </button>
                        </form>
                    </div>
                    <?php endforeach; ?>
                </div>
                <?php endif; ?>
            </div>

            <div class="legend">
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #dc3545;"></div>
                    <span>Atrasadas</span>
                </div>
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #ffc107;"></div>
                    <span>Hoje</span>
                </div>
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #17a2b8;"></div>
                    <span>Futuras</span>
                </div>
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #28a745;"></div>
                    <span>Concluídas (não movível)</span>
                </div>
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #8B4513;"></div>
                    <span>Sem Cliente</span>
                </div>
                <div class="legend-item">
                    <div class="legend-color" style="background-color: #6c757d;"></div>
                    <span>Agenda Compartilhada (não movível)</span>
                </div>
            </div>
            
            <div class="card">
                <div class="card-body">
                    <div id="calendar"></div>
                </div>
            </div>
        </div>
    </div>

    <!-- Loading Overlay -->
    <div class="loading-overlay" id="loadingOverlay">
        <div class="spinner"></div>
    </div>

    <!-- Modal Detalhes da Atividade -->
    <div id="activityModal" class="modal-activity">
        <div class="modal-activity-content">
            <span class="close-modal" onclick="fecharModalAtividade()">&times;</span>
            <h2 id="activityModalTitle">Detalhes da Atividade</h2>
            <div class="modal-body" id="activityModalBody">
                <!-- Conteúdo será preenchido via JavaScript -->
            </div>
            <div class="action-buttons" id="activityModalActions">
                <!-- Botões de ação serão preenchidos via JavaScript -->
            </div>
            <div class="read-only-actions" id="readOnlyActions" style="display: none;">
                <p><i class="fas fa-info-circle"></i> Esta é uma atividade compartilhada. Você pode apenas visualizar.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" onclick="fecharModalAtividade()">Fechar</button>
            </div>
        </div>
    </div>

    <!-- Modal Editar Atividade -->
    <div id="editarAtividadeModal" class="modal-activity">
        <div class="modal-activity-content">
            <span class="close-modal" onclick="fecharModalEditarAtividade()">&times;</span>
            <h2>Editar Atividade</h2>
            <form id="formEditarAtividade" class="edit-modal-form">
                <input type="hidden" id="editarAtividadeId" name="id">
                <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
                <input type="hidden" name="tenant_id" value="<?php echo $tenant_id; ?>" />
                
                <div class="form-group">
                    <label for="editarNome">Nome da Atividade*</label>
                    <input type="text" id="editarNome" name="nome" required maxlength="255">
                </div>
                
                <div class="form-group">
                    <label for="editarDescricao">Descrição</label>
                    <textarea id="editarDescricao" name="descricao" rows="3" maxlength="5000"></textarea>
                    <small class="text-muted">Máximo 5000 caracteres</small>
                </div>
                
                <div class="row">
                    <div class="col-md-6 form-group">
                        <label for="editarData">Data*</label>
                        <input type="date" id="editarData" name="data_agendada" required>
                    </div>
                    
                    <div class="col-md-6 form-group">
                        <label for="editarHora">Hora*</label>
                        <input type="time" id="editarHora" name="hora" required>
                    </div>
                </div>
                
                <div class="form-group">
                    <label for="editarDuracaoMinutos">Duração (minutos)*</label>
                    <div class="duracao-container">
                        <div class="duracao-input">
                            <input type="number" 
                                   id="editarDuracaoMinutos" 
                                   name="duracao_minutos" 
                                   class="form-control" 
                                   min="5" 
                                   max="1440" 
                                   required 
                                   value="30"
                                   placeholder="Ex: 30 para 30 minutos">
                            <small class="text-muted">Mínimo: 5 minutos, Máximo: 24 horas (1440 minutos)</small>
                        </div>
                        <div class="duracao-preview" id="editarDuracaoPreview">
                            30 minutos
                        </div>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-6 form-group">
                        <label for="editarNotificar">Notificar</label>
                        <select id="editarNotificar" name="notificar" class="form-control">
                            <option value="0">Não notificar</option>
                            <option value="1">5 minutos antes</option>
                            <option value="2">15 minutos antes</option>
                            <option value="3">30 minutos antes</option>
                            <option value="4">1 hora antes</option>
                            <option value="5">1 dia antes</option>
                        </select>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-6 form-group">
                        <label for="editarClienteId">Cliente</label>
                        <select id="editarClienteId" name="cliente_id">
                            <option value="">Sem cliente</option>
                            <?php foreach ($clientes as $cliente): ?>
                                <option value="<?php echo $cliente['id']; ?>"><?php echo htmlspecialchars($cliente['Nome_Cliente']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    
                    <div class="col-md-6 form-group">
                        <label for="editarListaAtividadeId">Tipo de Atividade</label>
                        <select id="editarListaAtividadeId" name="lista_atividade_id">
                            <option value="">Selecione um tipo</option>
                            <?php foreach ($tipos_atividades as $tipo): ?>
                                <option value="<?php echo $tipo['id']; ?>"><?php echo htmlspecialchars($tipo['nome']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
                
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" onclick="fecharModalEditarAtividade()">Cancelar</button>
                    <button type="button" class="btn btn-primary" onclick="salvarEdicaoAtividade()">Salvar Alterações</button>
                </div>
            </form>
        </div>
    </div>

    <!-- Modal Nova Atividade -->
    <div id="novaAtividadeModal" class="modal-activity">
        <div class="modal-activity-content">
            <span class="close-modal" onclick="fecharModalNovaAtividade()">&times;</span>
            <h2>Nova Atividade</h2>
            <form id="formNovaAtividade" onsubmit="salvarNovaAtividade(event)">
                <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
                <input type="hidden" name="tenant_id" value="<?php echo $tenant_id; ?>" />
                <input type="hidden" id="dataSelecionada" name="data_agendada">
                
                <div class="mb-3">
                    <label for="nome" class="form-label">Nome da Atividade*</label>
                    <input type="text" class="form-control" id="nome" name="nome" required maxlength="255">
                </div>
                
                <div class="mb-3">
                    <label for="descricao" class="form-label">Descrição</label>
                    <textarea class="form-control" id="descricao" name="descricao" rows="3" maxlength="5000"></textarea>
                    <small class="text-muted">Máximo 5000 caracteres</small>
                </div>
                
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label for="data_agendada" class="form-label">Data*</label>
                        <input type="date" class="form-control" id="data_agendada" name="data_agendada" required>
                    </div>
                    
                    <div class="col-md-6 mb-3">
                        <label for="hora" class="form-label">Hora*</label>
                        <input type="time" class="form-control" id="hora" name="hora" required>
                    </div>
                </div>
                
                <div class="mb-3">
                    <label for="duracao_minutos" class="form-label">Duração (minutos)*</label>
                    <div class="duracao-container">
                        <div class="duracao-input">
                            <input type="number" 
                                   class="form-control" 
                                   id="duracao_minutos" 
                                   name="duracao_minutos" 
                                   min="5" 
                                   max="1440" 
                                   required 
                                   value="30"
                                   placeholder="Ex: 30 para 30 minutos">
                            <small class="text-muted">Mínimo: 5 minutos, Máximo: 24 horas (1440 minutos)</small>
                        </div>
                        <div class="duracao-preview" id="duracaoPreview">
                            30 minutos
                        </div>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label for="notificar" class="form-label">Lembrete</label>
                        <select class="form-control" id="notificar" name="notificar">
                            <option value="0">Não notificar</option>
                            <option value="1">5 minutos antes</option>
                            <option value="2">15 minutos antes</option>
                            <option value="3">30 minutos antes</option>
                            <option value="4">1 hora antes</option>
                            <option value="5">1 dia antes</option>
                        </select>
                    </div>
                </div>
                
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label for="cliente_id" class="form-label">Cliente</label>
                        <select class="form-control" id="cliente_id" name="cliente_id">
                            <option value="">Sem cliente</option>
                            <?php foreach ($clientes as $cliente): ?>
                                <option value="<?php echo $cliente['id']; ?>"><?php echo htmlspecialchars($cliente['Nome_Cliente']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    
                    <div class="col-md-6 mb-3">
                        <label for="lista_atividade_id" class="form-label">Tipo de Atividade</label>
                        <select class="form-control" id="lista_atividade_id" name="lista_atividade_id">
                            <option value="">Selecione um tipo</option>
                            <?php foreach ($tipos_atividades as $tipo): ?>
                                <option value="<?php echo $tipo['id']; ?>"><?php echo htmlspecialchars($tipo['nome']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
                
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" onclick="fecharModalNovaAtividade()">Cancelar</button>
                    <button type="submit" class="btn btn-primary">Salvar Atividade</button>
                </div>
            </form>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/fullcalendar@5.11.3/main.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/fullcalendar@5.11.3/locales-all.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

    <script>
        // 🔥 DADOS JÁ SANITIZADOS DO PHP PARA JS
        const atividadesData = <?php echo json_encode($atividades_js, JSON_UNESCAPED_UNICODE); ?>;
        
        // Variáveis globais
        let calendar;
        let notificacoesAtivas = new Map();

        // Função para formatar duração
        function formatarDuracao(minutos) {
            if (minutos < 60) {
                return minutos + ' minutos';
            } else {
                const horas = Math.floor(minutos / 60);
                const minutosRestantes = minutos % 60;
                if (minutosRestantes === 0) {
                    return horas + ' hora' + (horas > 1 ? 's' : '');
                } else {
                    return horas + 'h' + (minutosRestantes < 10 ? '0' : '') + minutosRestantes + 'min';
                }
            }
        }

        // 🔥 FUNÇÃO PARA DECODIFICAR JSON STRING
        function parseJsonString(str) {
            try {
                return JSON.parse(str);
            } catch (e) {
                console.error('Erro ao parsear JSON:', e);
                return '';
            }
        }

        // Função para mostrar loading
        function mostrarLoading() {
            document.getElementById('loadingOverlay').style.display = 'flex';
        }

        // Função para esconder loading
        function esconderLoading() {
            document.getElementById('loadingOverlay').style.display = 'none';
        }

        // Função para renderizar conteúdo dos eventos
        function renderEventContent(eventInfo) {
            const props = eventInfo.event.extendedProps;
            let duracaoHTML = '';
            
            if (props.duracao_minutos && props.duracao_minutos > 0) {
                duracaoHTML = `<div style="font-size: 10px; opacity: 0.8;">${formatarDuracao(props.duracao_minutos)}</div>`;
            }
            
            return {
                html: `
                    <div style="padding: 3px; overflow: hidden; height: 100%;">
                        <div style="font-weight: bold; font-size: 11px; margin-bottom: 2px; line-height: 1.2; word-break: break-word;">
                            ${eventInfo.event.title}
                        </div>
                        <div style="font-size: 10px; margin-bottom: 1px; opacity: 0.9;">
                            ${eventInfo.timeText}
                        </div>
                        ${duracaoHTML}
                    </div>
                `
            };
        }

        document.addEventListener('DOMContentLoaded', function() {
            const calendarEl = document.getElementById('calendar');
            
            // 🔥 CONSTRUIR EVENTOS A PARTIR DOS DADOS JÁ SANITIZADOS
            const eventos = atividadesData.map(atividade => {
                let dataTermino = null;
                if (atividade.duracao_minutos && atividade.duracao_minutos > 0) {
                    const dataInicio = new Date(atividade.data_agendada);
                    dataTermino = new Date(dataInicio.getTime() + atividade.duracao_minutos * 60000);
                }
                
                // 🔥 A DESCRIÇÃO JÁ VEM SANITIZADA DO PHP
                // atividade.descricao já é uma string JSON válida
                
                return {
                    id: atividade.id.toString(),
                    title: atividade.titulo,
                    start: atividade.data_agendada,
                    end: dataTermino,
                    allDay: false,
                    extendedProps: {
                        descricao: atividade.descricao, // Já é JSON string
                        descricao_html: atividade.descricao_html, // HTML sanitizado
                        concluida: atividade.concluida,
                        nome_atividade: atividade.nome_atividade,
                        cliente_id: atividade.cliente_id,
                        usuario_nome: atividade.usuario_nome,
                        agenda_compartilhada: atividade.agenda_compartilhada,
                        proprietario_id: atividade.proprietario_id,
                        data_hora_original: atividade.data_agendada,
                        duracao_minutos: atividade.duracao_minutos,
                        nome_original: atividade.nome_original
                    },
                    color: getEventColor(
                        atividade.data_agendada, 
                        atividade.concluida, 
                        atividade.agenda_compartilhada, 
                        atividade.cliente_id
                    ),
                    className: [
                        atividade.concluida ? 'fc-event-concluida' : '',
                        (atividade.agenda_compartilhada && atividade.proprietario_id != <?php echo $usuario_id; ?>) 
                            ? 'fc-event-compartilhada' : ''
                    ].filter(c => c).join(' ')
                };
            });

            calendar = new FullCalendar.Calendar(calendarEl, {
                initialView: 'dayGridMonth',
                locale: 'pt-br',
                headerToolbar: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'dayGridMonth,timeGridWeek,timeGridDay'
                },
                buttonText: {
                    today: 'Hoje',
                    month: 'Mês',
                    week: 'Semana',
                    day: 'Dia'
                },
                editable: function(info) {
                    const props = info.event.extendedProps;
                    
                    if (props.concluida) {
                        return false;
                    }
                    
                    if (props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>) {
                        return false;
                    }
                    
                    return true;
                },
                droppable: false,
                eventDragStart: function(info) {
                    const props = info.event.extendedProps;
                    
                    if (props.concluida) {
                        info.jsEvent.preventDefault();
                        mostrarTooltipConcluida(info.jsEvent, 'Atividades concluídas não podem ser movidas');
                        return false;
                    }
                    
                    if (props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>) {
                        info.jsEvent.preventDefault();
                        mostrarTooltipConcluida(info.jsEvent, 'Atividades compartilhadas não podem ser movidas');
                        return false;
                    }
                    
                    info.event.setProp('classNames', ['fc-dragging']);
                },
                eventDragStop: function(info) {
                    info.event.setProp('classNames', []);
                },
                eventDrop: function(info) {
                    const props = info.event.extendedProps;
                    
                    // 🔥 VALIDAÇÃO CRÍTICA: Prevenir movimento imediatamente
                    if (props.concluida) {
                        alert('Atividades concluídas não podem ser movidas.');
                        info.revert();
                        return;
                    }
                    
                    if (props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>) {
                        alert('Você não pode mover atividades compartilhadas de outros usuários.');
                        info.revert();
                        return;
                    }
                    
                    moverAtividade(info.event);
                },
                events: eventos,
                dateClick: function(info) {
                    abrirModalNovaAtividade(info.dateStr);
                },
                eventClick: function(info) {
                    mostrarDetalhesAtividade(info.event);
                },
                slotMinTime: "06:00:00",
                slotMaxTime: "22:00:00",
                slotDuration: "01:00:00",
                slotLabelInterval: "01:00:00",
                slotLabelFormat: {
                    hour: '2-digit',
                    minute: '2-digit',
                    hour12: false
                },
                eventTimeFormat: {
                    hour: '2-digit',
                    minute: '2-digit',
                    hour12: false
                },
                eventDisplay: 'block',
                eventContent: renderEventContent,
                slotMinHeight: 50,
                
                views: {
                    timeGridDay: {
                        slotDuration: '00:30:00',
                        slotLabelInterval: '01:00:00',
                    },
                    timeGridWeek: {
                        slotDuration: '00:30:00',
                        slotLabelInterval: '01:00:00',
                    },
                    dayGridMonth: {
                        fixedWeekCount: false,
                    }
                },
                
                eventBackgroundColor: 'transparent',
                eventBorderColor: 'transparent',
                eventTextColor: '#fff',
                nowIndicator: true,
                height: 'auto',
                expandRows: true
            });
            
            calendar.render();

            function getEventColor(dataAgendada, concluida, agendaCompartilhada, clienteId) {
                if (concluida) {
                    return '#28a745';
                }
                if (agendaCompartilhada) {
                    return '#6c757d';
                }
                
                const agora = new Date();
                const dataHoraAtividade = new Date(dataAgendada);
                
                if (dataHoraAtividade < agora) {
                    return '#dc3545';
                } else if (dataHoraAtividade.toDateString() === agora.toDateString()) {
                    return '#ffc107';
                } else {
                    if (!clienteId || clienteId === 'null' || clienteId === '') {
                        return '#8B4513';
                    }
                    return '#17a2b8';
                }
            }

            // Atualizar preview da duração
            document.getElementById('duracao_minutos').addEventListener('input', function() {
                const minutos = this.value;
                document.getElementById('duracaoPreview').textContent = formatarDuracao(minutos);
            });

            document.getElementById('editarDuracaoMinutos').addEventListener('input', function() {
                const minutos = this.value;
                document.getElementById('editarDuracaoPreview').textContent = formatarDuracao(minutos);
            });
        });

        // Função para mostrar tooltip quando tentar arrastar atividade concluída ou compartilhada
        function mostrarTooltipConcluida(event, mensagem) {
            const tooltip = document.createElement('div');
            tooltip.className = 'tooltip-concluida';
            tooltip.textContent = mensagem;
            tooltip.style.left = (event.clientX + 10) + 'px';
            tooltip.style.top = (event.clientY - 10) + 'px';
            document.body.appendChild(tooltip);
            
            setTimeout(() => {
                tooltip.style.opacity = '1';
            }, 10);
            
            setTimeout(() => {
                tooltip.style.opacity = '0';
                setTimeout(() => {
                    if (tooltip.parentNode) {
                        tooltip.parentNode.removeChild(tooltip);
                    }
                }, 300);
            }, 2000);
        }

        // Função para mover atividade (arrastar e soltar)
        function moverAtividade(evento) {
            const props = evento.extendedProps;
            
            if (props.concluida) {
                alert('Atividades concluídas não podem ser movidas.');
                evento.revert();
                return;
            }
            
            if (props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>) {
                alert('Você não pode mover atividades compartilhadas de outros usuários.');
                evento.revert();
                return;
            }

            const notificar = false; // Removida a opção de enviar email
            
            const dataInicio = evento.start;
            let dataTermino = null;
            
            if (evento.end) {
                dataTermino = evento.end;
            } else if (props.duracao_minutos && props.duracao_minutos > 0) {
                dataTermino = new Date(dataInicio);
                dataTermino.setMinutes(dataTermino.getMinutes() + parseInt(props.duracao_minutos));
            }
            
            const formData = new FormData();
            formData.append('id', evento.id);
            formData.append('data_agendada', dataInicio.toISOString().slice(0, 19).replace('T', ' '));
            
            if (dataTermino) {
                formData.append('nova_duracao', props.duracao_minutos || 30);
            }
            
            formData.append('enviar_email', notificar ? '1' : '0');
            formData.append('csrf_token', '<?php echo $_SESSION['csrf_token']; ?>');

            mostrarLoading();
            
            fetch('mover_atividade.php', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                esconderLoading();
                if (data.success) {
                    const novaCor = getEventColor(
                        dataInicio.toISOString().split('T')[0],
                        props.concluida,
                        props.agenda_compartilhada,
                        props.cliente_id
                    );
                    evento.setProp('color', novaCor);
                    
                    evento.setExtendedProp('data_hora_original', dataInicio.toISOString());
                    
                    alert('Atividade movida com sucesso!');
                } else {
                    alert('Erro ao mover atividade: ' + data.message);
                    evento.revert();
                }
            })
            .catch(error => {
                esconderLoading();
                console.error('Erro:', error);
                alert('Erro ao mover atividade.');
                evento.revert();
            });
        }

        // Função auxiliar para getEventColor
        function getEventColor(dataAgendada, concluida, agendaCompartilhada, clienteId) {
            if (concluida) {
                return '#28a745';
            }
            if (agendaCompartilhada) {
                return '#6c757d';
            }
            
            const hoje = new Date().toISOString().split('T')[0];
            const dataAtividade = typeof dataAgendada === 'string' ? 
                dataAgendada.split(' ')[0] : 
                dataAgendada.toISOString().split('T')[0];
            
            if (dataAtividade < hoje) {
                return '#dc3545';
            } else if (dataAtividade === hoje) {
                return '#ffc107';
            } else {
                if (!clienteId || clienteId === 'null' || clienteId === '') {
                    return '#8B4513';
                }
                return '#17a2b8';
            }
        }

        // Funções de modal
        function abrirModalNovaAtividade(dataSelecionada) {
            document.getElementById('dataSelecionada').value = dataSelecionada;
            document.getElementById('data_agendada').value = dataSelecionada;
            
            const agora = new Date();
            agora.setHours(agora.getHours() + 1);
            const horaPadrao = agora.toTimeString().substring(0, 5);
            document.getElementById('hora').value = horaPadrao;
            
            document.getElementById('novaAtividadeModal').style.display = 'block';
        }

        function fecharModalNovaAtividade() {
            document.getElementById('novaAtividadeModal').style.display = 'none';
        }

        function fecharModalAtividade() {
            document.getElementById('activityModal').style.display = 'none';
        }

        function fecharModalEditarAtividade() {
            document.getElementById('editarAtividadeModal').style.display = 'none';
        }

        function mostrarDetalhesAtividade(evento) {
            const props = evento.extendedProps;
            const modalTitle = document.getElementById('activityModalTitle');
            const modalBody = document.getElementById('activityModalBody');
            const modalActions = document.getElementById('activityModalActions');
            const readOnlyActions = document.getElementById('readOnlyActions');
            
            const isAgendaCompartilhada = props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>;
            
            modalTitle.textContent = props.nome_original || evento.title;
            
            const dataHoraOriginal = props.data_hora_original ? new Date(props.data_hora_original) : evento.start;
            
            let dataTerminoHTML = '';
            if (props.duracao_minutos && props.duracao_minutos > 0) {
                const dataTermino = new Date(dataHoraOriginal);
                dataTermino.setMinutes(dataTermino.getMinutes() + parseInt(props.duracao_minutos));
                dataTerminoHTML = `<p><strong>⏰ Término:</strong> ${dataTermino.toLocaleString('pt-BR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: 'numeric',
                    hour: '2-digit',
                    minute: '2-digit'
                })}</p>`;
            }

            // 🔥 USAR A DESCRIÇÃO HTML JÁ SANITIZADA
            // props.descricao é uma string JSON, props.descricao_html é HTML pronto
            let descricaoParaExibir = '';
            if (props.descricao_html) {
                descricaoParaExibir = props.descricao_html;
            } else if (props.descricao) {
                try {
                    // Tenta converter de JSON string para texto normal
                    descricaoParaExibir = JSON.parse(props.descricao);
                } catch (e) {
                    descricaoParaExibir = props.descricao;
                }
            }

            let html = `
                <div class="activity-details">
                    <p><strong>📅 Início:</strong> ${formatarData(dataHoraOriginal)}</p>
                    ${dataTerminoHTML}
                    ${props.duracao_minutos ? `<p><strong>⏱️ Duração:</strong> ${formatarDuracao(props.duracao_minutos)}</p>` : ''}
                    ${descricaoParaExibir ? `<p><strong>📝 Descrição:</strong><br>${descricaoParaExibir}</p>` : ''}
                    ${props.nome_atividade ? `<p><strong>📊 Tipo de Atividade:</strong> ${props.nome_atividade}</p>` : ''}
                    ${props.usuario_nome ? `<p><strong>👨‍💼 Responsável:</strong> ${props.usuario_nome}</p>` : ''}
                    ${isAgendaCompartilhada ? `<p><strong></strong> <span class="badge-compartilhada">Agenda Compartilhada</span></p>` : ''}
                    <p><strong>Status:</strong> ${props.concluida ? '<span style="color: green;">✅ Concluída</span>' : '<span style="color: orange;">⏳ Pendente</span>'}</p>
                    ${props.concluida ? '<p><i class="fas fa-info-circle"></i> Esta atividade não pode ser movida por estar concluída.</p>' : ''}
                    ${isAgendaCompartilhada ? '<p><i class="fas fa-info-circle"></i> Esta atividade não pode ser movida por ser compartilhada.</p>' : ''}
                </div>
            `;
            
            modalBody.innerHTML = html;
            
            modalActions.innerHTML = '';
            
            if (isAgendaCompartilhada || props.concluida) {
                readOnlyActions.style.display = 'block';
                modalActions.style.display = 'none';
                
                if (props.concluida) {
                    readOnlyActions.innerHTML = '<p><i class="fas fa-info-circle"></i> Esta atividade está concluída e não pode ser editada ou movida.</p>';
                } else {
                    readOnlyActions.innerHTML = '<p><i class="fas fa-info-circle"></i> Esta é uma atividade compartilhada. Você pode apenas visualizar.</p>';
                }
            } else {
                readOnlyActions.style.display = 'none';
                modalActions.style.display = 'flex';
                
                if (!props.concluida) {
                    const btnConcluir = document.createElement('button');
                    btnConcluir.className = 'btn-concluir';
                    btnConcluir.innerHTML = '<i class="fas fa-check"></i> Marcar como Concluída';
                    btnConcluir.onclick = () => concluirAtividade(evento.id);
                    modalActions.appendChild(btnConcluir);
                }
                
                const btnEditar = document.createElement('button');
                btnEditar.className = 'btn-editar';
                btnEditar.innerHTML = '<i class="fas fa-edit"></i> Editar';
                btnEditar.onclick = () => abrirModalEditarAtividade(evento);
                modalActions.appendChild(btnEditar);
                
                const btnExcluir = document.createElement('button');
                btnExcluir.className = 'btn-excluir';
                btnExcluir.innerHTML = '<i class="fas fa-trash"></i> Excluir';
                btnExcluir.onclick = () => excluirAtividade(evento.id);
                modalActions.appendChild(btnExcluir);
            }
            
            document.getElementById('activityModal').style.display = 'block';
        }

        function formatarData(dataISO) {
            const data = new Date(dataISO);
            return data.toLocaleString('pt-BR', {
                day: '2-digit',
                month: '2-digit',
                year: 'numeric',
                hour: '2-digit',
                minute: '2-digit'
            });
        }

        function concluirAtividade(atividadeId) {
            if (!confirm('Tem certeza que deseja marcar esta atividade como concluída?')) {
                return;
            }
            
            const enviarEmail = false; // Removida a opção de enviar email
            
            fetch('concluir_atividade.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                },
                body: `id=${atividadeId}&enviar_email=${enviarEmail ? 1 : 0}&csrf_token=<?php echo $_SESSION['csrf_token']; ?>`
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    alert('Atividade marcada como concluída!');
                    location.reload();
                } else {
                    alert('Erro ao concluir atividade: ' + data.message);
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                alert('Erro ao concluir atividade.');
            });
        }

        function abrirModalEditarAtividade(evento) {
            const props = evento.extendedProps;
            
            if (props.concluida) {
                alert('Atividades concluídas não podem ser editadas.');
                return;
            }
            
            if (props.agenda_compartilhada && props.proprietario_id != <?php echo $usuario_id; ?>) {
                alert('Você não pode editar atividades compartilhadas de outros usuários.');
                return;
            }
            
            fetch('buscar_atividade.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                },
                body: `id=${evento.id}&csrf_token=<?php echo $_SESSION['csrf_token']; ?>`
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    const atividade = data.atividade;
                    
                    document.getElementById('editarAtividadeId').value = atividade.id;
                    document.getElementById('editarNome').value = atividade.nome || evento.title;
                    
                    // 🔥 DECODIFICAR A DESCRIÇÃO SE FOR JSON
                    let descricao = atividade.descricao || '';
                    try {
                        // Tenta parsear como JSON
                        const parsed = JSON.parse(descricao);
                        if (typeof parsed === 'string') {
                            descricao = parsed;
                        }
                    } catch (e) {
                        // Não é JSON, usa como está
                    }
                    document.getElementById('editarDescricao').value = descricao;
                    
                    if (atividade.data_agendada) {
                        const dataHora = new Date(atividade.data_agendada);
                        document.getElementById('editarData').value = dataHora.toISOString().split('T')[0];
                        document.getElementById('editarHora').value = dataHora.toTimeString().substring(0, 5);
                    }
                    
                    document.getElementById('editarDuracaoMinutos').value = atividade.duracao_minutos || 30;
                    document.getElementById('editarDuracaoPreview').textContent = formatarDuracao(atividade.duracao_minutos || 30);
                    
                    document.getElementById('editarNotificar').value = atividade.notificacao_minutos_antes || '0';
                    document.getElementById('editarClienteId').value = atividade.cliente_id || '';
                    document.getElementById('editarListaAtividadeId').value = atividade.lista_atividade_id || '';
                    
                    document.getElementById('editarAtividadeModal').style.display = 'block';
                } else {
                    alert('Erro ao carregar dados da atividade: ' + data.message);
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                alert('Erro ao carregar dados da atividade.');
            });
        }

        function salvarEdicaoAtividade() {
            const form = document.getElementById('formEditarAtividade');
            const formData = new FormData(form);
            
            const enviarEmail = false; // Removida a opção de enviar email
            formData.append('enviar_email', enviarEmail ? 1 : 0);
            
            fetch('editar_atividade.php', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    alert('Atividade atualizada com sucesso!');
                    location.reload();
                } else {
                    alert('Erro ao atualizar atividade: ' + data.message);
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                alert('Erro ao atualizar atividade.');
            });
        }

        function excluirAtividade(atividadeId) {
            if (!confirm('Tem certeza que deseja excluir esta atividade? Esta ação não pode ser desfeita.')) {
                return;
            }
            
            fetch('excluir_atividade.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                },
                body: `id=${atividadeId}&csrf_token=<?php echo $_SESSION['csrf_token']; ?>`
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    alert('Atividade excluída com sucesso!');
                    location.reload();
                } else {
                    alert('Erro ao excluir atividade: ' + data.message);
                }
            })
            .catch(error => {
                console.error('Erro:', error);
                alert('Erro ao excluir atividade.');
            });
        }

        function salvarNovaAtividade(event) {
            event.preventDefault();
            
            const enviarEmail = false; // Removida a opção de enviar email
            
            const form = document.getElementById('formNovaAtividade');
            const formData = new FormData(form);
            formData.append('enviar_email', enviarEmail ? '1' : '0');
            
            const submitBtn = form.querySelector('button[type="submit"]');
            const originalText = submitBtn.innerHTML;
            submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Salvando...';
            submitBtn.disabled = true;
            
            fetch('salvar_atividade.php', {
                method: 'POST',
                body: formData
            })
            .then(response => response.text())
            .then(data => {
                location.reload();
            })
            .catch(error => {
                console.error('Erro:', error);
                alert('Erro ao salvar atividade.');
                submitBtn.innerHTML = originalText;
                submitBtn.disabled = false;
            });
        }

        // Fechar modais ao clicar fora
        window.onclick = function(event) {
            const modals = document.getElementsByClassName('modal-activity');
            for (let modal of modals) {
                if (event.target === modal) {
                    modal.style.display = 'none';
                }
            }
        }
    </script>
    
    <?php include 'sino_notificacoes.php'; ?>
</body>
</html>