<?php
// include identifica.cripto.php para conexão
include 'identifica.cripto.php';

// Receber parâmetros pela URL
$campo = isset($_GET['campo']) ? $_GET['campo'] : '';
$tipo = isset($_GET['tipo']) ? $_GET['tipo'] : '';
$lista_instituicoes = isset($_GET['lista_instituicoes']) ? $_GET['lista_instituicoes'] : '';

echo "{".$campo."} " .$tipo." ".$lista_instituicoes;
//echo $lista_instituicoes;
//echo $campo."]";
//echo $tipo;

   $idArray = explode(',', $lista_instituicoes);

    // Limpar os IDs para garantir que são inteiros (segurança)
    $idArray = array_filter($idArray, function($value) {
        return (filter_var($value, FILTER_VALIDATE_INT) !== false);
    });

    $idList = implode(',', $idArray);

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

try {
    // Criar conexão com o banco de dados
    $conn = new mysqli($servername, $username, $password, $dbname);

    // Verificar conexão
    if ($conn->connect_error) {
        throw new Exception("Connection failed: " . $conn->connect_error);
    }
//    $sql = "SELECT
//                concat(
//'<div class=\"linha\">',
//'<div class=\"logo\">', '<img src=\"../imagens/',logo,'\" alt=\"logo\">', '</div>',".
//
//                   "'<div class=\"nome_instituicao\">', nome_instituicao, '</div>',
//                    group_concat(
//                        CASE
//                            WHEN t1.titulo != 'nulo' THEN 
//                                concat('<div class=\"celula\">',
//                                    '<div class=\"caption\">', nome_tipo_classificacao, '</div>',
//                                    '<div>', t1.titulo, '</div>',
//                                '</div>')
//                            ELSE ''
//                        END separator ''
//                    ),
//                '</div>') as curso_final
//            FROM
//                cursos
//            LEFT JOIN
//                instituicoes ON id_instituicao = id_chave_instituicao
//            LEFT JOIN
//                campos_cursos cc ON cc.id_curso = id_chave_curso
//            LEFT JOIN
//                (
//                    SELECT
//			 TRIM(REPLACE(
//			           REPLACE(
//			               GROUP_CONCAT(concat(caracter_antes, acentuada, caracter_depois) ORDER BY ordem separator ''), 
//			               CONCAT(' ', CHAR(8)), 
//			               ''
//			           ), 
//			           '  ', 
//			           ' '
//			       ))  as titulo,
//                        id_titulo
//                    FROM
//                        frases,
//                        tokens,
//			classificacoes_tokens
//                    WHERE
//                        id_chave_token = id_token AND
//			binary tokens.nome_token = classificacoes_tokens.nome_token
//                    GROUP BY
//                        id_titulo
//                ) as t1 ON t1.id_titulo = cc.id_titulo
//            LEFT JOIN
//                titulos ON t1.id_titulo = id_chave_titulo
//            LEFT JOIN
//                tipos_classificacoes ON id_tipo_classificacao = id_chave_tipo_classificacao
//            WHERE
//                id_chave_curso IN (
//                    SELECT
//                        id_chave_curso
//                    FROM
//                        cursos
//                    LEFT JOIN
//                        campos_cursos cc ON cc.id_curso = id_chave_curso
//                    LEFT JOIN
//                        (
//                            SELECT
//                                group_concat(acentuada order by ordem separator ' ') as titulo,
//                                id_titulo
//                            FROM
//                                frases,
//                                tokens
//                            WHERE
//                                id_chave_token = id_token
//                            GROUP BY
//                                id_titulo
//                        ) as t2 ON t2.id_titulo = cc.id_titulo
//                    LEFT JOIN
//                        titulos ON t2.id_titulo = id_chave_titulo
//                    LEFT JOIN
//                        tipos_classificacoes ON id_tipo_classificacao = id_chave_tipo_classificacao
//                    WHERE
//                        nome_tipo_classificacao = ? AND t2.titulo LIKE ?
//                    ORDER BY id_chave_curso
//                ) AND id_chave_instituicao IN ($idList)
//            GROUP BY id_chave_curso
//            ORDER BY id_chave_curso";


    // Query SQL principal
    $sql = "

SELECT
                concat(
'<div class=\"linha\">',
'<div class=\"logo\">', '<img src=\"../imagens/',logo,'\" alt=\"logo\">', '</div>',
'<div class=\"nome_instituicao\">', nome_instituicao, '</div>',
                    group_concat(
                        CASE
                            WHEN t2.titulo != 'nulo' THEN 
                                concat('<div class=\"celula\">',
                                    '<div class=\"caption\">', tc.nome_tipo_classificacao, '</div>',
                                    '<div>', t2.titulo, '</div>',
                                '</div>')
                            ELSE ''
                        END separator ''
                    ),
                '</div>') as curso_final
            FROM
                cursos
            LEFT JOIN
                instituicoes ON id_instituicao = id_chave_instituicao
            LEFT JOIN
                campos_cursos cc ON cc.id_curso = id_chave_curso
            LEFT JOIN
                (

		SELECT 
			t1.frase as titulo, 
			t1.id_titulo as id_titulo
			from (
		                       SELECT 
					    REPLACE(
		                                   TRIM(REPLACE(
		                                       GROUP_CONCAT(concat(subconsulta.caracter_antes,
		
		                            CASE 
		                                 WHEN subconsulta.nome_tipo_token = 'sigla' THEN UPPER(subconsulta.acentuada)
		                                 WHEN subconsulta.nome_tipo_token IN ('preposicao', 'conjuncao') THEN LOWER(subconsulta.acentuada)
		                                 ELSE CONCAT(UPPER(SUBSTRING(subconsulta.acentuada, 1, 1)), LOWER(SUBSTRING(subconsulta.acentuada, 2)))
		                             END,
		
		
		 subconsulta.caracter_depois) ORDER BY ordem separator ''),
		                                       CONCAT(' ', CHAR(8)),
		                                       ''
		                                   )),
		                                   '  ',
		                                   ' '
		                               ) AS frase,
		                               subconsulta.id_titulo as id_titulo
		                        FROM (
		                            SELECT DISTINCT t.acentuada acentuada, ordem, f.id_titulo as id_titulo, ct.caracter_antes as caracter_antes, ct.caracter_depois as caracter_depois, tt.nome_tipo_token as nome_tipo_token
		                            FROM tokens t
		                            LEFT JOIN frases f ON f.id_token = t.id_chave_token
		                            LEFT JOIN classificacoes_tokens ct ON binary t.acentuada = ct.nome_token
					    LEFT JOIN tipos_tokens tt ON ct.id_tipo_token = id_chave_tipo_token
		                        ) AS subconsulta
		                        GROUP BY subconsulta.id_titulo
		) as t1 
		) as t2 ON t2.id_titulo = cc.id_titulo
            LEFT JOIN
                tipos_classificacoes tc ON cc.id_tipo_classificacao = id_chave_tipo_classificacao
            WHERE
                id_chave_curso IN (
                    SELECT
                        id_chave_curso
                    FROM
                        cursos
                    LEFT JOIN
                        campos_cursos cc ON cc.id_curso = id_chave_curso
                    LEFT JOIN
                        (
                            SELECT
                                group_concat(acentuada order by ordem separator ' ') as titulo,
                                id_titulo
                            FROM
                                frases,
                                tokens
                            WHERE
                                id_chave_token = id_token
                            GROUP BY
                                id_titulo
                        ) as t2 ON t2.id_titulo = cc.id_titulo
                    LEFT JOIN
                        titulos ON t2.id_titulo = id_chave_titulo
                    LEFT JOIN
                        tipos_classificacoes tc2 ON id_tipo_classificacao = id_chave_tipo_classificacao
                    WHERE
                         t2.titulo COLLATE utf8mb4_general_ci LIKE ? and tc2.nome_tipo_classificacao = ? 
                    ORDER BY id_chave_curso
                ) AND id_chave_instituicao IN ($idList)
            GROUP BY id_chave_curso
            ORDER BY id_chave_curso;

";


    // Preparar e executar a consulta
    $stmt = $conn->prepare($sql);
    $searchTerm1 = "$campo%";
    $searchTerm2 = $tipo;
    $stmt->bind_param("ss", $searchTerm1, $searchTerm2);
    $stmt->execute();

    // Obter resultados
    $result = $stmt->get_result();
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
//var_dump($data);
    echo json_encode($data);

    // Fechar conexões
    $stmt->close();
    $conn->close();

} catch (Exception $e) {
    echo json_encode(["error" => $e->getMessage()]);
}
?>
