diff --git a/firka/lib/helpers/average_helper.dart b/firka/lib/helpers/average_helper.dart new file mode 100644 index 00000000..ccabc822 --- /dev/null +++ b/firka/lib/helpers/average_helper.dart @@ -0,0 +1,23 @@ +import 'package:firka/helpers/api/model/grade.dart'; + +double calculateAverage(List sortedGrades) { + double totalWeight = 0.0; + double weightedSum = 0.0; + + for (final grade in sortedGrades) { + final value = grade.numericValue; + final weight = grade.weightPercentage; + + if (value != null && weight != null) { + weightedSum += value * weight; + totalWeight += weight; + } + } + + if (totalWeight == 0) { + return double.parse(0.0.toStringAsFixed(2)); + } + + final avg = weightedSum / totalWeight; + return double.parse(avg.toStringAsFixed(2)); +} \ No newline at end of file