<?php
// api/tomadores_api.php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, DELETE');
header('Access-Control-Allow-Headers: Content-Type');

require_once '../includes/funcoes.php';

$pdo = conectarBanco();

if (!$pdo) {
    echo json_encode([
        'sucesso' => false,
        'erro' => 'Erro ao conectar ao banco de dados'
    ]);
    exit;
}

$method = $_SERVER['REQUEST_METHOD'];

try {
    switch ($method) {
        case 'GET':
            // Buscar um tomador específico
            if (isset($_GET['action']) && $_GET['action'] === 'get' && isset($_GET['id'])) {
                $id = (int)$_GET['id'];
                
                $stmt = $pdo->prepare("
                    SELECT 
                        t.id,
                        t.empresa_id,
                        t.cnpj,
                        t.cpf,
                        t.razao_social,
                        t.email,
                        t.telefone,
                        t.inscricao_municipal,
                        t.endereco_id,
                        t.ativo,
                        end.logradouro,
                        end.numero,
                        end.bairro,
                        end.cidade,
                        end.codigo_municipio,
                        end.uf,
                        end.cep
                    FROM tomadores t
                    LEFT JOIN enderecos end ON t.endereco_id = end.id
                    WHERE t.id = ?
                ");
                $stmt->execute([$id]);
                $tomador = $stmt->fetch(PDO::FETCH_ASSOC);
                
                if ($tomador) {
                    echo json_encode([
                        'sucesso' => true,
                        'dados' => $tomador
                    ]);
                } else {
                    echo json_encode([
                        'sucesso' => false,
                        'erro' => 'Tomador não encontrado'
                    ]);
                }
            } else {
                echo json_encode([
                    'sucesso' => false,
                    'erro' => 'Parâmetros inválidos'
                ]);
            }
            break;
            
        case 'POST':
            // Excluir tomador
            $data = json_decode(file_get_contents('php://input'), true);
            
            if (isset($data['action']) && $data['action'] === 'delete' && isset($data['tomador_id'])) {
                $id = (int)$data['tomador_id'];
                
                // Verificar se o tomador existe
                $stmt = $pdo->prepare("SELECT id, endereco_id FROM tomadores WHERE id = ?");
                $stmt->execute([$id]);
                $tomador = $stmt->fetch(PDO::FETCH_ASSOC);
                
                if (!$tomador) {
                    echo json_encode([
                        'sucesso' => false,
                        'erro' => 'Tomador não encontrado'
                    ]);
                    exit;
                }
                
                $pdo->beginTransaction();
                
                try {
                    // Excluir endereço
                    $stmt = $pdo->prepare("DELETE FROM enderecos WHERE id = ?");
                    $stmt->execute([$tomador['endereco_id']]);
                    
                    // Excluir tomador
                    $stmt = $pdo->prepare("DELETE FROM tomadores WHERE id = ?");
                    $stmt->execute([$id]);
                    
                    $pdo->commit();
                    
                    echo json_encode([
                        'sucesso' => true,
                        'mensagem' => 'Tomador excluído com sucesso'
                    ]);
                } catch (PDOException $e) {
                    $pdo->rollBack();
                    echo json_encode([
                        'sucesso' => false,
                        'erro' => 'Erro ao excluir: ' . $e->getMessage()
                    ]);
                }
            } else {
                echo json_encode([
                    'sucesso' => false,
                    'erro' => 'Ação inválida'
                ]);
            }
            break;
            
        default:
            echo json_encode([
                'sucesso' => false,
                'erro' => 'Método não permitido'
            ]);
            break;
    }
} catch (Exception $e) {
    echo json_encode([
        'sucesso' => false,
        'erro' => 'Erro no servidor: ' . $e->getMessage()
    ]);
}
?>