newJumpLogic function

dynamic newJumpLogic(
  1. dynamic _currentId,
  2. dynamic _questionPos,
  3. dynamic _allQuestionList,
  4. dynamic _allowedQuestionIds,
  5. dynamic _workBench,
)

Implementation

newJumpLogic(_currentId, _questionPos, _allQuestionList, _allowedQuestionIds,
    _workBench) {
  var nextIndex = _questionPos[_currentId] + 1;
  var questionToCheck = _allQuestionList[_questionPos[_currentId]];
  dynamic hasThankYouLogic = false;

  if (hasJumpLogic(questionToCheck)) {
    var questionIdToJump =
        questionToCheck['jumpLogic']['logics'][0]['jump_to_id'];
    var questionJumpLogics =
        questionToCheck['jumpLogic']['logics'][0]['logics'];

    var jump = handleDisplayAndSkipLogic(
        questionToCheck, 'jl', _allowedQuestionIds, _workBench);

    if (jump) {
      if (questionToCheck['jumpLogic']['logics'][0]['jump_to_id']
          .toString()
          .contains("ty:")) {
        hasThankYouLogic =
            questionToCheck['jumpLogic']['logics'][0]['jump_to_id'];
      }
      if (questionToCheck['jumpLogic']['logics'][0]['jump_to_id'].toString() ==
          "-2") {
        hasThankYouLogic =
            questionToCheck['jumpLogic']['logics'][0]['redirectUrl'];
      }
      if (_allowedQuestionIds.contains(questionIdToJump) ||
          (questionIdToJump is String && questionIdToJump.contains("ty:")) ||
          (questionIdToJump is String && questionIdToJump.contains("-2"))) {
        nextIndex = _questionPos[questionIdToJump];
      }
    }
  }
  return [nextIndex, hasThankYouLogic];
}