personal_rank.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'package:app_business/generated/base.pb.dart' as pb;
  2. import 'package:app_business/service/api.dart';
  3. import 'package:track_common/model.dart';
  4. import 'package:track_common/view/home/personal_rank.dart';
  5. class PersonalRankControllerImpl extends PersonalRankController {
  6. @override
  7. Future<List<RankActiveInfo>> getRankList(int mapId, DateTime startAt) async {
  8. final startAtSec = filterStartAt.value.millisecondsSinceEpoch ~/ 1000;
  9. final r = await Get.find<ApiService>()
  10. .stub
  11. .toGameRanking(pb.ToGameRankingRequest()
  12. ..mapId = mapId
  13. ..startSecond = Int64(startAtSec));
  14. final out = <RankActiveInfo>[];
  15. for (final actSrc in r.list) {
  16. final act = RankActiveInfo()
  17. ..id = actSrc.actId
  18. ..name = actSrc.actName
  19. ..userList = actSrc.rankList.map((e) => e.toModel()).toList();
  20. out.add(act);
  21. }
  22. return out;
  23. }
  24. }
  25. extension UserRankInfoExt on pb.ToOrienteerRankInfo {
  26. RankUserInfo toModel() {
  27. return RankUserInfo()
  28. ..id = oId
  29. ..name = oName
  30. ..routeName = courseName
  31. ..state = switch (state) {
  32. 1 => GameState.finish,
  33. 2 => GameState.processing,
  34. _ => GameState.unFinish
  35. }
  36. ..phone = phone
  37. ..startAt = startAt.toModel()
  38. ..duration = duration.toModel()
  39. ..distance = distance.meter;
  40. }
  41. }