Update codebase
This commit is contained in:
@@ -70,7 +70,14 @@ class Trip extends Equatable {
|
||||
this.driverPhone,
|
||||
this.vehiclePlate,
|
||||
this.vehicleModel,
|
||||
this.vehicleColor,
|
||||
this.vehicleColorHex,
|
||||
this.driverRating,
|
||||
this.requestedAt,
|
||||
this.distanceKm,
|
||||
this.durationMin,
|
||||
this.paymentMethod,
|
||||
this.serviceClass,
|
||||
});
|
||||
|
||||
final String id;
|
||||
@@ -90,8 +97,34 @@ class Trip extends Equatable {
|
||||
final String? driverPhone;
|
||||
final String? vehiclePlate;
|
||||
final String? vehicleModel;
|
||||
|
||||
/// لون المركبة كاسم (`White`, `أبيض`) — **ما يبحث عنه الراكب في الشارع
|
||||
/// قبل اللوحة**. الخادم يرسله في `vehicle.color`
|
||||
/// (`trips.service.ts:427`).
|
||||
final String? vehicleColor;
|
||||
|
||||
/// اللون كـhex إن وُجد (`vehicles` عندها `color_hex`). يُقدَّم على الاسم
|
||||
/// عند الرسم لأنه دقيق، والاسم يبقى للعرض النصّي.
|
||||
final String? vehicleColorHex;
|
||||
|
||||
final String? driverRating;
|
||||
|
||||
// ── حقول السجلّ ────────────────────────────────────────────────────────
|
||||
// كلها موجودة في `trip.entity.ts` وتصل مع `GET /trips/mine`، وكانت
|
||||
// مُهمَلة في القراءة — فبدت بطاقة «رحلاتي» فارغة إلا من سعر وحالة.
|
||||
|
||||
/// وقت الطلب (`requested_at`, `CreateDateColumn`).
|
||||
final DateTime? requestedAt;
|
||||
|
||||
final double? distanceKm;
|
||||
final double? durationMin;
|
||||
|
||||
/// `cash` افتراضاً في الخادم — يُعرض كي يعرف الراكب كيف دفع.
|
||||
final String? paymentMethod;
|
||||
|
||||
/// نوع الخدمة (`economy` افتراضاً).
|
||||
final String? serviceClass;
|
||||
|
||||
factory Trip.fromJson(Map<String, dynamic> json) {
|
||||
GeoPoint? point(String key) {
|
||||
final v = json[key];
|
||||
@@ -99,6 +132,11 @@ class Trip extends Equatable {
|
||||
}
|
||||
|
||||
final driver = json['driver'] as Map<String, dynamic>?;
|
||||
// المركبة تصل بشكلين: مسطّحة (`vehicle_plate`) في ردّ الرحلة، ومتداخلة
|
||||
// (`vehicle: {plate, color}`) في حدث `assigned` (`trips.service.ts:423`).
|
||||
// القراءة تقبل الاثنين بدل أن تُفرغ البطاقة عند أحدهما.
|
||||
final vehicle = (json['vehicle'] ?? driver?['vehicle'])
|
||||
as Map<String, dynamic>?;
|
||||
return Trip(
|
||||
id: json['id'] as String,
|
||||
status: TripStatus.parse(json['status'] as String?),
|
||||
@@ -112,11 +150,26 @@ class Trip extends Equatable {
|
||||
driverName: driver?['name'] as String? ?? json['driver_name'] as String?,
|
||||
driverPhone:
|
||||
driver?['phone'] as String? ?? json['driver_phone'] as String?,
|
||||
vehiclePlate:
|
||||
driver?['vehicle_plate'] as String? ?? json['vehicle_plate'] as String?,
|
||||
vehicleModel:
|
||||
driver?['vehicle_model'] as String? ?? json['vehicle_model'] as String?,
|
||||
vehiclePlate: vehicle?['plate'] as String? ??
|
||||
driver?['vehicle_plate'] as String? ??
|
||||
json['vehicle_plate'] as String?,
|
||||
vehicleModel: vehicle?['model'] as String? ??
|
||||
driver?['vehicle_model'] as String? ??
|
||||
json['vehicle_model'] as String?,
|
||||
vehicleColor: vehicle?['color'] as String? ??
|
||||
driver?['vehicle_color'] as String? ??
|
||||
json['vehicle_color'] as String?,
|
||||
vehicleColorHex: vehicle?['color_hex'] as String? ??
|
||||
driver?['vehicle_color_hex'] as String? ??
|
||||
json['vehicle_color_hex'] as String?,
|
||||
driverRating: driver?['rating']?.toString(),
|
||||
requestedAt: DateTime.tryParse(json['requested_at']?.toString() ?? ''),
|
||||
// المسافة الفعلية أدقّ من المقدّرة حين تتوفّر بعد انتهاء الرحلة.
|
||||
distanceKm: (json['actual_distance_km'] as num?)?.toDouble() ??
|
||||
(json['distance_km'] as num?)?.toDouble(),
|
||||
durationMin: (json['duration_min'] as num?)?.toDouble(),
|
||||
paymentMethod: json['payment_method'] as String?,
|
||||
serviceClass: json['service_class'] as String?,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user