APP_NEW/lib/Class/Result/zong_fu_index_result.dart
2025-03-11 21:17:14 +08:00

56 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lamiter/Class/Form/zong_fu_index_form.dart';
import 'package:lamiter/Provider/Diagnosis/Diagnosis_Item/zong_fu_organ_provider.dart';
import 'package:provider/provider.dart';
class ZongFuIndexResult {
String? id;
List<String> zongFuOrgansIds;
ZongFuIndexResult({
this.id,
required this.zongFuOrgansIds,
});
ZongFuIndexResult.fromJson(Map<String, dynamic> json)
: zongFuOrgansIds = (json["zongFuOrgansIds"] as List<dynamic>?)
?.map((item) => item as String)
.toList() ??
[];
Map<String, dynamic> toJson() => {'zongFuOrgansIds': zongFuOrgansIds};
ZongFuIndexResult.fromForm(BuildContext context, ZongFuIndexForm form)
: zongFuOrgansIds = _calculateZongFuOrgans(context, form);
static List<String> _calculateZongFuOrgans(
BuildContext context,
ZongFuIndexForm form,
) {
Map<String, int> zongFuScores = {};
for (var score in form.scores.entries) {
// _zong_fu_index_${zfg.name}_question_$i
List<String> splits = score.key.split('_');
String zongFuOrgan = splits[4];
if (zongFuScores.containsKey(zongFuOrgan)) {
zongFuScores[zongFuOrgan] =
zongFuScores[zongFuOrgan]! + score.value.score;
} else {
zongFuScores[zongFuOrgan] = score.value.score;
}
}
final zongFuOrgans = context.read<ZongFuOrganProvider>().elements;
List<String> temp = [];
for (int max_score = 6; max_score > 2; max_score--) {
if (temp.length >= 2) break;
for (var zongFuOrgan in zongFuOrgans) {
if ((zongFuScores[zongFuOrgan.id] ?? -1) == max_score) {
temp.add(zongFuOrgan.id);
}
}
}
return temp;
}
}