Files
The-transit-Project/bus_terminal/lib/models/schedule.dart
T
2026-05-05 17:39:02 +02:00

143 lines
3.3 KiB
Dart

/// Bus Line model
class BusLine {
final int id;
final int lineNumber;
final String startStop;
final String endStop;
final int estimatedDuration; // in minutes
final String? description;
BusLine({
required this.id,
required this.lineNumber,
required this.startStop,
required this.endStop,
required this.estimatedDuration,
this.description,
});
factory BusLine.fromJson(Map<String, dynamic> json) {
return BusLine(
id: json['id'] as int,
lineNumber: json['lineNumber'] as int,
startStop: json['startStop'] as String,
endStop: json['endStop'] as String,
estimatedDuration: json['estimatedDuration'] as int,
description: json['description'] as String?,
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'lineNumber': lineNumber,
'startStop': startStop,
'endStop': endStop,
'estimatedDuration': estimatedDuration,
'description': description,
};
}
}
/// Bus type model
class BusType {
final int id;
final String name;
final int seatCapacity;
final String licensePlate;
BusType({
required this.id,
required this.name,
required this.seatCapacity,
required this.licensePlate,
});
factory BusType.fromJson(Map<String, dynamic> json) {
return BusType(
id: json['id'] as int,
name: json['name'] as String,
seatCapacity: json['seatCapacity'] as int,
licensePlate: json['licensePlate'] as String,
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'seatCapacity': seatCapacity,
'licensePlate': licensePlate,
};
}
}
/// Route model for daily schedule
class Route {
final int id;
final BusLine busLine;
final BusType busType;
final DateTime startTime;
final DateTime? endTime;
final String status; // scheduled, in_progress, completed, cancelled
Route({
required this.id,
required this.busLine,
required this.busType,
required this.startTime,
this.endTime,
required this.status,
});
factory Route.fromJson(Map<String, dynamic> json) {
return Route(
id: json['id'] as int,
busLine: BusLine.fromJson(json['busLine'] as Map<String, dynamic>),
busType: BusType.fromJson(json['busType'] as Map<String, dynamic>),
startTime: DateTime.parse(json['startTime'] as String),
endTime:
json['endTime'] != null ? DateTime.parse(json['endTime'] as String) : null,
status: json['status'] as String,
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'busLine': busLine.toJson(),
'busType': busType.toJson(),
'startTime': startTime.toIso8601String(),
'endTime': endTime?.toIso8601String(),
'status': status,
};
}
}
/// Daily schedule model
class DailySchedule {
final List<Route> routes;
final DateTime date;
DailySchedule({
required this.routes,
required this.date,
});
factory DailySchedule.fromJson(Map<String, dynamic> json) {
return DailySchedule(
routes: (json['routes'] as List)
.map((r) => Route.fromJson(r as Map<String, dynamic>))
.toList(),
date: DateTime.parse(json['date'] as String),
);
}
Map<String, dynamic> toJson() {
return {
'routes': routes.map((r) => r.toJson()).toList(),
'date': date.toIso8601String(),
};
}
}