{"id":3532,"date":"2024-10-28T22:51:20","date_gmt":"2024-10-28T22:51:20","guid":{"rendered":"https:\/\/secop.org.br\/?page_id=3532"},"modified":"2024-10-28T22:55:46","modified_gmt":"2024-10-28T22:55:46","slug":"validar_certificado","status":"publish","type":"page","link":"https:\/\/secop.org.br\/2025\/validar_certificado\/","title":{"rendered":"Validar Certificado"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3532\" class=\"elementor elementor-3532\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba20f89 e-flex e-con-boxed e-con e-parent\" data-id=\"ba20f89\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7d6736 elementor-widget elementor-widget-shortcode\" data-id=\"a7d6736\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <div class=\"form-container\">\r\n            <div class=\"logo-validacao\">\r\n                <img decoding=\"async\" src=\"https:\/\/secop.org.br\/2025\/wp-content\/plugins\/certificado-eventos\/assets\/certificados\/logo.png\" alt=\"Logo SECOP 2024\" class=\"logo-certificado\">\r\n            <\/div>\r\n            <h2>VALIDAR CERTIFICADO<\/h2>\r\n            <form id=\"validadorForm\">\r\n                <input type=\"text\" id=\"hash\" name=\"hash\" placeholder=\"Insira um ID de Valida\u00e7\u00e3o\" required>\r\n                <button type=\"submit\">Validar<\/button>\r\n            <\/form>\r\n            <div id=\"result\" class=\"validador-result\"><\/div>\r\n        <\/div>\r\n        <hr>\r\n        <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.4.0\/jspdf.umd.min.js\"><\/script>\r\n        <script>\r\n            \/\/ Fun\u00e7\u00e3o para obter par\u00e2metros da URL\r\n            function getUrlParameter(name) {\r\n                name = name.replace(\/[\\[]\/, '\\\\[').replace(\/[\\]]\/, '\\\\]');\r\n                var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)'),\r\n                    results = regex.exec(location.search);\r\n                return results === null ? '' : decodeURIComponent(results[1].replace(\/\\+\/g, ' '));\r\n            }\r\n\r\n            document.addEventListener('DOMContentLoaded', function() {\r\n                const hashValue = getUrlParameter('hash');\r\n                if (hashValue) {\r\n                    document.getElementById('hash').value = hashValue;\r\n                }\r\n            });\r\n\r\n            document.getElementById('validadorForm').addEventListener('submit', function(e) {\r\n                e.preventDefault();\r\n                const hash = document.getElementById('hash').value.trim();\r\n                fetch('https:\/\/secop.org.br\/2025\/wp-admin\/admin-ajax.php?action=validar_certificado&hash=' + encodeURIComponent(hash))\r\n                    .then(response => response.json())\r\n                    .then(data => {\r\n                        const resultDiv = document.getElementById('result');\r\n                        if (data.success) {\r\n                            const { name, email, hash_validacao, data_hora } = data.data;\r\n                            resultDiv.innerHTML = `\r\n                                <h3>CERTIFICADO AUT\u00caNTICO<\/h3>\r\n                                <div class=\"result-container\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/img.icons8.com\/material-outlined\/160\/ffd700\/certificate.png\" alt=\"Certificado Icon\" class=\"icon\">\r\n                                    <div class=\"data-container\">\r\n                                        <div class=\"data-item\">\r\n                                            <div class=\"data-label\">Nome:<\/div>\r\n                                            <div class=\"data-value\">${name}<\/div>\r\n                                        <\/div>\r\n                                        <div class=\"data-item\">\r\n                                            <div class=\"data-label\">Email:<\/div>\r\n                                            <div class=\"data-value\">${email}<\/div>\r\n                                        <\/div>\r\n                                        <div class=\"data-item\">\r\n                                            <div class=\"data-label\">ID:<\/div>\r\n                                            <div class=\"data-value\">${hash_validacao}<\/div>\r\n                                        <\/div>\r\n                                        <div class=\"data-item\">\r\n                                            <div class=\"data-label\">Emitido em:<\/div>\r\n                                            <div class=\"data-value\">${data_hora}<\/div>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <button id=\"emitirCertificado\" style=\"margin-top: 20px; padding: 10px; font-size: 18px; color: #fff; background-color: #0073e6; border: none; border-radius: 4px; cursor: pointer;\">Baixar Certificado<\/button>\r\n                            `;\r\n                            document.getElementById('emitirCertificado').addEventListener('click', function() {\r\n                                emitirCertificado(name, hash_validacao);\r\n                            });\r\n                        } else {\r\n                            resultDiv.innerHTML = '<p>Certificado n\u00e3o encontrado.<\/p>';\r\n                        }\r\n                    })\r\n                    .catch(error => {\r\n                        console.error('Erro:', error);\r\n                        document.getElementById('result').innerHTML = '<p>Erro ao validar o certificado.<\/p>';\r\n                    });\r\n            });\r\n\r\n            \/\/ Fun\u00e7\u00e3o para emitir certificado\r\n            function emitirCertificado(name, hash_validacao) {\r\n                const { jsPDF } = window.jspdf;\r\n\r\n                const pdf = new jsPDF({\r\n                    orientation: \"landscape\",\r\n                    unit: \"px\",\r\n                    format: [1095, 793]\r\n                });\r\n\r\n                const img = new Image();\r\n                img.src = 'https:\/\/secop.org.br\/2025\/wp-content\/plugins\/certificado-eventos\/assets\/certificados\/template.png';\r\n\r\n                img.onload = function() {\r\n                    pdf.addImage(img, 'PNG', 0, 0, 1095, 793);\r\n\r\n                    pdf.setFont(\"Times\", \"normal\");\r\n                    pdf.setFontSize(24);\r\n                    pdf.text(\"CERTIFICAMOS QUE\", 547, 280, { align: \"center\" });\r\n\r\n                    pdf.setFont(\"Times\", \"bold\");\r\n                    pdf.setFontSize(32);\r\n                    pdf.text(name.toUpperCase(), 547, 320, { align: \"center\" });\r\n\r\n                    pdf.setFont(\"Times\", \"normal\");\r\n                    pdf.setFontSize(24);\r\n                    pdf.text(\"PARTICIPOU DO 52\u00ba SEMIN\u00c1RIO NACIONAL DE TIC PARA GEST\u00c3O P\u00daBLICA,\", 547, 360, { align: \"center\" });\r\n                    pdf.text(\"REALIZADO EM BRAS\u00cdLIA\/DF, NOS DIAS 06 E 07 DE AGOSTO DE 2025, NA QUALIDADE DE\", 547, 400, { align: \"center\" });\r\n\r\n                    pdf.setFont(\"Times\", \"bold\");\r\n                    pdf.text(\"CONGRESSISTA.\", 547, 440, { align: \"center\" });\r\n\r\n                    pdf.setFont(\"Times\", \"normal\");\r\n                    pdf.setFontSize(24);\r\n                    pdf.text(\"CARGA HOR\u00c1RIA: 16 HORAS\", 547, 480, { align: \"center\" });\r\n\r\n                    pdf.setFontSize(12);\r\n                    pdf.setTextColor(100);\r\n\r\n                    const hash = hash_validacao.toUpperCase();\r\n                    const linkSite = 'https:\/\/secop.org.br\/2025\/validar_certificado\/';\r\n                    const url = `${linkSite}\/?hash=${hash}`;\r\n\r\n                    \/\/ Adiciona o texto no PDF\r\n                    const textX = 1040; \/\/ Posi\u00e7\u00e3o X\r\n                    const textY = 780;  \/\/ Posi\u00e7\u00e3o Y\r\n\r\n                    pdf.text(`Para validar, acesse secop.org.br ou clique no ID de verifica\u00e7\u00e3o. Seu c\u00f3digo \u00e9: ${hash}`, textX, textY, { align: \"right\" });\r\n\r\n                    const textWidth = pdf.getTextWidth(`Para validar, clique no ID de Verifica\u00e7\u00e3o: seu c\u00f3digo \u00e9 ${hash}`);\r\n\r\n                    \/\/ Adiciona o link com a largura correta\r\n                    pdf.link(textX - 250, textY - 10, textWidth, 50, { url: url }); \/\/ Ajuste a posi\u00e7\u00e3o Y se necess\u00e1rio\r\n\r\n                    \/\/ Salva o PDF localmente\r\n                    const fileName = `${hash}_certificado.pdf`;\r\n                    pdf.save(fileName); \/\/ Salvar o PDF\r\n\r\n                }; \/\/ Fechando a fun\u00e7\u00e3o img.onload\r\n            }\r\n\r\n        <\/script>\r\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":34,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-3532","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/pages\/3532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/comments?post=3532"}],"version-history":[{"count":7,"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/pages\/3532\/revisions"}],"predecessor-version":[{"id":3539,"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/pages\/3532\/revisions\/3539"}],"wp:attachment":[{"href":"https:\/\/secop.org.br\/2025\/wp-json\/wp\/v2\/media?parent=3532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}