SELECT
    CONCAT(
        '<div id="curso_', id_chave_curso, '" class="linha">',
        '<div class="logo" style="width: ',largura_logo_instituicao,'">', '<img src="../imagens/', logo, '" alt="logo">', '</div>',
        '<div class="nome_instituicao" data-id-instituicao="',id_chave_instituicao,'">', nome_instituicao, '</div>',
        GROUP_CONCAT( DISTINCT
            CONCAT(
       		CASE
			WHEN ordem = 1 THEN '<div class="flip-card"><div class="flip-card-inner"><div class="flip-card-front is-visible"><img class="imagem_curso" src="../imagens/tecnico-eletronica.jpg" alt="Imagem"></div><div class="flip-card-back not-visible"><div class="detalhes">'
			ELSE ''
		END,
         '<div class="celula" style="',tc.isolamento_valor, CASE WHEN tc.limita_largura <> 'nao_limita' THEN concat(' width: ',tc.limita_largura,';') ELSE '' END,'">',
		CASE 
			WHEN tc.mostra_caption_tamanho <> 'nao_mostra' THEN concat
									(
										'<div class="caption" data-tipo-classificacao="', tc.nome_tipo_classificacao, '" ',
										'data-titulo="', COALESCE(t.titulo, 'Sem título'), '" ',
										'data-companion="curso_', id_chave_curso, '" style="font-size: ',tc.mostra_caption_tamanho,';">', tc.caption_substituto, '</div>'
									)
			ELSE ''
		END,
		CASE
			WHEN tc.mostra_valor_tamanho <> 'nao_mostra' THEN concat
									(
								                '<div class="valor" style="',
										'font-size: '			, tc.mostra_valor_tamanho	,'; ',
										'font-weight: '			, tc.bold_valor			,'; ',
										'color: '			, tc.color_valor		,'; ',
										'border: '			, tc.border_valor		,'; ',
										'border-radius: '		, tc.border_radius_valor	,'; ',
										'background-color: '		, tc.background_valor		,'; ',
										'padding-left: '		, tc.padding_left_valor		,'; ',
										'padding-right: '		, tc.padding_right_valor	,'; ',
										'padding-top: '			, tc.padding_top_valor		,'; ',
										'padding-bottom: '		, tc.padding_bottom_valor	,'; ',
										'margin-left: '			, tc.margin_left_valor		,'; ',
										'margin-right: '		, tc.margin_right_valor		,'; ',
										'margin-top: '			, tc.margin_top_valor		,'; ',
										'margin-bottom: '		, tc.margin_bottom_valor	,'; ',
										'">', 
										CASE 											
											WHEN tc.junta_caption_valor = 'sim' THEN concat(tc.caption_substituto,': ')
											ELSE '' 
										END,
										COALESCE(t.titulo, 'Sem título'),tc.caracter_depois_valor, '</div>'
									)
			ELSE ''
		END,
                '</div>',
		CASE 
			WHEN tc.forca_quebra_linha = 'sim' THEN '<div class="forca_quebra"></div>'
			ELSE ''
		END
            )
            ORDER BY tc.ordem, tc.id_chave_tipo_classificacao SEPARATOR ''
        ),
        '</div></div></div></div>', # fecha flip-card
        '</div>'
    ) AS curso_final,
    id_chave_curso,
    cp.nome_cidade,
    id_cidade,
    sigla_estado,
    ep.codigo_ibge id_estado_ibge,
    cp.latitude,
    cp.longitude,
    id_chave_instituicao,
    nome_instituicao,
    sigla,
    id_url,
    (select nome_url from URLs where id_url = id_chave_url) as nome_url,
    cursos.id_arquivo_fonte
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 frases_opt t ON t.id_titulo = cc.id_titulo
LEFT JOIN tipos_classificacoes tc ON cc.id_tipo_classificacao = tc.id_chave_tipo_classificacao

-- Garantia de que o curso está associado às cidades próximas

LEFT JOIN cidades cp ON id_chave_cidade = id_cidade 
LEFT JOIN estados ep ON ep.codigo_ibge = id_estado
LEFT JOIN URLs ON id_url = id_chave_url
GROUP BY id_chave_curso
ORDER BY latitude;
