diff --git a/scripts/perguntas/buscarPergunta.js b/scripts/perguntas/buscarPergunta.js new file mode 100644 index 0000000..a3738bf --- /dev/null +++ b/scripts/perguntas/buscarPergunta.js @@ -0,0 +1,22 @@ +import { apiUrl } from '../constants/apiUrl.js'; + +export const buscarPergunta = async ({ id }) => { + try { + const response = await fetch(`${apiUrl}/pergunta/${id}`, { + method: 'GET', + }); + + if (!response.ok) { + const err = await response.json(); + console.log(err); + throw new Error(err.errors[0]); + } + + const pergunta = await response.json(); + + return pergunta; + } catch (error) { + console.log(error); + throw new Error(error.message); + } +}; diff --git a/scripts/perguntas/editarPergunta.js b/scripts/perguntas/editarPergunta.js new file mode 100644 index 0000000..3b7997c --- /dev/null +++ b/scripts/perguntas/editarPergunta.js @@ -0,0 +1,34 @@ +import { apiUrl } from '../constants/apiUrl.js'; +import { getAuthorization } from '../utils/getAuthorization.js'; + +export const editarPergunta = async ({ id, pergunta, resposta, prioridade }) => { + try { + const response = await fetch(`${apiUrl}/pergunta/${id}`, { + method: 'PATCH', + body: JSON.stringify({ + pergunta, + resposta, + prioridade, + }), + headers: { + 'Content-Type': 'application/json', + Authorization: await getAuthorization(), + }, + }); + + if (response.status === 403) { + const err = await response.json(); + console.log(err); + throw new Error(err.errors[0]); + } + + if (!response.ok) { + const err = await response.json(); + console.log(err); + throw new Error(err.errors[0]); + } + } catch (error) { + console.log(error); + throw new Error(error.message); + } +}; diff --git a/sistema/perguntas/editar/index.php b/sistema/perguntas/editar/index.php index 32ab1c0..89fd0fd 100644 --- a/sistema/perguntas/editar/index.php +++ b/sistema/perguntas/editar/index.php @@ -13,6 +13,8 @@ + + Sistema FAQ | Editar Perguntas @@ -58,10 +60,9 @@
- + - +
diff --git a/sistema/perguntas/editar/script.js b/sistema/perguntas/editar/script.js index b78e7de..5ca6672 100644 --- a/sistema/perguntas/editar/script.js +++ b/sistema/perguntas/editar/script.js @@ -3,8 +3,11 @@ import { deslogar } from '../../../scripts/auth/deslogar.js'; import { serverUrl } from '../../../scripts/constants/serverUrl.js'; import { isLoggedIn } from '../../../scripts/middlewares/isLoggedIn.js'; +import { buscarPergunta } from '../../../scripts/perguntas/buscarPergunta.js'; +import { editarPergunta } from '../../../scripts/perguntas/editarPergunta.js'; import { getLoggedUseInfo } from '../../../scripts/user/getLoggedUserInfo.js'; import { fillHeaderUserData } from '../../../scripts/utils/fillHeaderUserData.js'; +import { toast } from '../../../scripts/utils/toast.js'; // Header const usuario = document.querySelector('.usuario'); @@ -45,25 +48,38 @@ botaoPrioridade.addEventListener('click', function () { botaoPrioridade.classList.add('normal'); botaoPrioridade.value = 'Normal'; } else { - console.log('Erro ao mudar prioridade'); + toast('Erro ao mudar prioridade', true); } }); const form = document.querySelector('form'); +const url = new URL(window.location.href); -form.addEventListener('submit', function (event) { +const id = url.searchParams.get('id'); + +if (!id) { + window.location.href = `${serverUrl}/sistema`; +} + +form.addEventListener('submit', async function (event) { event.preventDefault(); const button = form.querySelector('button[type="submit"]'); const botaoVoltar = form.querySelector('button#voltar'); - const titulo = form.querySelector('#titulo'); - const resposta = form.querySelector('#resposta'); + const titulo = form.querySelector('#titulo').value.trim(); + const resposta = form.querySelector('#resposta').value.trim(); + const prioridade = botaoPrioridade.value; + + if (prioridade !== 'Alta' && prioridade !== 'Normal') { + toast('Prioridade deve ser Alta ou Normal', true); + return; + } - if (titulo.value === '') { - titulo.focus(); + if (!titulo) { + toast('Título não pode estar vazio', true); return; - } else if (resposta.value === '') { - resposta.focus(); + } else if (!resposta) { + toast('Resposta não pode estar vazio', true); return; } @@ -74,9 +90,25 @@ form.addEventListener('submit', function (event) { botaoVoltar.disabled = true; botaoVoltar.classList.add('disabled'); - setTimeout(function () { - window.location.href = '../../../sistema/perguntas/'; - }, 2000); + try { + await editarPergunta({ + id, + pergunta: titulo, + resposta, + prioridade, + }); + + window.location.href = `${serverUrl}/sistema`; + } catch (error) { + toast(error.message, true); + } finally { + button.innerText = 'Editar'; + + button.disabled = false; + button.classList.remove('disabled'); + botaoVoltar.disabled = false; + botaoVoltar.classList.remove('disabled'); + } }); const spinner = document.querySelector('.spinnerFull'); @@ -94,11 +126,18 @@ const execute = async () => { const user = await getLoggedUseInfo(); fillHeaderUserData(user); - const url = new URL(window.location.href); + try { + const titulo = document.querySelector('#titulo'); + const resposta = document.querySelector('#resposta'); + const prioridade = document.querySelector('#prioridade'); - const id = url.searchParams.get('id'); + const pergunta = await buscarPergunta({ id }); - if (!id) { + titulo.value = pergunta.pergunta; + resposta.value = pergunta.resposta; + prioridade.value = pergunta.prioridade; + prioridade.className = pergunta.prioridade.toLowerCase(); + } catch { window.location.href = `${serverUrl}/sistema`; } };