{"id":100192,"date":"2025-09-26T10:00:35","date_gmt":"2025-09-26T13:00:35","guid":{"rendered":"https:\/\/pontoteste.com.br\/exal\/listen\/"},"modified":"2026-09-30T16:21:10","modified_gmt":"2026-09-30T19:21:10","slug":"listen","status":"publish","type":"page","link":"https:\/\/exal.com.br\/en\/listen\/","title":{"rendered":"Listen+"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:3%;--awb-padding-right:30px;--awb-padding-bottom:3%;--awb-padding-left:30px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\">\n<div class=\"qualiex-form-container\">\n    <style>\n        \/* CSS para formul\u00e1rio QualiEx *\/\n        .qualiex-form-container {\n            max-width: 800px;\n            margin: 0 auto;\n            padding: 20px;\n            background: #fff;\n            border-radius: 8px;\n            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n        }\n\n        .qualiex-header {\n            text-align: center;\n            margin-bottom: 30px;\n            color: #333;\n            font-size: 24px;\n            font-weight: bold;\n        }\n\n        .qualiex-description {\n            color: #666;\n            margin-bottom: 30px;\n            line-height: 1.6;\n        }\n\n        .form-group {\n            margin-bottom: 20px;\n        }\n\n        .form-row {\n            display: flex;\n            gap: 15px;\n            margin-bottom: 20px;\n        }\n\n        .form-col {\n            flex: 1;\n        }\n\n        .form-group label,\n        .form-col label {\n            display: block;\n            margin-bottom: 8px;\n            font-weight: 500;\n            color: #333;\n            font-size: 14px;\n        }\n\n        .required {\n            color: #e74c3c;\n            font-weight: bold;\n        }\n\n        input[type=\"text\"],\n        input[type=\"email\"],\n        input[type=\"date\"],\n        select,\n        textarea {\n            width: 100%;\n            padding: 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 14px;\n            transition: border-color 0.3s;\n            box-sizing: border-box;\n        }\n\n\t\tselect {\n            padding: 2px;\n        }\n\n        input:focus,\n        select:focus,\n        textarea:focus {\n            outline: none;\n            border-color: #4a90e2;\n        }\n\n        textarea {\n            min-height: 80px;\n            resize: vertical;\n        }\n\n        .description-field {\n            min-height: 120px;\n        }\n\n        .char-count {\n            text-align: right;\n            font-size: 12px;\n            color: #666;\n            margin-top: 5px;\n        }\n\n        \/* Se\u00e7\u00e3o de identifica\u00e7\u00e3o *\/\n        .identification-section {\n            background-color: #f8f9fa;\n            border: 1px solid #e9ecef;\n            border-radius: 6px;\n            padding: 20px;\n            margin: 15px 0;\n        }\n\n        .radio-group {\n            display: flex;\n            gap: 20px;\n            margin-top: 10px;\n        }\n\n        .radio-option {\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            font-size: 14px;\n            color: #333;\n            cursor: pointer;\n        }\n\n        .radio-option input[type=\"radio\"] {\n            width: auto;\n            margin: 0;\n            cursor: pointer;\n        }\n\n        .identification-fields {\n            margin-top: 20px;\n            padding-top: 20px;\n            border-top: 1px solid #dee2e6;\n            display: none;\n        }\n\n        \/* Upload de arquivos *\/\n        .file-upload-container {\n            margin-top: 10px;\n        }\n\n        .file-upload-area {\n            border: 2px dashed #ddd;\n            border-radius: 8px;\n            padding: 40px 20px;\n            text-align: center;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            background: #fafafa;\n            width: 100%;\n        }\n\n        .file-upload-area:hover {\n            border-color: #4a90e2;\n            background: #f0f7ff;\n        }\n\n        .file-upload-icon {\n            font-size: 2em;\n            margin-bottom: 10px;\n        }\n\n        .file-upload-text {\n            color: #666;\n            line-height: 1.4;\n        }\n\n        .file-list {\n            margin-top: 15px;\n        }\n\n        .file-item {\n            display: flex;\n            align-items: center;\n            padding: 10px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            margin-bottom: 10px;\n            background: #fff;\n        }\n\n        .file-item-icon {\n            margin-right: 10px;\n            font-size: 1.2em;\n        }\n\n        .file-item-info {\n            flex: 1;\n        }\n\n        .file-item-name {\n            font-weight: 500;\n            color: #333;\n        }\n\n        .file-item-size {\n            font-size: 12px;\n            color: #666;\n        }\n\n        .file-item-remove {\n            background: #e74c3c;\n            color: white;\n            border: none;\n            border-radius: 50%;\n            width: 24px;\n            height: 24px;\n            cursor: pointer;\n            font-size: 12px;\n        }\n\n        .file-item-remove:hover {\n            background: #c0392b;\n        }\n\n        .file-error {\n            color: #e74c3c;\n            font-size: 12px;\n            margin-top: 5px;\n            padding: 5px;\n            background: #fdf2f2;\n            border: 1px solid #f5c6cb;\n            border-radius: 4px;\n        }\n\n        \/* Bot\u00f5es *\/\n        .submit-btn {\n            background: #27ae60;\n            color: white;\n            border: none;\n            padding: 15px 30px;\n            border-radius: 5px;\n            font-size: 16px;\n            font-weight: bold;\n            cursor: pointer;\n            transition: background 0.3s;\n            margin-right: 15px;\n        }\n\n        .submit-btn:hover {\n            background: #219a52;\n        }\n\n        .submit-btn:disabled {\n            background: #95a5a6;\n            cursor: not-allowed;\n        }\n\n        .return-btn {\n            color: #666;\n            text-decoration: none;\n            font-size: 14px;\n            padding: 10px 20px;\n            border: 1px solid #ddd;\n            border-radius: 5px;\n            display: inline-block;\n            transition: all 0.3s;\n        }\n\n        .return-btn:hover {\n            background: #f8f9fa;\n            color: #333;\n        }\n\n        \/* Responsividade *\/\n        @media (max-width: 768px) {\n            .form-row {\n                flex-direction: column;\n                gap: 0;\n            }\n\n            .radio-group {\n                flex-direction: column;\n                gap: 10px;\n            }\n\n            .qualiex-form-container {\n                margin: 10px;\n                padding: 15px;\n            }\n        }\n    <\/style>\n\n    <div class=\"qualiex-description\">\n        <p>As informa\u00e7\u00f5es ser\u00e3o avaliadas pela nossa equipe respons\u00e1vel e servir\u00e3o para melhorar a qualidade dos processos, servi\u00e7os e atendimentos.<\/p>\n    <\/div>\n\n    <form id=\"qualiex-occurrence-form\" enctype=\"multipart\/form-data\">\n        <input type=\"hidden\" id=\"qualiex_nonce\" name=\"qualiex_nonce\" value=\"2f4615f206\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/100192\" \/>\n        <!-- T\u00edtulo -->\n        <div class=\"form-group\">\n            <label for=\"title\">T\u00edtulo <span class=\"required\">*<\/span><\/label>\n            <input type=\"text\" id=\"title\" name=\"title\" maxlength=\"200\" required>\n            <div class=\"char-count\">0 \/ 200<\/div>\n        <\/div>\n\n        <!-- Descri\u00e7\u00e3o -->\n        <div class=\"form-group\">\n            <label for=\"description\">Descri\u00e7\u00e3o <span class=\"required\">*<\/span><\/label>\n            <textarea id=\"description\" name=\"description\" class=\"description-field\" placeholder=\"Descreva a ocorr\u00eancia...\" maxlength=\"4000\" required><\/textarea>\n            <div class=\"char-count\">0 \/ 4000<\/div>\n        <\/div>\n\n        <!-- Se\u00e7\u00e3o de Identifica\u00e7\u00e3o -->\n        <div class=\"identification-section\">\n            <div><strong>Deseja se identificar?<\/strong><\/div>\n            <div class=\"radio-group\">\n                <label class=\"radio-option\">\n                    <input type=\"radio\" name=\"identify\" value=\"no\" checked>\n                    <span>N\u00e3o<\/span>\n                <\/label>\n                <label class=\"radio-option\">\n                    <input type=\"radio\" name=\"identify\" value=\"yes\">\n                    <span>Sim<\/span>\n                <\/label>\n            <\/div>\n\n            <div class=\"identification-fields\" id=\"identification-fields\">\n                <div class=\"form-row\">\n                    <div class=\"form-col\">\n                        <label for=\"full-name\">Nome Completo <span class=\"required\">*<\/span><\/label>\n                        <input type=\"text\" id=\"full-name\" name=\"full-name\" maxlength=\"100\">\n                        <div class=\"char-count\">0 \/ 100<\/div>\n                    <\/div>\n                    <div class=\"form-col\">\n                        <label for=\"email\">E-mail <span class=\"required\">*<\/span><\/label>\n                        <input type=\"email\" id=\"email\" name=\"email\" maxlength=\"100\">\n                        <div class=\"char-count\">0 \/ 100<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"form-row\">\n                    <div class=\"form-col\">\n                        <label for=\"registration-cpf\">Matr\u00edcula ou CPF<\/label>\n                        <input type=\"text\" id=\"registration-cpf\" name=\"registration-cpf\" maxlength=\"50\">\n                        <div class=\"char-count\">0 \/ 50<\/div>\n                    <\/div>\n                    <div class=\"form-col\">\n                        <!-- Espa\u00e7o vazio para manter layout -->\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Faixa Et\u00e1ria e G\u00eanero -->\n        <div class=\"form-row\">\n            <div class=\"form-col\">\n                <label for=\"age-range\">Faixa Et\u00e1ria <span class=\"required\">*<\/span><\/label>\n                <select id=\"age-range\" name=\"age-range\" required>\n                    <option value=\"\">Selecione uma Faixa Et\u00e1ria<\/option>\n                    <option value=\"ZBCeuT5O\">At\u00e9 18 anos<\/option>\n                    <option value=\"blVZFyKp\">19 a 29 anos<\/option>\n                    <option value=\"ms3qH9lh\">30 a 39 anos<\/option>\n                    <option value=\"cUup1WAc\">40 a 49 anos<\/option>\n                    <option value=\"9TTzkJ8i\">50 a 59 anos<\/option>\n                    <option value=\"0V6MSzK2\">60 a 69 anos<\/option>\n                    <option value=\"pnJtQAo6\">70 a 79 anos<\/option>\n                    <option value=\"dqgPTN5m\">80 anos ou mais<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"form-col\">\n                <label for=\"gender\">G\u00eanero <span class=\"required\">*<\/span><\/label>\n                <select id=\"gender\" name=\"gender\" required>\n                    <option value=\"\">Selecione um G\u00eanero<\/option>\n                    <option value=\"9e4ftKPk\">Feminino<\/option>\n                    <option value=\"bQGT6TpN\">Masculino<\/option>\n                    <option value=\"FwWKshPE\">N\u00e3o se identificar<\/option>\n                    <option value=\"w2sZttu6\">Outros<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <!-- Tipo de P\u00fablico e Local do Evento -->\n        <div class=\"form-row\">\n            <div class=\"form-col\">\n                <label for=\"audience-type\">Tipo de p\u00fablico <span class=\"required\">*<\/span><\/label>\n                <select id=\"audience-type\" name=\"audience-type\" required>\n                    <option value=\"\">Selecione um Tipo de P\u00fablico<\/option>\n                    <option value=\"sk9usmCy\">Cliente<\/option>\n                    <option value=\"6wQsXS57\">Colaborador<\/option>\n                    <option value=\"fmkxxcOy\">Ex-colaborador<\/option>\n                    <option value=\"I1rAKwed\">Fornecedor<\/option>\n                    <option value=\"iCCA6D7t\">Comunidade<\/option>\n                    <option value=\"KgECpsXs\">Outros<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"form-col\">\n                <label for=\"event-location\">Onde ocorreu o evento? <span class=\"required\">*<\/span><\/label>\n                <select id=\"event-location\" name=\"event-location\" required>\n                    <option value=\"\">Selecione um Local<\/option>\n                    <option value=\"vli5aPiF\">Sede Administrativa<\/option>\n                    <option value=\"XXxTy3cJ\">Unidade<\/option>\n                    <option value=\"oUOBg2S5\">Outro lugar<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <!-- Descri\u00e7\u00e3o da Unidade -->\n        <div class=\"form-group\">\n            <label for=\"unity-event-description\">Se ocorreu em uma unidade da Exal, qual foi?<\/label>\n            <textarea id=\"unity-event-description\" name=\"unity-event-description\" class=\"description-field\" placeholder=\"Descri\u00e7\u00e3o\" maxlength=\"8000\"><\/textarea>\n            <div class=\"char-count\">0 \/ 8000<\/div>\n        <\/div>\n\t\t\n        <!-- Tipo de Relato e Data -->\n        <div class=\"form-row\">\n            <div class=\"form-col\">\n                <label for=\"report-type\">Tipo de Relato <span class=\"required\">*<\/span><\/label>\n                <select id=\"report-type\" name=\"report-type\" required>\n                    <option value=\"\">Selecione um Tipo de Relato<\/option>\n                    <option value=\"Ntcwi22I\">Abuso de poder \/ viol\u00eancia \/ amea\u00e7a<\/option>\n                    <option value=\"TIz7C61Q\">Ass\u00e9dio sexual<\/option>\n                    <option value=\"OIKxGI0F\">Ass\u00e9dio moral<\/option>\n                    <option value=\"5CTSWQOw\">Comportamento inadequado<\/option>\n                    <option value=\"Zh7TbXUo\">Conflito de interesses<\/option>\n                    <option value=\"xAhxdTMD\">Discrimina\u00e7\u00e3o<\/option>\n                    <option value=\"HJUNl69Z\">Elogio<\/option>\n                    <option value=\"S7ZtIEFF\">Favorecimento de fornecedores ou clientes<\/option>\n                    <option value=\"61ThvXJc\">N\u00e3o cumprimento de pol\u00edticas e c\u00f3digos de \u00e9tica<\/option>\n                    <option value=\"oCfA7e0U\">Sugest\u00f5es<\/option>\n                    <option value=\"GGKTxd36\">Viola\u00e7\u00e3o \u00e0 LGPD (Lei Geral de Prote\u00e7\u00e3o de Dados Pessoais)<\/option>\n                    <option value=\"JG9KxyGD\">Viola\u00e7\u00e3o de leis trabalhistas<\/option>\n                    <option value=\"uTLBqiDy\">Viola\u00e7\u00e3o de leis ambientais<\/option>\n                    <option value=\"WTaCBVZB\">Outros.<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"form-col\">\n                <label for=\"report-date\">Data de Relato <span class=\"required\">*<\/span><\/label>\n                <input type=\"date\" id=\"report-date\" name=\"report-date\" required>\n            <\/div>\n        <\/div>\n\n\n        <!-- Campo adicional de descri\u00e7\u00e3o -->\n        <div class=\"form-group\">\n            <label for=\"event-description\">A situa\u00e7\u00e3o relatada acontece ou aconteceu mais de uma vez? Se \u00e9 algo que se repete, conte-nos h\u00e1 quanto tempo vem ocorrendo.<\/label>\n            <textarea id=\"event-description\" name=\"event-description\" class=\"description-field\" placeholder=\"Descreva-a\" maxlength=\"8000\"><\/textarea>\n            <div class=\"char-count\">0 \/ 8000<\/div>\n        <\/div>\n\n        <!-- Sugest\u00e3o de solu\u00e7\u00e3o -->\n        <div class=\"form-group\">\n            <label for=\"problem-description\">Se tiver alguma sugest\u00e3o ou elogio, descreva-a:<\/label>\n            <textarea id=\"problem-description\" name=\"problem-description\" class=\"description-field\" placeholder=\"Descreva-a\" maxlength=\"8000\"><\/textarea>\n            <div class=\"char-count\">0 \/ 8000<\/div>\n        <\/div>\n\n        <!-- Evid\u00eancias relacionadas -->\n        <div class=\"form-group\">\n            <label for=\"related-description\">Caso queira enviar alguma evid\u00eancia associado ao seu relato, utilize o campo \"anexos\" que se encontra abaixo.<\/label>\n            <textarea id=\"related-description\" name=\"related-description\" class=\"description-field\" placeholder=\"Descreva-a\" maxlength=\"8000\"><\/textarea>\n            <div class=\"char-count\">0 \/ 8000<\/div>\n        <\/div>\n\n        <!-- Upload de Arquivos -->\n        <div class=\"form-group\">\n            <label for=\"attachments\">Anexos<\/label>\n            <div class=\"file-upload-container\">\n                <input type=\"file\" id=\"attachments\" name=\"attachments[]\" multiple\n                    accept=\".pdf,.doc,.docx,.jpg,.jpeg,.png,.gif,.txt,.xlsx,.xls\"\n                    style=\"display: none\">\n                <button type=\"button\" class=\"file-upload-area\" onclick=\"document.getElementById('attachments').click()\" onkeypress=\"handleFileAreaKeyPress(event)\">\n                    <div class=\"file-upload-icon\">\ud83d\udcce<\/div>\n                    <div class=\"file-upload-text\">\n                        <strong>Clique para anexar documentos<\/strong><br>\n                        <small>Formatos aceitos: PDF, DOC, DOCX, JPG, PNG, GIF, TXT, XLS, XLSX<\/small><br>\n                        <small>Tamanho m\u00e1ximo: 5MB por arquivo<\/small>\n                    <\/div>\n                <\/button>\n                <div id=\"file-list\" class=\"file-list\"><\/div>\n            <\/div>\n        <\/div>\n\n        <br><br>\n\n        <!-- Bot\u00f5es -->\n        <button type=\"submit\" class=\"submit-btn\">\u2713 REGISTRAR OCORR\u00caNCIA<\/button>\n    <\/form>\n<\/div>\n\n<script>\n    document.addEventListener('DOMContentLoaded', function() {\n        let uploadedFiles = [];\n\n        \/\/ Character counters\n        const charCountFields = [{\n                id: 'title',\n                max: 200\n            },\n            {\n                id: 'description',\n                max: 4000\n            },\n            {\n                id: 'full-name',\n                max: 100\n            },\n            {\n                id: 'email',\n                max: 100\n            },\n            {\n                id: 'registration-cpf',\n                max: 50\n            },\n            {\n                id: 'unity-event-description',\n                max: 8000\n            },\n            {\n                id: 'event-description',\n                max: 8000\n            },\n            {\n                id: 'problem-description',\n                max: 8000\n            },\n            {\n                id: 'related-description',\n                max: 8000\n            }\n        ];\n\n        charCountFields.forEach(field => {\n            const element = document.getElementById(field.id);\n            const counter = element?.nextElementSibling;\n\n            if (element && counter && counter.classList.contains('char-count')) {\n                element.addEventListener('input', function() {\n                    const count = this.value.length;\n                    counter.textContent = `${count} \/ ${field.max}`;\n                });\n            }\n        });\n\n        \/\/ Show\/Hide identification fields\n        const identifyRadios = document.querySelectorAll('input[name=\"identify\"]');\n        const identificationFields = document.getElementById('identification-fields');\n\n        identifyRadios.forEach(radio => {\n            radio.addEventListener('change', function() {\n                if (this.value === 'yes') {\n                    identificationFields.style.display = 'block';\n                } else {\n                    identificationFields.style.display = 'none';\n                }\n            });\n        });\n\n        \/\/ File upload handling\n        const fileInput = document.getElementById('attachments');\n        const fileUploadArea = document.querySelector('.file-upload-area');\n        const fileList = document.getElementById('file-list');\n\n        \/\/ Handle keyboard for file upload area\n        window.handleFileAreaKeyPress = function(event) {\n            if (event.key === 'Enter' || event.key === ' ') {\n                event.preventDefault();\n                document.getElementById('attachments').click();\n            }\n        };\n\n        fileInput.addEventListener('change', function(e) {\n            handleFiles(e.target.files);\n        });\n\n        \/\/ Drag and drop\n        fileUploadArea.addEventListener('dragover', function(e) {\n            e.preventDefault();\n            this.style.borderColor = '#4a90e2';\n            this.style.background = '#f0f7ff';\n        });\n\n        fileUploadArea.addEventListener('dragleave', function(e) {\n            e.preventDefault();\n            this.style.borderColor = '#ddd';\n            this.style.background = '#fafafa';\n        });\n\n        fileUploadArea.addEventListener('drop', function(e) {\n            e.preventDefault();\n            this.style.borderColor = '#ddd';\n            this.style.background = '#fafafa';\n            handleFiles(e.dataTransfer.files);\n        });\n\n        function handleFiles(files) {\n            Array.from(files).forEach(file => {\n                if (validateFile(file)) {\n                    uploadedFiles.push(file);\n                    displayFile(file);\n                }\n            });\n            updateFileUploadText();\n        }\n\n        function validateFile(file) {\n            const maxSize = 5 * 1024 * 1024; \/\/ 5MB\n            const allowedTypes = [\n                'application\/pdf',\n                'application\/msword',\n                'application\/vnd.openxmlformats-officedocument.wordprocessingml.document',\n                'image\/jpeg',\n                'image\/jpg',\n                'image\/png',\n                'image\/gif',\n                'text\/plain',\n                'application\/vnd.ms-excel',\n                'application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n            ];\n\n            if (file.size > maxSize) {\n                showFileError(`Arquivo \"${file.name}\" \u00e9 muito grande. Tamanho m\u00e1ximo: 5MB`);\n                return false;\n            }\n\n            if (!allowedTypes.includes(file.type)) {\n                showFileError(`Tipo de arquivo n\u00e3o permitido: \"${file.name}\"`);\n                return false;\n            }\n\n            \/\/ Check if file already exists\n            if (uploadedFiles.some(f => f.name === file.name && f.size === file.size)) {\n                showFileError(`Arquivo \"${file.name}\" j\u00e1 foi adicionado`);\n                return false;\n            }\n\n            return true;\n        }\n\n        function displayFile(file) {\n            const fileItem = document.createElement('div');\n            fileItem.className = 'file-item';\n            fileItem.innerHTML = `\n            <div class=\"file-item-icon\">${getFileIcon(file.type)}<\/div>\n            <div class=\"file-item-info\">\n                <div class=\"file-item-name\">${file.name}<\/div>\n                <div class=\"file-item-size\">${formatFileSize(file.size)}<\/div>\n            <\/div>\n            <button type=\"button\" class=\"file-item-remove\" onclick=\"removeFile(this, '${file.name}')\">\u00d7<\/button>\n        `;\n            fileList.appendChild(fileItem);\n        }\n\n        window.removeFile = function(button, fileName) {\n            uploadedFiles = uploadedFiles.filter(file => file.name !== fileName);\n            button.closest('.file-item').remove();\n            updateFileUploadText();\n        };\n\n        function updateFileUploadText() {\n            const uploadText = fileUploadArea.querySelector('.file-upload-text');\n            if (uploadedFiles.length > 0) {\n                uploadText.innerHTML = `\n                <strong>${uploadedFiles.length} arquivo(s) selecionado(s)<\/strong><br>\n                <small>Clique para adicionar mais arquivos ou arraste e solte<\/small>\n            `;\n            } else {\n                uploadText.innerHTML = `\n                <strong>Clique para anexar documentos<\/strong><br>\n                <small>Formatos aceitos: PDF, DOC, DOCX, JPG, PNG, GIF, TXT, XLS, XLSX<\/small><br>\n                <small>Tamanho m\u00e1ximo: 5MB por arquivo<\/small>\n            `;\n            }\n        }\n\n        function getFileIcon(mimeType) {\n            switch (true) {\n                case mimeType.includes('pdf'):\n                    return '\ud83d\udcc4';\n                case mimeType.includes('word'):\n                case mimeType.includes('document'):\n                    return '\ud83d\udcdd';\n                case mimeType.includes('image'):\n                    return '\ud83d\uddbc\ufe0f';\n                case mimeType.includes('excel'):\n                case mimeType.includes('spreadsheet'):\n                    return '\ud83d\udcca';\n                case mimeType.includes('text'):\n                    return '\ud83d\udcc4';\n                default:\n                    return '\ud83d\udcce';\n            }\n        }\n\n        function formatFileSize(bytes) {\n            if (bytes === 0) return '0 Bytes';\n            const k = 1024;\n            const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n            const i = Math.floor(Math.log(bytes) \/ Math.log(k));\n            return parseFloat((bytes \/ Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n        }\n\n        function showFileError(message) {\n            let errorDiv = document.querySelector('.file-error');\n            if (!errorDiv) {\n                errorDiv = document.createElement('div');\n                errorDiv.className = 'file-error';\n                fileList.appendChild(errorDiv);\n            }\n\n            errorDiv.textContent = message;\n\n            setTimeout(() => {\n                if (errorDiv.parentNode) {\n                    errorDiv.remove();\n                }\n            }, 5000);\n        }\n\n        \/\/ Form submission\n        document.getElementById('qualiex-occurrence-form').addEventListener('submit', function(e) {\n            e.preventDefault();\n\n            const submitBtn = this.querySelector('.submit-btn');\n            const formData = new FormData(this);\n\n            \/\/ Add action for WordPress AJAX\n            formData.append('action', 'genial_qualiex_submit_form');\n\n            \/\/ Clear the original file input to avoid duplicates\n            document.getElementById('attachments').value = '';\n            \n            \/\/ Add uploaded files manually\n            uploadedFiles.forEach((file, index) => {\n                formData.append('attachments[]', file);\n            });\n            formData.append('attachmentCount', uploadedFiles.length);\n\n            \/\/ Validation\n            const requiredFields = this.querySelectorAll('[required]');\n            let isValid = true;\n\n            requiredFields.forEach(field => {\n                if (!field.value.trim()) {\n                    field.style.borderColor = '#e74c3c';\n                    isValid = false;\n                } else {\n                    field.style.borderColor = '#ddd';\n                }\n            });\n\n            \/\/ Additional validation for identification fields\n            if (document.querySelector('input[name=\"identify\"]:checked').value === 'yes') {\n                const identificationRequiredFields = [\n                    document.getElementById('full-name'),\n                    document.getElementById('email')\n                ];\n\n                identificationRequiredFields.forEach(field => {\n                    if (!field.value.trim()) {\n                        field.style.borderColor = '#e74c3c';\n                        isValid = false;\n                    } else {\n                        field.style.borderColor = '#ddd';\n                    }\n                });\n\n                \/\/ Email validation\n                const emailField = document.getElementById('email');\n                const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n                if (emailField.value.trim() && !emailRegex.test(emailField.value)) {\n                    emailField.style.borderColor = '#e74c3c';\n                    isValid = false;\n                    alert('Por favor, insira um email v\u00e1lido.');\n                    return;\n                }\n            }\n\n            if (!isValid) {\n                alert('Por favor, preencha todos os campos obrigat\u00f3rios.');\n                return;\n            }\n\n            \/\/ Submit form\n            submitBtn.textContent = '\u23f3 ENVIANDO...';\n            submitBtn.disabled = true;\n\n            jQuery.ajax({\n                url: genial_qualiex_ajax.ajax_url,\n                type: 'POST',\n                data: formData,\n                processData: false,\n                contentType: false,\n                success: function(response) {\n\n                    console.log({\n                        response\n                    })\n\n                    if (response.success) {\n\n                        let message = response.message || 'Formul\u00e1rio enviado com sucesso!';\n\n                        alert('\u2705 ' + message);\n\n                        \/\/ Reset form\n                        document.getElementById('qualiex-occurrence-form').reset();\n\n                        \/\/ Reset character counters\n                        document.querySelectorAll('.char-count').forEach(counter => {\n                            counter.textContent = '0 \/ ' + counter.textContent.split(' \/ ')[1];\n                        });\n\n                        \/\/ Reset identification fields\n                        identificationFields.style.display = 'none';\n\n                        \/\/ Reset uploaded files\n                        uploadedFiles = [];\n                        fileList.innerHTML = '';\n                        updateFileUploadText();\n                    } else {\n\n                        let message = \"\";\n\n                        if (response.errors && Object.keys(response.errors).length > 0) {\n                            \/\/ Junta todas as mensagens de erro em uma string\n                            const errorMessages = Object.values(response.errors).join(\", \");\n                            message = `${response.message} ${errorMessages}`;\n                        } else {\n                            message = \"Erro ao enviar formul\u00e1rio!\";\n                        }\n \n                        alert('\u274c ' + (message));\n                    }\n                },\n                error: function() {\n                    alert('\u274c Erro de conex\u00e3o. Tente novamente.');\n                },\n                complete: function() {\n                    submitBtn.textContent = '\u2713 REGISTRAR OCORR\u00caNCIA';\n                    submitBtn.disabled = false;\n                }\n            });\n        });\n    });\n<\/script><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-100192","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Listen+ - Exal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exal.com.br\/en\/listen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Listen+ - Exal\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exal.com.br\/en\/listen\/\" \/>\n<meta property=\"og:site_name\" content=\"Exal\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/exal.oficial\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-30T19:21:10+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/listen\\\/\",\"url\":\"https:\\\/\\\/exal.com.br\\\/en\\\/listen\\\/\",\"name\":\"Listen+ - Exal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#website\"},\"datePublished\":\"2025-09-26T13:00:35+00:00\",\"dateModified\":\"2026-09-30T19:21:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/listen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/exal.com.br\\\/en\\\/listen\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/listen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/exal.com.br\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Listen+\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/exal.com.br\\\/en\\\/\",\"name\":\"Exal\",\"description\":\"Excel\u00eancia em Alimenta\u00e7\u00e3o e Facilities\",\"publisher\":{\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/exal.com.br\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#organization\",\"name\":\"Exal - Excel\u00eancia em alimenta\u00e7\u00e3o e facilities\",\"url\":\"https:\\\/\\\/exal.com.br\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/exal.com.br\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/exal_logo_gray_300x195px_08_03_23.png?fit=300%2C195&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/exal.com.br\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/exal_logo_gray_300x195px_08_03_23.png?fit=300%2C195&ssl=1\",\"width\":300,\"height\":195,\"caption\":\"Exal - Excel\u00eancia em alimenta\u00e7\u00e3o e facilities\"},\"image\":{\"@id\":\"https:\\\/\\\/exal.com.br\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/exal.oficial\",\"https:\\\/\\\/www.instagram.com\\\/exaloficial\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/exal-oficial\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/ExalRestaurantes\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Listen+ - Exal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exal.com.br\/en\/listen\/","og_locale":"en_US","og_type":"article","og_title":"Listen+ - Exal","og_url":"https:\/\/exal.com.br\/en\/listen\/","og_site_name":"Exal","article_publisher":"https:\/\/www.facebook.com\/exal.oficial","article_modified_time":"2026-09-30T19:21:10+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exal.com.br\/en\/listen\/","url":"https:\/\/exal.com.br\/en\/listen\/","name":"Listen+ - Exal","isPartOf":{"@id":"https:\/\/exal.com.br\/en\/#website"},"datePublished":"2025-09-26T13:00:35+00:00","dateModified":"2026-09-30T19:21:10+00:00","breadcrumb":{"@id":"https:\/\/exal.com.br\/en\/listen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exal.com.br\/en\/listen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/exal.com.br\/en\/listen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/exal.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Listen+"}]},{"@type":"WebSite","@id":"https:\/\/exal.com.br\/en\/#website","url":"https:\/\/exal.com.br\/en\/","name":"Exal","description":"Excel\u00eancia em Alimenta\u00e7\u00e3o e Facilities","publisher":{"@id":"https:\/\/exal.com.br\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exal.com.br\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/exal.com.br\/en\/#organization","name":"Exal - Excel\u00eancia em alimenta\u00e7\u00e3o e facilities","url":"https:\/\/exal.com.br\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exal.com.br\/en\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/exal.com.br\/wp-content\/uploads\/2023\/04\/exal_logo_gray_300x195px_08_03_23.png?fit=300%2C195&ssl=1","contentUrl":"https:\/\/i0.wp.com\/exal.com.br\/wp-content\/uploads\/2023\/04\/exal_logo_gray_300x195px_08_03_23.png?fit=300%2C195&ssl=1","width":300,"height":195,"caption":"Exal - Excel\u00eancia em alimenta\u00e7\u00e3o e facilities"},"image":{"@id":"https:\/\/exal.com.br\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/exal.oficial","https:\/\/www.instagram.com\/exaloficial\/","https:\/\/www.linkedin.com\/company\/exal-oficial\/","https:\/\/www.youtube.com\/user\/ExalRestaurantes"]}]}},"_links":{"self":[{"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/pages\/100192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/comments?post=100192"}],"version-history":[{"count":3,"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/pages\/100192\/revisions"}],"predecessor-version":[{"id":100195,"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/pages\/100192\/revisions\/100195"}],"wp:attachment":[{"href":"https:\/\/exal.com.br\/en\/wp-json\/wp\/v2\/media?parent=100192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}