createAnswerPayload function

dynamic createAnswerPayload(
  1. dynamic _collectedAnswers,
  2. dynamic key,
  3. dynamic value,
  4. dynamic _surveyToMap,
  5. dynamic otherInput,
  6. dynamic otherInputText,
  7. dynamic otherInputId,
  8. dynamic isPhoneInput,
  9. dynamic phoneValue,
  10. dynamic time,
)

Implementation

createAnswerPayload(
  _collectedAnswers,
  key,
  value,
  _surveyToMap,
  otherInput,
  otherInputText,
  otherInputId,
  isPhoneInput,
  phoneValue,
  time,
) {
  var currentAnswer;
  var currentAnswerToSync;

  var isAnswerCollected =
      _collectedAnswers.where((e) => e['question_id'] == key);

  if (isAnswerCollected.length > 0) {
    currentAnswer = isAnswerCollected.first;
    if (value == null) {
      currentAnswer[_surveyToMap[key]['type']]
          .removeWhere((key, value) => key == "data");
      if (currentAnswer[_surveyToMap[key]['type']]['notApplicable'] != null) {
        currentAnswer[_surveyToMap[key]['type']]
            .removeWhere((key, value) => key == "notApplicable");
      }
      // currentAnswer[_surveyToMap[key]['type']]['data'] = null;
      currentAnswer[_surveyToMap[key]['type']]['skipped'] = true;
    } else {
      if (value == -2) {
        currentAnswer[_surveyToMap[key]['type']]
            .removeWhere((key, value) => key == "data");
        currentAnswer[_surveyToMap[key]['type']]['skipped'] = true;
        currentAnswer[_surveyToMap[key]['type']]['notApplicable'] = true;
      } else {
        currentAnswer[_surveyToMap[key]['type']]['data'] =
            getAnswerValueToStore(
          value,
          otherInput,
          otherInputText,
          otherInputId,
          isPhoneInput,
          phoneValue,
        );
        if (currentAnswer[_surveyToMap[key]['type']]['notApplicable'] != null) {
          currentAnswer[_surveyToMap[key]['type']]
              .removeWhere((key, value) => key == "notApplicable");
        }
        currentAnswer[_surveyToMap[key]['type']]['skipped'] = false;
      }
    }
  } else {
    currentAnswer = {};
    currentAnswerToSync = {};
    if (value == null) {
      currentAnswer['question_id'] = key;
      currentAnswer[_surveyToMap[key]['type']] = {};
      currentAnswer[_surveyToMap[key]['type']]['skipped'] = true;
      currentAnswer[_surveyToMap[key]['type']]['timeTaken'] = time;
    } else {
      if (value == -2) {
        currentAnswer['question_id'] = key;
        currentAnswer[_surveyToMap[key]['type']] = {};
        currentAnswer[_surveyToMap[key]['type']]['skipped'] = true;
        currentAnswer[_surveyToMap[key]['type']]['notApplicable'] = true;
        currentAnswer[_surveyToMap[key]['type']]['timeTaken'] = time;
      } else {
        currentAnswer['question_id'] = key;
        currentAnswer[_surveyToMap[key]['type']] = {};
        currentAnswer[_surveyToMap[key]['type']]['data'] =
            getAnswerValueToStore(
          value,
          otherInput,
          otherInputText,
          otherInputId,
          isPhoneInput,
          phoneValue,
        );
        currentAnswer[_surveyToMap[key]['type']]['skipped'] = false;
        currentAnswer[_surveyToMap[key]['type']]['timeTaken'] = time;
      }
    }
    _collectedAnswers.add(currentAnswer);
  }
}