TetraStats/lib/data_objects/record_single.dart

58 lines
1.8 KiB
Dart
Raw Normal View History

2024-09-05 21:42:21 +00:00
// ignore_for_file: hash_and_equals
import 'package:tetra_stats/data_objects/aggregate_stats.dart';
import 'package:tetra_stats/data_objects/record_extras.dart';
import 'package:tetra_stats/data_objects/results_stats.dart';
2024-09-15 16:38:07 +00:00
import 'package:tetra_stats/data_objects/tetrio_prisecter.dart';
2024-09-05 21:42:21 +00:00
class RecordSingle {
late String? userId;
2024-09-15 16:38:07 +00:00
late String username;
2024-09-05 21:42:21 +00:00
late String replayId;
late String ownId;
late String gamemode;
late DateTime timestamp;
late ResultsStats stats;
late int rank;
late int countryRank;
late AggregateStats aggregateStats;
late RecordExtras extras;
2024-09-15 16:38:07 +00:00
late Prisecter prisecter;
2024-09-05 21:42:21 +00:00
2024-09-15 16:38:07 +00:00
RecordSingle({required this.replayId, required this.ownId, required this.timestamp, required this.stats, required this.rank, required this.countryRank, required this.aggregateStats});
2024-09-05 21:42:21 +00:00
RecordSingle.fromJson(Map<String, dynamic> json, int ran, int cran) {
ownId = json['_id'];
gamemode = json['gamemode'];
stats = ResultsStats.fromJson(json['results']['stats']);
replayId = json['replayid'];
timestamp = DateTime.parse(json['ts']);
2024-09-15 16:38:07 +00:00
if (json['user'] != null) {
userId = json['user']['id'];
username = json['user']['username'];
}
2024-09-05 21:42:21 +00:00
rank = ran;
countryRank = cran;
aggregateStats = AggregateStats.fromJson(json['results']['aggregatestats']);
2024-09-15 16:38:07 +00:00
prisecter = Prisecter.fromJson(json['p']);
2024-09-05 21:42:21 +00:00
var ex = json['extras'] as Map<String, dynamic>;
switch (ex.keys.firstOrNull){
case "zenith":
extras = ZenithExtras.fromJson(json['extras']['zenith']);
default:
break;
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['_id'] = ownId;
data['results']['stats'] = stats.toJson();
data['ismulti'] = false;
data['replayid'] = replayId;
data['ts'] = timestamp;
data['user_id'] = userId;
return data;
}
}