updateSawMatrix method

Future<List<SawMatrix>> updateSawMatrix({
  1. required List<SawMatrix> currentMatrix,
  2. required String? matrixId,
  3. required String? ratingsId,
  4. required num value,
})

UPDATE SAW MATRIX

Implementation

Future<List<SawMatrix>> updateSawMatrix({
  required List<SawMatrix> currentMatrix,
  required String? matrixId,
  required String? ratingsId,
  required num value,
}) async {
  var updatedList = List<SawMatrix>.from(currentMatrix);

  final matrixIndex = updatedList.indexWhere((m) => m.id == matrixId);
  if (matrixIndex == -1) {
    throw Exception("Matrix not found!");
  }

  final matrix = updatedList[matrixIndex];

  final ratingIndex = matrix.ratings.indexWhere((r) => r.id == ratingsId);
  if (ratingIndex == -1) {
    throw Exception("Rating not found!");
  }

  var updatedRatings = List<SawRating>.from(matrix.ratings);
  updatedRatings[ratingIndex] =
      updatedRatings[ratingIndex].copyWith(value: value);

  updatedList[matrixIndex] = matrix.copyWith(ratings: updatedRatings);

  return updatedList;
}