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

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

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    $_SESSION['erro'] = 'Método não permitido';
    header('Location: calendario.php');
    exit;
}

// Verificar CSRF token
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    $_SESSION['erro'] = 'Token de segurança inválido';
    header('Location: calendario.php');
    exit;
}

$usuario_proprietario_id = $_SESSION['usuario_id'];
$usuario_compartilhado_id = $_POST['usuario_compartilhado_id'] ?? null;
$tenant_id = $_SESSION['tenant_id'] ?? null;

if (!$usuario_compartilhado_id || !$tenant_id) {
    $_SESSION['erro'] = 'Por favor, selecione um usuário para compartilhar a agenda';
    header('Location: calendario.php');
    exit;
}

// Verificar se o usuário a ser compartilhado existe e pertence ao mesmo tenant
$sql_verificar = "SELECT id, nome FROM usuarios WHERE id = ? AND tenant_id = ? AND ativo = 'sim'";
$stmt = $conn->prepare($sql_verificar);
$stmt->bind_param("ii", $usuario_compartilhado_id, $tenant_id);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 0) {
    $_SESSION['erro'] = 'Usuário inválido ou não encontrado';
    header('Location: calendario.php');
    exit;
}

$usuario_compartilhado = $result->fetch_assoc();

// Verificar se já existe compartilhamento ativo
$sql_verificar_existente = "SELECT id FROM compartilhamento_agenda 
                           WHERE usuario_proprietario_id = ? 
                           AND usuario_compartilhado_id = ? 
                           AND ativo = 1";
$stmt = $conn->prepare($sql_verificar_existente);
$stmt->bind_param("ii", $usuario_proprietario_id, $usuario_compartilhado_id);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    $_SESSION['erro'] = 'Sua agenda já está compartilhada com ' . htmlspecialchars($usuario_compartilhado['nome']);
    header('Location: calendario.php');
    exit;
}

// Verificar se existe compartilhamento inativo (para reativar)
$sql_verificar_inativo = "SELECT id FROM compartilhamento_agenda 
                         WHERE usuario_proprietario_id = ? 
                         AND usuario_compartilhado_id = ? 
                         AND ativo = 0";
$stmt = $conn->prepare($sql_verificar_inativo);
$stmt->bind_param("ii", $usuario_proprietario_id, $usuario_compartilhado_id);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    $compartilhamento = $result->fetch_assoc();
    
    // Reativar compartilhamento existente
    $sql_reativar = "UPDATE compartilhamento_agenda 
                    SET ativo = 1, data_compartilhamento = NOW() 
                    WHERE id = ?";
    $stmt = $conn->prepare($sql_reativar);
    $stmt->bind_param("i", $compartilhamento['id']);
    
    if ($stmt->execute()) {
        $_SESSION['sucesso'] = 'Agenda compartilhada novamente com ' . htmlspecialchars($usuario_compartilhado['nome']) . '!';
    } else {
        $_SESSION['erro'] = 'Erro ao compartilhar agenda: ' . $conn->error;
    }
} else {
    // Inserir novo compartilhamento
    $sql_inserir = "INSERT INTO compartilhamento_agenda 
                   (usuario_proprietario_id, usuario_compartilhado_id, tenant_id) 
                   VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql_inserir);
    $stmt->bind_param("iii", $usuario_proprietario_id, $usuario_compartilhado_id, $tenant_id);
    
    if ($stmt->execute()) {
        $_SESSION['sucesso'] = 'Agenda compartilhada com sucesso com ' . htmlspecialchars($usuario_compartilhado['nome']) . '!';
    } else {
        $_SESSION['erro'] = 'Erro ao compartilhar agenda: ' . $conn->error;
    }
}

$stmt->close();
$conn->close();

header('Location: calendario.php');
exit;