M3nin0/posso-faltar-bot

View on GitHub
utils/statistic.js

Summary

Maintainability
A
2 hrs
Test Coverage
/*
  Função para verificar e informar ao aluno estatísticas sobre sua nota,
  para que o mesmo oriente-se quando for necessário

  Autores:
    Lucas Varlesse
    Felipe Menino
    Filipe Meneses
*/

/*
  Favoravel:
    - Notas boas
    - Presenças boas
  Desvaforavel:
    - Notas ruins
    - Presenças ruins
*/

var favor = 2;
var desfavor = 2;

// Calcula a média de presença do aluno no mês
function calcMeanPresence(data, name){

  var final = 0;
  for (var i in data){
    if (data[i].nome == name){
      let v1 = parseInt(data[i].maxAbsences);
      let v2 = parseInt(data[i].absences);
      v2 = v2 * 100;

      final = (v2 / v1) - 100;
    }
  }
  return '\n\nPorcentagem de presença: ' + Math.abs(final) + '%';
}

// Gera a probabilidade de reprovação
function calcProbabilidade(){
  /*
    prob = n de resultados favoraveis / total de resultados = prob
  */
  return Math.floor((favor / desfavor) * 100) + '';
}

// Verifica a situação de presença em uma matéria escolhida pelo usuário
function verifyEspec(name, data){

  var msg = '';
  for(var i in data){
    if(data[i].nome == name)
      msg = data[i].nome + '\n\n' + 'Quantidade de presenças: ' + data[i].presences +
      '\n\n' + 'Quantidade de faltas: ' + data[i].absences
  }
  return msg + '\n' + calcMeanPresence(data, name);
}

// Verifica a situação total do aluno
function verifyTotal(data){

  var good = 0, bad = 0, finall = '';
  var msg = '';

  for(var i in data){
    msg = msg.concat(data[i].nome + '\n\n' +'Quantidade de presenças: ' + data[i].presences + '\n\n' +
    'Quantidade de faltas: ' + data[i].absences + "\n\n" + "---------------------\n\n");
    if(parseInt(data[i].absences, 10) > parseInt(data[i].presences, 10))
      good++;
    else
      bad++;
  }

  if(good > bad)
    finall = 'Pelo que percebi, no geral você está bem. Parabéns 😁';
  else{
    desfavor += 1
    finall = 'Cuidado! A presença é importante e pelo que percebi você tem muitas faltas';
  }
  return [msg + '\n'.repeat(4) + finall, good, bad];
}

// Verifica a situação do aluno com relação as faltas
function verifyAbsences(data){

  var msg = '';
  var good = 0;
  var nonFalta = 0;
  var choose = 0;

  for (let i in data){
    msg = "Matéria de " + data[i].nome + " (" + data[i].sigla + ")\n\n";

    if (parseInt(data[i].absences) > parseInt(data[i].maxAbsences))
      nonFalta += 1;

    else if ((parseInt(data[i].maxAbsences) - parseInt(data[i].absences)) < 3)
      nonFalta += 1;

    else if ((parseInt(data[i].maxAbsences) - parseInt(data[i].absences)) < 7)
      choose += 1;

    else
      good += 1;

    }
    if (nonFalta > good && nonFalta > choose)
      msg = "Cara...Vai para a faculdade, você está bem ruim de presença nas matérias de hoje 😱";
    else if (good > nonFalta && good > choose)
      msg = "Hey! Você pode faltar tranquilo!";
    else if (choose > nonFalta && choose > good)
      msg = "Assim, você até pode faltar, MAS, não conte com isso das próximas vezes";
    return msg;
}

module.exports = {
  calcMeanPresence,
  verifyAbsences,
  verifyTotal,
  verifyEspec,
  calcProbabilidade
}