import 'RideStop.dart'; class Ride { final int id; final int? driverId; final int userId; final double averagedriverrating; final double distancekm; final String startLocation; final String riderphonenumber; final String endLocation; final List? stops; final DateTime? rideStartTime; final DateTime? rideEndTime; final double? durationInMinutes; final double? totalPrice; String rideStatus; final String rideType; final String geometryhash; final String encodedpolyline; final String ridername; final String riderusername; final String paymenttype; final String drivername; final String driverimageurl; final String drivercarmodel; final String licenseplate; final String driverphonenumber; final String driverusername; final String userimageurl; final String startLocationName; final String endLocationName; final String currentridetypesocket; final DateTime timestamp; final String? couponcode; final double? couponvalue; final double? couponpercentage; final bool? iskidsride; final String? rideclienttype; final int? programid; Ride({ required this.id, required this.drivername, required this.driverimageurl, required this.startLocationName, required this.riderphonenumber, required this.endLocationName, required this.drivercarmodel, required this.currentridetypesocket, required this.licenseplate, required this.driverphonenumber, required this.driverusername, required this.userimageurl, this.driverId, required this.userId, required this.geometryhash, required this.encodedpolyline, required this.averagedriverrating, required this.distancekm, required this.startLocation, required this.endLocation, this.stops, required this.ridername, required this.paymenttype, this.rideStartTime, this.rideEndTime, this.durationInMinutes, this.totalPrice, required this.rideStatus, required this.rideType, required this.timestamp, required this.riderusername, this.couponcode, this.couponvalue, this.couponpercentage, this.iskidsride, this.rideclienttype, this.programid, }); factory Ride.fromJson(Map json) { return Ride( id: json['id'] ?? 0, programid: json['programid'], drivername: json['driverName']??"not_exist", startLocationName: json['startLocationName']??"not_exist", riderphonenumber: json['riderphonenumber']??"not_exist", endLocationName: json['endLocationName']??"not_exist", driverusername: json['driverUserName']??"not_exist", userimageurl: json['userimageurl']??"not_exist", driverimageurl: json['driverimageurl']??"not_exist", drivercarmodel: json['drivercarmodel']??"not_exist", licenseplate: json['licenseplate']??"not_exist", driverphonenumber: json['driverphonenumber']??"not_exist", iskidsride: json['iskidsride']??false, driverId: json['driverId'], currentridetypesocket: json['currentridetypesocket'], riderusername: json['riderusername'], ridername: json['ridername'], paymenttype: json['paymenttype'], userId: json['userId'] ?? 0, startLocation: json['startLocation'] ?? '', endLocation: json['endLocation'] ?? '', stops: (json['stops'] is List) ? (json['stops'] as List) .map((stop) => RideStop.fromJson(stop)) .toList() : null, rideStartTime: json['rideStartTime'] != null ? DateTime( // Use DateTime constructor for local time json['rideStartTime'][0], json['rideStartTime'][1], json['rideStartTime'][2], json['rideStartTime'][3], json['rideStartTime'][4], ) : null, rideEndTime: json['rideEndTime'] != null ? DateTime.parse(json['rideEndTime']) : null, durationInMinutes: json['durationInMinutes']??0.0, totalPrice: json['totalPrice']?.toDouble(), rideStatus: json['rideStatus'] ?? '', rideType: json['rideType'] ?? '', geometryhash: json['geometryhash'] ?? '', encodedpolyline: json['encodedpolyline'] ?? '', averagedriverrating: json['averagedriverrating'] ?? 0.0, distancekm: json['distancekm'] ?? 0.0, timestamp: DateTime.fromMillisecondsSinceEpoch(json['timestamp']), couponcode: json['couponcode'], couponvalue: json['couponvalue']??0.0, couponpercentage: json['couponpercentage']??0.0, rideclienttype: json['rideclienttype'] != null ? json['rideclienttype']:"USER", ); } Map toJson() { return { 'id': id, 'driverId': driverId, 'userId': userId, 'startLocation': startLocation, 'endLocation': endLocation, 'distancekm': distancekm, 'riderusername': riderusername, 'encodedpolyline': encodedpolyline, 'averagedriverrating': averagedriverrating, 'stops': stops?.map((stop) => stop.toJson()).toList(), 'rideStartTime': rideStartTime?.toIso8601String(), 'rideEndTime': rideEndTime?.toIso8601String(), 'durationInMinutes': durationInMinutes, 'totalPrice': totalPrice, 'rideStatus': rideStatus, 'currentridetypesocket': currentridetypesocket, 'rideType': rideType, 'timestamp': timestamp.millisecondsSinceEpoch, 'couponcode': couponcode, 'couponvalue': couponvalue, 'couponpercentage': couponpercentage, 'iskidsride': iskidsride, }; } @override String toString() { return 'Ride{id: $id, driverId: $driverId, userId: $userId, averagedriverrating: $averagedriverrating, currentridetypesocket: $currentridetypesocket, distancekm: $distancekm, startLocation: $startLocation, riderphonenumber: $riderphonenumber, endLocation: $endLocation, stops: $stops, rideStartTime: $rideStartTime, rideEndTime: $rideEndTime, durationInMinutes: $durationInMinutes, totalPrice: $totalPrice, rideStatus: $rideStatus, rideType: $rideType, geometryhash: $geometryhash, encodedpolyline: $encodedpolyline, ridername: $ridername, riderusername: $riderusername, paymenttype: $paymenttype, drivername: $drivername, driverimageurl: $driverimageurl, drivercarmodel: $drivercarmodel, licenseplate: $licenseplate, driverphonenumber: $driverphonenumber, driverusername: $driverusername, userimageurl: $userimageurl, startLocationName: $startLocationName, endLocationName: $endLocationName, iskidsride: $iskidsride, rideclienttype: $rideclienttype, programid: $programid, timestamp: $timestamp}'; } }