normalizeWorkoutExercises function

List<Map<String, dynamic>>? normalizeWorkoutExercises(
  1. List<WorkoutSequenceExercise>? exercises
)

Normalizes and validates a list of workout exercises

Returns null if the list is empty or all exercises are invalid. Filters out exercises that fail validation.

Implementation

List<Map<String, dynamic>>? normalizeWorkoutExercises(
  List<WorkoutSequenceExercise>? exercises,
) {
  if (exercises == null || exercises.isEmpty) {
    return null;
  }

  final normalizedExercises = <Map<String, dynamic>>[];

  for (final exercise in exercises) {
    // Validate exerciseId
    if (exercise.exerciseId.isEmpty ||
        containsDisallowedCharacters(exercise.exerciseId)) {
      // Skip invalid exercises
      continue;
    }

    // Validate numeric values
    if ((exercise.reps != null && exercise.reps! < 0) ||
        (exercise.duration != null && exercise.duration! < 0) ||
        exercise.restDuration < 0) {
      // Skip exercises with invalid numeric values
      continue;
    }

    normalizedExercises.add({
      'exerciseId': exercise.exerciseId,
      'reps': exercise.reps,
      'duration': exercise.duration,
      'includeRestPeriod': exercise.includeRestPeriod,
      'restDuration': exercise.restDuration,
    });
  }

  return normalizedExercises.isEmpty ? null : normalizedExercises;
}