import 'dart:convert'; class CheckpointVisit { final String id; final String checkpointId; final String teamName; final String userName; final String eventCode; final DateTime visitTime; CheckpointVisit({ required this.id, required this.checkpointId, required this.teamName, required this.userName, required this.eventCode, required this.visitTime, }); CheckpointVisit copyWith({ String? id, String? checkpointId, String? teamName, String? userName, String? eventCode, DateTime? visitTime, }) { return CheckpointVisit( id: id ?? this.id, checkpointId: checkpointId ?? this.checkpointId, teamName: teamName ?? this.teamName, userName: userName ?? this.userName, eventCode: eventCode ?? this.eventCode, visitTime: visitTime ?? this.visitTime, ); } Map toMap() { return { 'id': id, 'checkpointId': checkpointId, 'teamName': teamName, 'userName': userName, 'eventCode': eventCode, 'visitTime': visitTime.millisecondsSinceEpoch, }; } factory CheckpointVisit.fromMap(Map map) { return CheckpointVisit( id: map['id'], checkpointId: map['checkpointId'], teamName: map['teamName'], userName: map['userName'], eventCode: map['eventCode'], visitTime: DateTime.fromMillisecondsSinceEpoch(map['visitTime']), ); } String toJson() => json.encode(toMap()); factory CheckpointVisit.fromJson(String source) => CheckpointVisit.fromMap(json.decode(source)); @override String toString() { return 'CheckpointVisit(id: $id, checkpointId: $checkpointId, teamName: $teamName, userName: $userName, eventCode: $eventCode, visitTime: $visitTime)'; } @override bool operator ==(Object other) { if (identical(this, other)) return true; return other is CheckpointVisit && other.id == id && other.checkpointId == checkpointId && other.teamName == teamName && other.userName == userName && other.eventCode == eventCode && other.visitTime == visitTime; } }