<?php
include 'verifica_login.php'; // Verificar se está logado
header('Content-Type: application/json');
include 'conexao.php';
$conn = conectar_banco();

// Ensure table exists (optional safety)
$conn->query("CREATE TABLE IF NOT EXISTS contatos_questionario (
  idcontatos_questionario INT(6) NOT NULL AUTO_INCREMENT,
  id INT(10) NOT NULL,
  area VARCHAR(50) NOT NULL,
  entrevistado VARCHAR(1) NOT NULL,
  nome VARCHAR(100) NOT NULL,
  sobrenome VARCHAR(100) NOT NULL,
  sexo VARCHAR(1) NOT NULL,
  cargo VARCHAR(50) NOT NULL,
  ddd VARCHAR(3) NOT NULL,
  telefone1 VARCHAR(30) NOT NULL,
  telefone2 VARCHAR(30) NOT NULL,
  email VARCHAR(100) NOT NULL,
  endereco VARCHAR(100) NOT NULL,
  numero VARCHAR(30) NOT NULL,
  complemento VARCHAR(50) NOT NULL,
  bairro VARCHAR(50) NOT NULL,
  cidade VARCHAR(50) NOT NULL,
  uf VARCHAR(2) NOT NULL,
  cep VARCHAR(15) NOT NULL,
  observacoes VARCHAR(200) NOT NULL,
  PRIMARY KEY (idcontatos_questionario)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci");

$action = $_GET['action'] ?? $_POST['action'] ?? '';

function json_error($msg){ echo json_encode(['success'=>false,'message'=>$msg]); exit; }
function json_ok($data=null){ echo json_encode(['success'=>true,'data'=>$data]); exit; }

if($action === 'list'){
    $id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
    if(!$id) json_error('ID inválido');
    $stmt = $conn->prepare("SELECT c.*, cs.contato_status as status_nome FROM contatos_questionario c LEFT JOIN contato_status cs ON c.idcontato_status = cs.idcontato_status WHERE c.id = ? ORDER BY c.nome ASC");
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $res = $stmt->get_result();
    $rows = [];
    while($r = $res->fetch_assoc()) $rows[] = $r;
    $stmt->close();
    json_ok($rows);
} elseif($action === 'get'){
    $idcq = isset($_GET['idcq']) ? (int)$_GET['idcq'] : 0;
    if(!$idcq) json_error('ID contato inválido');
    $stmt = $conn->prepare("SELECT * FROM contatos_questionario WHERE idcontatos_questionario = ?");
    $stmt->bind_param('i', $idcq);
    $stmt->execute();
    $res = $stmt->get_result();
    $row = $res->fetch_assoc();
    $stmt->close();
    if(!$row) json_error('Contato não encontrado');
    json_ok($row);
} elseif($action === 'save'){
    $idcq = isset($_POST['idcontatos_questionario']) && $_POST['idcontatos_questionario'] !== '' ? (int)$_POST['idcontatos_questionario'] : 0;
    $id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
    if(!$id) json_error('Questionário inválido');

    $area = $_POST['area'] ?? '';
    $entrevistado = $_POST['entrevistado'] ?? '';
    $nome = $_POST['nome'] ?? '';
    $sobrenome = $_POST['sobrenome'] ?? '';
    $sexo = $_POST['sexo'] ?? '';
    $cargo = $_POST['cargo'] ?? '';
    $ddd = $_POST['ddd'] ?? '';
    $telefone1 = $_POST['telefone1'] ?? '';
    $telefone2 = $_POST['telefone2'] ?? '';
    $email = $_POST['email'] ?? '';
    $linkedin = $_POST['linkedin'] ?? '';
    $idcontato_status = isset($_POST['idcontato_status']) && $_POST['idcontato_status'] !== '' ? (int)$_POST['idcontato_status'] : 0;
    $ramal = $_POST['ramal'] ?? '';
    $celular = $_POST['celular'] ?? '';
    $endereco_mesmo = $_POST['endereco_mesmo'] ?? '';
    $endereco = $_POST['endereco'] ?? '';
    $numero = $_POST['numero'] ?? '';
    $complemento = $_POST['complemento'] ?? '';
    $bairro = $_POST['bairro'] ?? '';
    $cidade = $_POST['cidade'] ?? '';
    $uf = $_POST['uf'] ?? '';
    $cep = $_POST['cep'] ?? '';
    $observacoes = $_POST['observacoes'] ?? '';

    if($idcq){
        $sql = "UPDATE contatos_questionario SET id=?, area=?, entrevistado=?, nome=?, sobrenome=?, sexo=?, cargo=?, ddd=?, telefone1=?, telefone2=?, email=?, linkedin=?, idcontato_status=?, ramal=?, celular=?, endereco_mesmo=?, endereco=?, numero=?, complemento=?, bairro=?, cidade=?, uf=?, cep=?, observacoes=? WHERE idcontatos_questionario=?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('isssssssssssississssssssi', $id, $area, $entrevistado, $nome, $sobrenome, $sexo, $cargo, $ddd, $telefone1, $telefone2, $email, $linkedin, $idcontato_status, $ramal, $celular, $endereco_mesmo, $endereco, $numero, $complemento, $bairro, $cidade, $uf, $cep, $observacoes, $idcq);
        $ok = $stmt->execute();
        $stmt->close();
        if(!$ok) json_error('Falha ao atualizar');
        json_ok();
    } else {
        $sql = "INSERT INTO contatos_questionario (id, area, entrevistado, nome, sobrenome, sexo, cargo, ddd, telefone1, telefone2, email, linkedin, idcontato_status, ramal, celular, endereco_mesmo, endereco, numero, complemento, bairro, cidade, uf, cep, observacoes)
                VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('isssssssssssississssssss', $id, $area, $entrevistado, $nome, $sobrenome, $sexo, $cargo, $ddd, $telefone1, $telefone2, $email, $linkedin, $idcontato_status, $ramal, $celular, $endereco_mesmo, $endereco, $numero, $complemento, $bairro, $cidade, $uf, $cep, $observacoes);
        $ok = $stmt->execute();
        $stmt->close();
        if(!$ok) json_error('Falha ao inserir');
        json_ok();
    }
} elseif($action === 'delete'){
    $idcq = isset($_POST['idcontatos_questionario']) ? (int)$_POST['idcontatos_questionario'] : 0;
    if(!$idcq) json_error('ID contato inválido');
    $stmt = $conn->prepare("DELETE FROM contatos_questionario WHERE idcontatos_questionario = ?");
    $stmt->bind_param('i', $idcq);
    $ok = $stmt->execute();
    $stmt->close();
    if(!$ok) json_error('Falha ao excluir');
    json_ok();
}

// NOVAS AÇÕES PARA PESQUISA_CONTATOS
elseif ($action === 'add') {
    $id_pesquisa_empresa = (int)($_POST['id_pesquisa_empresa'] ?? 0);
    $id_empresa = (int)($_POST['id_empresa'] ?? 0);
    $nome = trim($_POST['nome'] ?? '');
    $email = trim($_POST['email'] ?? '');
    $telefone = trim($_POST['telefone'] ?? '');
    $area = trim($_POST['area'] ?? '');
    
    if ($id_pesquisa_empresa <= 0) {
        json_error('ID da pesquisa empresa inválido');
    }
    
    if (empty($nome)) {
        json_error('Nome do contato é obrigatório');
    }
    
    try {
        $conn->begin_transaction();
        
        // Verificar se existe contato na tabela contatos_empresa
        $stmt_check = $conn->prepare("SELECT idcontatos_empresa FROM contatos_empresa WHERE id_empresa = ? AND nome = ? LIMIT 1");
        $stmt_check->bind_param('is', $id_empresa, $nome);
        $stmt_check->execute();
        $result_check = $stmt_check->get_result();
        
        if ($result_check->num_rows > 0) {
            $row = $result_check->fetch_assoc();
            $id_contato_empresa = $row['idcontatos_empresa'];
        } else {
            // Criar novo contato na tabela contatos_empresa
            $stmt_insert_ce = $conn->prepare("
                INSERT INTO contatos_empresa 
                (id_empresa, nome, email, tel, depto, sobrenome, cargo, sexo, ddd, celular, ramal, linkedin, status_contato) 
                VALUES (?, ?, ?, ?, ?, '', '', '', '', '', '', '', 'Ativo')
            ");
            $stmt_insert_ce->bind_param('isss', $id_empresa, $nome, $email, $telefone);
            $stmt_insert_ce->execute();
            $id_contato_empresa = $conn->insert_id;
        }
        
        // Inserir na tabela pesquisa_contatos
        $stmt_insert = $conn->prepare("
            INSERT INTO pesquisa_contatos 
            (id_pesquisa_empresa_fk, id_contato_empresa_fk, nome, email, telefone, area, status) 
            VALUES (?, ?, ?, ?, ?, ?, 'ativo')
        ");
        $stmt_insert->bind_param('iissss', $id_pesquisa_empresa, $id_contato_empresa, $nome, $email, $telefone, $area);
        $stmt_insert->execute();
        
        $conn->commit();
        json_ok(['id' => $conn->insert_id]);
        
    } catch (Exception $e) {
        $conn->rollback();
        json_error('Erro ao adicionar contato: ' . $e->getMessage());
    }
}

// Excluir contato de pesquisa (soft delete)
elseif ($action === 'delete_pesquisa_contato') {
    $id_contato = (int)($_POST['id_contato'] ?? 0);
    
    if ($id_contato <= 0) {
        json_error('ID do contato inválido');
    }
    
    try {
        // Soft delete - apenas marca como inativo
        $stmt = $conn->prepare("UPDATE pesquisa_contatos SET status = 'inativo' WHERE id = ?");
        $stmt->bind_param('i', $id_contato);
        $stmt->execute();
        
        if ($stmt->affected_rows > 0) {
            json_ok();
        } else {
            json_error('Contato não encontrado');
        }
        
    } catch (Exception $e) {
        json_error('Erro ao excluir contato: ' . $e->getMessage());
    }
}

// Buscar contato específico de pesquisa
elseif ($action === 'get_pesquisa_contato') {
    $id_contato = (int)($_GET['id'] ?? 0);
    
    if ($id_contato <= 0) {
        json_error('ID do contato inválido');
    }
    
    try {
        $stmt = $conn->prepare("
            SELECT pc.*, ce.depto, ce.sobrenome, ce.cargo, ce.sexo, ce.ddd, ce.celular, ce.ramal, ce.linkedin, ce.status_contato
            FROM pesquisa_contatos pc
            LEFT JOIN contatos_empresa ce ON pc.id_contato_empresa_fk = ce.idcontatos_empresa
            WHERE pc.id = ?
        ");
        $stmt->bind_param('i', $id_contato);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($row = $result->fetch_assoc()) {
            json_ok($row);
        } else {
            json_error('Contato não encontrado');
        }
        
    } catch (Exception $e) {
        json_error('Erro ao buscar contato: ' . $e->getMessage());
    }
}

// Atualizar contato de pesquisa
elseif ($action === 'update') {
    $id_contato = (int)($_POST['id_contato'] ?? 0);
    $id_pesquisa_empresa = (int)($_POST['id_pesquisa_empresa'] ?? 0);
    $id_empresa = (int)($_POST['id_empresa'] ?? 0);
    $nome = trim($_POST['nome'] ?? '');
    $sobrenome = trim($_POST['sobrenome'] ?? '');
    $email = trim($_POST['email'] ?? '');
    $telefone = trim($_POST['telefone'] ?? '');
    $celular = trim($_POST['celular'] ?? '');
    $area = trim($_POST['area'] ?? '');
    $cargo = trim($_POST['cargo'] ?? '');
    $ddd = trim($_POST['ddd'] ?? '');
    $entrevistado = trim($_POST['entrevistado'] ?? '');
    $status_contato = trim($_POST['status_contato'] ?? 'Ativo');
    
    if ($id_contato <= 0) {
        json_error('ID do contato inválido');
    }
    
    if (empty($nome)) {
        json_error('Nome do contato é obrigatório');
    }
    
    try {
        $conn->begin_transaction();
        
        // Atualizar pesquisa_contatos
        $stmt_update = $conn->prepare("
            UPDATE pesquisa_contatos 
            SET nome = ?, email = ?, telefone = ?, area = ?
            WHERE id = ?
        ");
        $stmt_update->bind_param('ssssi', $nome, $email, $telefone, $area, $id_contato);
        $stmt_update->execute();
        
        // Buscar id_contato_empresa_fk
        $stmt_get = $conn->prepare("SELECT id_contato_empresa_fk FROM pesquisa_contatos WHERE id = ?");
        $stmt_get->bind_param('i', $id_contato);
        $stmt_get->execute();
        $result = $stmt_get->get_result();
        
        if ($row = $result->fetch_assoc()) {
            $id_contato_empresa = $row['id_contato_empresa_fk'];
            
            // Atualizar contatos_empresa
            $stmt_update_ce = $conn->prepare("
                UPDATE contatos_empresa 
                SET nome = ?, sobrenome = ?, email = ?, tel = ?, celular = ?, depto = ?, cargo = ?, ddd = ?, sexo = ?, status_contato = ?
                WHERE idcontatos_empresa = ?
            ");
            $stmt_update_ce->bind_param('ssssssssssi', $nome, $sobrenome, $email, $telefone, $celular, $area, $cargo, $ddd, $entrevistado, $status_contato, $id_contato_empresa);
            $stmt_update_ce->execute();
        }
        
        $conn->commit();
        json_ok();
        
    } catch (Exception $e) {
        $conn->rollback();
        json_error('Erro ao atualizar contato: ' . $e->getMessage());
    }
}

else {
    json_error('Ação inválida');
}

$conn->close();
