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

// Verifica autenticação e se tenant_id está disponível
if (!isset($_SESSION['tenant_id']) || !isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    die(json_encode(['success' => false, 'message' => 'Sessão inválida ou usuário não autenticado']));
}

$tenantId = (int)$_SESSION['tenant_id'];

// Verifica CSRF token
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die(json_encode(['success' => false, 'message' => 'Token CSRF inválido']));
}

// Validação dos dados
if (empty($_POST['cliente_id']) || empty($_POST['produto_id']) || empty($_POST['quantidade']) || empty($_POST['preco_unitario'])) {
    die(json_encode(['success' => false, 'message' => 'Todos os campos são obrigatórios']));
}

$clienteId = (int)$_POST['cliente_id'];
$produtoId = (int)$_POST['produto_id'];
$quantidade = (int)$_POST['quantidade'];
$precoUnitario = (float)$_POST['preco_unitario'];

// Verifica se o cliente pertence ao tenant atual
$sqlCliente = "SELECT id FROM clientes WHERE id = ? AND tenant_id = ?";
$stmtCliente = $conn->prepare($sqlCliente);
$stmtCliente->bind_param("ii", $clienteId, $tenantId);
$stmtCliente->execute();
$resultCliente = $stmtCliente->get_result();

if ($resultCliente->num_rows === 0) {
    die(json_encode(['success' => false, 'message' => 'Cliente inválido ou não pertence a este tenant']));
}
$stmtCliente->close();

// Verifica se o produto pertence ao tenant atual
$sqlProduto = "SELECT id FROM produtos WHERE id = ? AND tenant_id = ?";
$stmtProduto = $conn->prepare($sqlProduto);
$stmtProduto->bind_param("ii", $produtoId, $tenantId);
$stmtProduto->execute();
$resultProduto = $stmtProduto->get_result();

if ($resultProduto->num_rows === 0) {
    die(json_encode(['success' => false, 'message' => 'Produto inválido ou não pertence a este tenant']));
}
$stmtProduto->close();

// Verifica se o produto já está associado ao cliente
$sqlVerifica = "SELECT * FROM cliente_produtos 
                WHERE cliente_id = ? AND produto_id = ? 
                AND EXISTS (SELECT 1 FROM clientes WHERE id = ? AND tenant_id = ?)";
$stmtVerifica = $conn->prepare($sqlVerifica);
$stmtVerifica->bind_param("iiii", $clienteId, $produtoId, $clienteId, $tenantId);
$stmtVerifica->execute();
$resultado = $stmtVerifica->get_result();

if ($resultado->num_rows > 0) {
    die(json_encode(['success' => false, 'message' => 'Este produto já está associado ao cliente']));
}

// Insere o novo produto com verificação de tenant
$sqlInserir = "INSERT INTO cliente_produtos (cliente_id, produto_id, quantidade, preco_unitario) 
               SELECT ?, ?, ?, ?
               FROM clientes 
               WHERE id = ? AND tenant_id = ?";
$stmtInserir = $conn->prepare($sqlInserir);
$stmtInserir->bind_param("iiidii", $clienteId, $produtoId, $quantidade, $precoUnitario, $clienteId, $tenantId);

if ($stmtInserir->execute()) {
    echo json_encode(['success' => true, 'message' => 'Produto adicionado com sucesso']);
} else {
    echo json_encode(['success' => false, 'message' => 'Erro ao adicionar produto: ' . $conn->error]);
}

$stmtVerifica->close();
$stmtInserir->close();
$conn->close();
?>