<?php
session_start();

// Verificar login e tenant
if (!isset($_SESSION['logado'], $_SESSION['usuario_id'], $_SESSION['tenant_id']) || $_SESSION['logado'] !== true) {
    header('HTTP/1.1 401 Unauthorized');
    exit(json_encode(['success' => false, 'message' => 'Não autorizado']));
}

require_once 'conexao.php';

// Verificar CSRF token
if (!isset($_SERVER['HTTP_REFERER'])) {
    header('HTTP/1.1 403 Forbidden');
    exit(json_encode(['success' => false, 'message' => 'Origem não permitida']));
}

$data = json_decode(file_get_contents('php://input'), true);

if (!isset($data['csrf_token']) || $data['csrf_token'] !== $_SESSION['csrf_token']) {
    header('HTTP/1.1 403 Forbidden');
    exit(json_encode(['success' => false, 'message' => 'Token de segurança inválido']));
}

if (empty($data['nome'])) {
    header('HTTP/1.1 400 Bad Request');
    exit(json_encode(['success' => false, 'message' => 'O nome da origem é obrigatório']));
}

try {
    $tenantId = (int) $_SESSION['tenant_id'];
    $nome = trim($data['nome']);
    
    // Verificar se a origem já existe
    $stmt = $conn->prepare("SELECT id FROM origens WHERE nome = ? AND tenant_id = ?");
    $stmt->bind_param("si", $nome, $tenantId);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        echo json_encode(['success' => true, 'id' => $row['id'], 'message' => 'Origem já existente']);
        exit;
    }
    
    // Inserir nova origem
    $stmt = $conn->prepare("INSERT INTO origens (nome, tenant_id) VALUES (?, ?)");
    $stmt->bind_param("si", $nome, $tenantId);
    
    if ($stmt->execute()) {
        echo json_encode(['success' => true, 'id' => $conn->insert_id, 'message' => 'Origem cadastrada com sucesso']);
    } else {
        throw new Exception("Erro ao cadastrar origem: " . $stmt->error);
    }
} catch (Exception $e) {
    header('HTTP/1.1 500 Internal Server Error');
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}

try {
    $tenantId = (int) $_SESSION['tenant_id'];
    $nome = trim($data['nome']);
    
    // Verificar se a origem já existe
    $stmt = $conn->prepare("SELECT id FROM origens WHERE nome = ? AND tenant_id = ?");
    $stmt->bind_param("si", $nome, $tenantId);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        echo json_encode(['success' => true, 'id' => $row['id'], 'message' => 'Origem já existente']);
        exit;
    }
    
    // Inserir nova origem
    $stmt = $conn->prepare("INSERT INTO origens (nome, tenant_id) VALUES (?, ?)");
    $stmt->bind_param("si", $nome, $tenantId);
    
    if ($stmt->execute()) {
        echo json_encode(['success' => true, 'id' => $conn->insert_id, 'message' => 'Origem cadastrada com sucesso']);
    } else {
        throw new Exception("Erro ao cadastrar origem: " . $stmt->error);
    }
} catch (Exception $e) {
    header('HTTP/1.1 500 Internal Server Error');
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}