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

header('Content-Type: application/json');

if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    http_response_code(401);
    echo json_encode(['error' => 'Usuário não autenticado']);
    exit;
}

$remetente_id = $_SESSION['usuario_id'];
$destinatario_id = filter_input(INPUT_POST, 'destinatario_id', FILTER_VALIDATE_INT);
$mensagem = trim($_POST['mensagem'] ?? '');

if (!$destinatario_id) {
    http_response_code(400);
    echo json_encode(['error' => 'Destinatário inválido']);
    exit;
}

$arquivo_nome_salvo = null;

// Cria o diretório de uploads, se não existir
$diretorio_uploads = 'uploads/';
if (!is_dir($diretorio_uploads)) {
    mkdir($diretorio_uploads, 0755, true);
}

// Verifica se há upload de arquivo
if (!empty($_FILES['arquivo']['name']) && $_FILES['arquivo']['error'] === UPLOAD_ERR_OK) {
    $extensao = strtolower(pathinfo($_FILES['arquivo']['name'], PATHINFO_EXTENSION));
    $ext_permitidas = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'pdf', 'docx', 'xlsx', 'txt', 'zip'];

    if (!in_array($extensao, $ext_permitidas)) {
        http_response_code(400);
        echo json_encode(['error' => 'Tipo de arquivo não permitido']);
        exit;
    }

    if ($_FILES['arquivo']['size'] > 5 * 1024 * 1024) { // 5 MB
        http_response_code(400);
        echo json_encode(['error' => 'Arquivo excede o tamanho máximo de 5MB']);
        exit;
    }

    $arquivo_nome_salvo = uniqid('arquivo_') . '.' . $extensao;
    $caminho_arquivo = $diretorio_uploads . $arquivo_nome_salvo;

    if (!move_uploaded_file($_FILES['arquivo']['tmp_name'], $caminho_arquivo)) {
        http_response_code(500);
        echo json_encode(['error' => 'Falha ao mover o arquivo']);
        exit;
    }
}

// Verifica se há algo para salvar
if (empty($mensagem) && !$arquivo_nome_salvo) {
    http_response_code(400);
    echo json_encode(['error' => 'Mensagem ou arquivo são obrigatórios']);
    exit;
}

// Grava no banco
$stmt = $conn->prepare("INSERT INTO mensagens (remetente_id, destinatario_id, mensagem, arquivo) VALUES (?, ?, ?, ?)");
$stmt->bind_param("iiss", $remetente_id, $destinatario_id, $mensagem, $arquivo_nome_salvo);

if ($stmt->execute()) {
    echo json_encode(['success' => true]);
} else {
    http_response_code(500);
    echo json_encode(['error' => 'Erro ao salvar mensagem']);
}

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