ÿØÿà JFIF ` ` ÿþ
|
Server : Apache System : Linux cloud.heroica.com.br 4.18.0-553.36.1.el8_10.x86_64 #1 SMP Wed Jan 22 03:07:54 EST 2025 x86_64 User : farolpborg ( 1053) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /var/www/node_services/apicentralquestoes/src/services/ |
Upload File : |
const { Sequelize } = require("sequelize");
const Comentario = require("../models/Comentario");
const Questao = require("../models/Questao");
const User = require("../models/User");
const MENSAGENS_ERRO = require("../utils/mensagensErro");
const { validarEntradaQuestao } = require("../validations/questaoValidations");
const questaoService = {
criarQuestao: async (dados) => {
const erroValidacao = validarEntradaQuestao(dados);
if (erroValidacao) return erroValidacao;
try {
const questao = await Questao.create(dados);
return questao;
} catch (erro) {
return { erro: 500, mensagem: erro.message };
}
},
atualizarQuestao: async (id, dados) => {
const erroValidacao = validarEntradaQuestao(dados);
if (erroValidacao) return erroValidacao;
try {
const questaoExistente = await Questao.findOne({ where: { id } });
if (!questaoExistente) {
return { erro: 404, mensagem: MENSAGENS_ERRO.QUESTAO_NAO_ENCONTRADA };
}
await Questao.update(dados, { where: { id } });
return { mensagem: "Questão atualizada com sucesso." };
} catch (erro) {
return { erro: 500, mensagem: erro.message };
}
},
obterQuestoes: async (segmento, disciplina, ano, assunto, prova, id) => {
try {
const filtros = {};
if (segmento) filtros.segmento = segmento;
if (disciplina) filtros.disciplina = disciplina;
if (ano) filtros.ano = ano;
if (assunto) filtros.assunto = assunto;
if (prova) filtros.prova = prova;
if (id) filtros.id = id;
const questoes = await Questao.findAll({
where: filtros,
order: Sequelize.literal("RAND()"),
include: [
{
model: Comentario,
as: "Comentarios",
order: [["createdAt", "DESC"]],
include: {
model: User,
as: "User",
attributes: ["nome", "email"],
},
},
],
});
return questoes;
} catch (erro) {
return { erro: 500, mensagem: erro.message };
}
},
deletarQuestao: async (id) => {
try {
const questaoExistente = await Questao.findOne({ where: { id } });
if (!questaoExistente) {
return { erro: 404, mensagem: MENSAGENS_ERRO.QUESTAO_NAO_ENCONTRADA };
}
await Questao.destroy({ where: { id } });
return { mensagem: "Questão deletada com sucesso." };
} catch (erro) {
return { erro: 500, mensagem: erro.message };
}
},
};
module.exports = questaoService;