addResult<T> method

Future<void> addResult<T>({
  1. required String taskId,
  2. required String periodId,
  3. required T result,
})

Implementation

Future<void> addResult<T>({required String taskId, required String periodId, required T result}) async {
  late final Result<T> resultObject;
  switch (T) {
    case QuestionnaireState:
      resultObject = Result<T>.app(type: 'QuestionnaireState', periodId: periodId, result: result);
      break;
    case fhir.QuestionnaireResponse:
      resultObject = Result<T>.app(type: 'fhir.QuestionnaireResponse', periodId: periodId, result: result);
      break;
    case bool:
      resultObject = Result<T>.app(type: 'bool', periodId: periodId, result: result);
      break;
    default:
      print('Unsupported question type: $T');
      resultObject = Result<T>.app(type: 'unknown', periodId: periodId, result: result);
  }

  final p = await SubjectProgress(
    subjectId: id,
    interventionId: getInterventionForDate(DateTime.now())!.id,
    taskId: taskId,
    result: resultObject,
    resultType: resultObject.type,
  ).save();
  progress.add(p);
  await save();
}