From c46299882b7136a49df64bf94157db85ae82290e Mon Sep 17 00:00:00 2001
From: Glenda <gpt16@inf.ufpr.br>
Date: Thu, 30 Aug 2018 12:19:03 -0300
Subject: [PATCH] fix LDE education level mod sequence

---
 src/libs/routes/classCount.js | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/libs/routes/classCount.js b/src/libs/routes/classCount.js
index 8747ee39..854b489a 100644
--- a/src/libs/routes/classCount.js
+++ b/src/libs/routes/classCount.js
@@ -313,6 +313,28 @@ function averageCalc(response) {
   return(obj);
 }
 
+// Se a dimensão obrigatória do LDE (etapa de ensino) possui alguma etapa sem nenhum valor, então é criado um objeto
+// com média 0.0 e é inserido no resultado. Usada para não quebrar a sequência de etapas na tabela do LDE.
+function addNullFields(result) {
+  const firstYear = result[0].year;
+  var obj = result.filter(res => res.year == firstYear);
+  var prevFirstDimId = obj[0];
+  obj.forEach((d) => {
+    if((d["education_level_mod_id"] > prevFirstDimId["education_level_mod_id"]) && (prevFirstDimId["education_level_mod_id"] != 10) &&
+       (d["education_level_mod_id"] != prevFirstDimId["education_level_mod_id"] + 1)) {
+      let newObj = {};
+      Object.keys(prevFirstDimId).forEach((key) => {
+        newObj[key] = prevFirstDimId[key];
+      });
+      newObj.education_level_mod_id = d["education_level_mod_id"] - 1;
+      newObj.education_level_mod_name = id2str.educationLevelMod(d["education_level_mod_id"] - 1);
+      newObj.average = 0.0;
+      result.splice(result.indexOf(prevFirstDimId) + 1, 0, newObj);
+    }
+    prevFirstDimId = d;
+  });
+}
+
 // LDE
 classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
   // Faz a consulta do número de alunos pelas dimensões
@@ -379,6 +401,7 @@ classCountApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
   else {
     const classCount = averageCalc(req.result);
     req.result = classCount;
+    addNullFields(req.result);
   }
   next();
 }, response('class_count'));
-- 
GitLab