244 lines
5.7 KiB
Dart
244 lines
5.7 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
import 'iso_duration.dart';
|
|
|
|
part 'rmv_models.freezed.dart';
|
|
part 'rmv_models.g.dart';
|
|
|
|
@freezed
|
|
abstract class Product with _$Product {
|
|
const factory Product({
|
|
String? name,
|
|
String? line,
|
|
String? displayNumber,
|
|
String? category,
|
|
String? categoryCode,
|
|
String? operator,
|
|
}) = _Product;
|
|
|
|
factory Product.fromJson(Map<String, Object?> json) =>
|
|
_$ProductFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StopLocation with _$StopLocation {
|
|
const factory StopLocation({
|
|
required String id,
|
|
String? extId,
|
|
required String name,
|
|
String? description,
|
|
double? lat,
|
|
double? lon,
|
|
int? products,
|
|
int? distanceMeters,
|
|
}) = _StopLocation;
|
|
|
|
factory StopLocation.fromJson(Map<String, Object?> json) =>
|
|
_$StopLocationFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Departure with _$Departure {
|
|
const factory Departure({
|
|
required String stopId,
|
|
String? stopExtId,
|
|
required String stopName,
|
|
required String name,
|
|
required String direction,
|
|
String? directionFlag,
|
|
required DateTime scheduledTime,
|
|
DateTime? realTime,
|
|
int? delayMinutes,
|
|
String? track,
|
|
String? realTrack,
|
|
@Default(false) bool cancelled,
|
|
@Default(true) bool reachable,
|
|
Product? product,
|
|
String? journeyRef,
|
|
}) = _Departure;
|
|
|
|
factory Departure.fromJson(Map<String, Object?> json) =>
|
|
_$DepartureFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Arrival with _$Arrival {
|
|
const factory Arrival({
|
|
required String stopId,
|
|
String? stopExtId,
|
|
required String stopName,
|
|
required String name,
|
|
required String origin,
|
|
required DateTime scheduledTime,
|
|
DateTime? realTime,
|
|
int? delayMinutes,
|
|
String? track,
|
|
String? realTrack,
|
|
@Default(false) bool cancelled,
|
|
Product? product,
|
|
String? journeyRef,
|
|
}) = _Arrival;
|
|
|
|
factory Arrival.fromJson(Map<String, Object?> json) =>
|
|
_$ArrivalFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class TripEndpoint with _$TripEndpoint {
|
|
const factory TripEndpoint({
|
|
required String stopId,
|
|
String? stopExtId,
|
|
required String name,
|
|
double? lat,
|
|
double? lon,
|
|
required DateTime scheduledTime,
|
|
DateTime? realTime,
|
|
int? delayMinutes,
|
|
String? track,
|
|
String? realTrack,
|
|
String? type,
|
|
}) = _TripEndpoint;
|
|
|
|
factory TripEndpoint.fromJson(Map<String, Object?> json) =>
|
|
_$TripEndpointFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class JourneyStop with _$JourneyStop {
|
|
const factory JourneyStop({
|
|
required String id,
|
|
String? extId,
|
|
required String name,
|
|
double? lat,
|
|
double? lon,
|
|
int? routeIdx,
|
|
DateTime? scheduledArrival,
|
|
DateTime? scheduledDeparture,
|
|
DateTime? realArrival,
|
|
DateTime? realDeparture,
|
|
String? arrTrack,
|
|
String? depTrack,
|
|
String? realArrTrack,
|
|
String? realDepTrack,
|
|
@Default(false) bool cancelled,
|
|
@Default(false) bool cancelledArrival,
|
|
@Default(false) bool cancelledDeparture,
|
|
}) = _JourneyStop;
|
|
|
|
factory JourneyStop.fromJson(Map<String, Object?> json) =>
|
|
_$JourneyStopFromJson(json);
|
|
}
|
|
|
|
enum LegType {
|
|
@JsonValue('JOURNEY')
|
|
journey,
|
|
@JsonValue('WALK')
|
|
walk,
|
|
@JsonValue('TRANSFER')
|
|
transfer,
|
|
@JsonValue('BIKE')
|
|
bike,
|
|
@JsonValue('CAR')
|
|
car,
|
|
@JsonValue('PARK_RIDE')
|
|
parkRide,
|
|
@JsonValue('TAXI')
|
|
taxi,
|
|
@JsonValue('CHECK_IN')
|
|
checkIn,
|
|
@JsonValue('CHECK_OUT')
|
|
checkOut,
|
|
@JsonValue('DUMMY')
|
|
dummy,
|
|
@JsonValue('UNKNOWN')
|
|
unknown,
|
|
}
|
|
|
|
@freezed
|
|
abstract class Leg with _$Leg {
|
|
const factory Leg({
|
|
required String id,
|
|
required int idx,
|
|
@Default(LegType.unknown) LegType type,
|
|
String? name,
|
|
String? category,
|
|
String? number,
|
|
String? direction,
|
|
required TripEndpoint origin,
|
|
required TripEndpoint destination,
|
|
@JsonKey(fromJson: IsoDuration.fromJson, toJson: IsoDuration.toJson)
|
|
Duration? duration,
|
|
@Default(false) bool cancelled,
|
|
@Default(false) bool partCancelled,
|
|
@Default(true) bool reachable,
|
|
Product? product,
|
|
String? journeyRef,
|
|
@Default(<JourneyStop>[]) List<JourneyStop> stops,
|
|
}) = _Leg;
|
|
|
|
factory Leg.fromJson(Map<String, Object?> json) => _$LegFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class Trip with _$Trip {
|
|
const factory Trip({
|
|
String? tripId,
|
|
String? ctxRecon,
|
|
String? checksum,
|
|
@JsonKey(fromJson: IsoDuration.fromJson, toJson: IsoDuration.toJson)
|
|
Duration? duration,
|
|
@JsonKey(fromJson: IsoDuration.fromJson, toJson: IsoDuration.toJson)
|
|
Duration? realDuration,
|
|
int? transferCount,
|
|
@Default(<Leg>[]) List<Leg> legs,
|
|
}) = _Trip;
|
|
|
|
factory Trip.fromJson(Map<String, Object?> json) => _$TripFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class TripSearchResult with _$TripSearchResult {
|
|
const factory TripSearchResult({
|
|
@Default(<Trip>[]) List<Trip> trips,
|
|
String? scrollContextLater,
|
|
String? scrollContextEarlier,
|
|
}) = _TripSearchResult;
|
|
|
|
factory TripSearchResult.fromJson(Map<String, Object?> json) =>
|
|
_$TripSearchResultFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class JourneyDetail with _$JourneyDetail {
|
|
const factory JourneyDetail({
|
|
String? journeyId,
|
|
Product? product,
|
|
String? direction,
|
|
@Default(<JourneyStop>[]) List<JourneyStop> stops,
|
|
}) = _JourneyDetail;
|
|
|
|
factory JourneyDetail.fromJson(Map<String, Object?> json) =>
|
|
_$JourneyDetailFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class HimMessage with _$HimMessage {
|
|
const factory HimMessage({
|
|
required String id,
|
|
String? externalId,
|
|
String? head,
|
|
String? lead,
|
|
String? text,
|
|
String? category,
|
|
String? company,
|
|
int? priority,
|
|
int? products,
|
|
DateTime? startValidity,
|
|
DateTime? endValidity,
|
|
DateTime? modified,
|
|
}) = _HimMessage;
|
|
|
|
factory HimMessage.fromJson(Map<String, Object?> json) =>
|
|
_$HimMessageFromJson(json);
|
|
}
|