Skip to content

Commit

Permalink
feat: editar pergunta
Browse files Browse the repository at this point in the history
  • Loading branch information
rrafaelc committed Nov 17, 2023
1 parent d75eab5 commit 851c242
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 17 deletions.
22 changes: 22 additions & 0 deletions scripts/perguntas/buscarPergunta.js
Original file line number Diff line number Diff line change
@@ -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);
}
};
34 changes: 34 additions & 0 deletions scripts/perguntas/editarPergunta.js
Original file line number Diff line number Diff line change
@@ -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);
}
};
7 changes: 4 additions & 3 deletions sistema/perguntas/editar/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
<link rel="icon" type="image/png" sizes="32x32" href="../../../img/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../../../img/favicon/favicon-16x16.png" />
<link rel="manifest" href="../../../img/favicon/site.webmanifest" />
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script defer type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>

<script type="module" src="script.js" defer></script>
<title>Sistema FAQ | Editar Perguntas</title>
Expand Down Expand Up @@ -58,10 +60,9 @@
</div>
<form>
<label for="titulo">Título</label>
<input type="text" name="titulo" id="titulo" placeholder="Escreva o título da pergunta" value="Qual é a duração dos cursos na Fatec?" required />
<input type="text" name="titulo" id="titulo" placeholder="Escreva o título da pergunta" required />
<label for="resposta">Resposta</label>
<textarea name="resposta" id="resposta" placeholder="Escreva a resposta da pergunta" required>
Os cursos da Fatec tem duração de no mínimo 3 anos e no máximo 5 anos.</textarea>
<textarea name="resposta" id="resposta" placeholder="Escreva a resposta da pergunta" required></textarea>
<div>
<div class="prioridade">
<label for="prioridade">Defina o nível de prioridade</label>
Expand Down
67 changes: 53 additions & 14 deletions sistema/perguntas/editar/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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;
}

Expand All @@ -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');
Expand All @@ -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`;
}
};
Expand Down

0 comments on commit 851c242

Please sign in to comment.