Roadbound-BRR/lib/models/operations/scheduled_stop.dart

58 lines
1.5 KiB
Dart

import "package:bus_running_record/models/operations/stop.dart";
class ScheduledStop extends Stop {
const ScheduledStop({
required super.name,
required this.sequence,
this.scheduledTime,
super.alias,
super.aliasSource,
});
final int sequence;
final String? scheduledTime;
ScheduledStop copyWith({
String? name,
String? alias,
String? aliasSource,
int? sequence,
String? scheduledTime,
}) {
return ScheduledStop(
name: name ?? this.name,
alias: alias ?? this.alias,
aliasSource: aliasSource ?? this.aliasSource,
sequence: sequence ?? this.sequence,
scheduledTime: scheduledTime ?? this.scheduledTime,
);
}
Map<String, dynamic> toJson() {
return {
"name": name,
"alias": alias,
"aliasSource": aliasSource,
"sequence": sequence,
"scheduledTime": scheduledTime,
};
}
factory ScheduledStop.fromJson(Map<String, dynamic> json) {
final raw = (json["scheduledTime"] ?? "").toString().trim();
return ScheduledStop(
name: (json["name"] ?? "").toString(),
alias: (json["alias"] ?? "").toString().trim().isEmpty
? null
: (json["alias"] ?? "").toString(),
aliasSource: (json["aliasSource"] ?? json["source"] ?? "")
.toString()
.trim()
.isEmpty
? null
: (json["aliasSource"] ?? json["source"] ?? "").toString(),
sequence: (json["sequence"] as num?)?.toInt() ?? 0,
scheduledTime: raw.isEmpty ? null : raw,
);
}
}