From ec7606c09d17a7b31713073a0e052c22b1cb1562 Mon Sep 17 00:00:00 2001
From: Jan Tymel <410388@mail.muni.cz>
Date: Fri, 22 Jan 2021 07:08:36 +0100
Subject: [PATCH] Fix DecisionMatrixRows alignment when phases' order are
 changed

Related to #1
---
 .../example/demo/service/PhaseLevelService.java  | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/example/demo/service/PhaseLevelService.java b/src/main/java/com/example/demo/service/PhaseLevelService.java
index c8f8c020..981b3919 100644
--- a/src/main/java/com/example/demo/service/PhaseLevelService.java
+++ b/src/main/java/com/example/demo/service/PhaseLevelService.java
@@ -69,8 +69,10 @@ public class PhaseLevelService {
     public void alignDecisionMatrixForPhasesInTrainingDefinition(Long trainingDefinitionId) {
         List<PhaseLevel> phaseLevels = phaseLevelRepository.findAllByTrainingDefinitionIdOrderByOrder(trainingDefinitionId);
 
+        int currentPhaseOrder = 0;
         for (PhaseLevel phaseLevel : phaseLevels) {
-            alignDecisionMatrixForPhase(phaseLevel);
+            alignDecisionMatrixForPhase(phaseLevel, currentPhaseOrder);
+            currentPhaseOrder++;
         }
     }
 
@@ -91,7 +93,7 @@ public class PhaseLevelService {
         return result;
     }
 
-    private void alignDecisionMatrixForPhase(PhaseLevel phaseLevel) {
+    private void alignDecisionMatrixForPhase(PhaseLevel phaseLevel, int currentPhaseOrder) {
         if (Objects.isNull(phaseLevel)) {
             return;
         }
@@ -101,15 +103,15 @@ public class PhaseLevelService {
             numberOfRows = phaseLevel.getDecisionMatrix().size();
         }
 
-        final int expextedNumberOfRows = phaseLevel.getOrder() + 1;
+        final int expectedNumberOfRows = currentPhaseOrder + 1;
 
-        if (numberOfRows == expextedNumberOfRows) {
+        if (numberOfRows == expectedNumberOfRows) {
             return;
-        } else if (numberOfRows < expextedNumberOfRows) {
-            List<DecisionMatrixRow> newDecisionMatrixRows = getNewDecisionMatrixRows(numberOfRows, expextedNumberOfRows, phaseLevel);
+        } else if (numberOfRows < expectedNumberOfRows) {
+            List<DecisionMatrixRow> newDecisionMatrixRows = getNewDecisionMatrixRows(numberOfRows, expectedNumberOfRows, phaseLevel);
             phaseLevel.getDecisionMatrix().addAll(newDecisionMatrixRows);
         } else {
-            List<DecisionMatrixRow> neededDecisionMatrixRows = getOnlyNeededDecisionMatrixRows(expextedNumberOfRows, phaseLevel);
+            List<DecisionMatrixRow> neededDecisionMatrixRows = getOnlyNeededDecisionMatrixRows(expectedNumberOfRows, phaseLevel);
 
             phaseLevel.getDecisionMatrix().clear();
             phaseLevel.getDecisionMatrix().addAll(neededDecisionMatrixRows);
-- 
GitLab