master
Sneha 2 months ago
parent 44ccc525fb
commit 8dbe16261b

@ -139,6 +139,8 @@ class AppSettings{
static String verifyPhnUrl = host + 'phone'; static String verifyPhnUrl = host + 'phone';
static String uploadPicUrl = host + 'uploads-user'; static String uploadPicUrl = host + 'uploads-user';
static String getOrderRequestsFromUsersUrl = host + 'getuserRequestbookingsforsupplier'; static String getOrderRequestsFromUsersUrl = host + 'getuserRequestbookingsforsupplier';
static String acceptOrderRequestsUrl = host + 'request-booking-with-charges';
static String formDouble(dynamic s) { static String formDouble(dynamic s) {
var comma = NumberFormat('#,##,###.##', 'en_IN'); var comma = NumberFormat('#,##,###.##', 'en_IN');
@ -223,6 +225,13 @@ class AppSettings{
return _headers; return _headers;
} }
//request headers without content type
static Future<Map<String, String>> buildPutRequestHeaders() async {
Map<String, String> _headers = new Map<String, String>();
_headers['Authorization'] = accessToken;
return _headers;
}
/*Apis Starts here*/ /*Apis Starts here*/
static Future<bool> login(payload) async { static Future<bool> login(payload) async {
@ -380,6 +389,30 @@ class AppSettings{
} }
} }
static Future<bool> acceptOrderRequests(payload,dbId) async {
var uri = Uri.parse(acceptOrderRequestsUrl+'/'+dbId+'/supplier/quote');
var response = await http.post(uri, body: json.encode(payload), headers: await buildRequestHeaders());
if (response.statusCode == 200) {
return true;
} else if (response.statusCode == 401) {
bool status = await AppSettings.resetToken();
if (status) {
response = await http.post(uri,body: json.encode(payload), headers: await buildRequestHeaders());
if (response.statusCode == 200) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
/*Apis ends here*/ /*Apis ends here*/

@ -11,8 +11,8 @@ class AcceptOrderRequests extends StatefulWidget {
} }
class _AcceptOrderRequestsState extends State<AcceptOrderRequests> { class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
double advancePayable=0.0; int advancePayable = 0;
double advance=0.0; int advance =0;
double amountToPayAfterDelivery = 0.0; double amountToPayAfterDelivery = 0.0;
double totalFare = 0.0; double totalFare = 0.0;
@ -26,7 +26,6 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
amountToPayAfterDelivery = totalFare - advancePayable; amountToPayAfterDelivery = totalFare - advancePayable;
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -72,7 +71,6 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
color: Color(0XFFFFFFFF), color: Color(0XFFFFFFFF),
height: 24, height: 24,
width: 24, width: 24,
), ),
), ),
), ),
@ -125,7 +123,8 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), padding: const EdgeInsets.symmetric(
horizontal: 8, vertical: 4),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0XFFFFFFFF), color: Color(0XFFFFFFFF),
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
@ -134,26 +133,30 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
width: 0.5, width: 0.5,
), ),
), ),
child: Text( child: Text(widget.status.status,
widget.status.status, style: fontTextStyle(
style: fontTextStyle(12, widget.status.statusColor, FontWeight.w500) 12,
), widget.status.statusColor,
FontWeight.w500)),
), ),
Text( Text(
widget.order.building_name, widget.order.building_name,
style: fontTextStyle(20, const Color(0XFF2D2E30), FontWeight.w600), style: fontTextStyle(
20, const Color(0XFF2D2E30), FontWeight.w600),
), ),
SizedBox(height: 4), SizedBox(height: 4),
Text( Text(
widget.order.displayAddress, widget.order.displayAddress,
style: fontTextStyle(12, const Color(0XFF939495), FontWeight.w400), style: fontTextStyle(
12, const Color(0XFF939495), FontWeight.w400),
), ),
], ],
), ),
const Spacer(), const Spacer(),
Text( Text(
widget.order.distanceInKm.toString() + 'Km', widget.order.distanceInKm.toString() + 'Km',
style: fontTextStyle(12, const Color(0XFF939495), FontWeight.w400), style: fontTextStyle(
12, const Color(0XFF939495), FontWeight.w400),
), ),
], ],
), ),
@ -161,7 +164,9 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
), ),
], ],
), ),
SizedBox(height:MediaQuery.of(context).size.height * .08,), SizedBox(
height: MediaQuery.of(context).size.height * .08,
),
/// 🔹 Order Details /// 🔹 Order Details
Padding( Padding(
@ -171,33 +176,59 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
children: [ children: [
Text( Text(
"ORDER DETAILS", "ORDER DETAILS",
style: fontTextStyle(10, const Color(0XFF2D2E30), FontWeight.w600), style: fontTextStyle(
10, const Color(0XFF2D2E30), FontWeight.w600),
),
SizedBox(
height: MediaQuery.of(context).size.height * .011,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .011,),
_detailTwoRow( _detailTwoRow(
"Tanker Price", "${AppSettings.formDouble(widget.order.quoted_amount) ?? ''}","images/financialsBottomIcon.png", "Tanker Price",
"", "","" "${AppSettings.formDouble(widget.order.quoted_amount) ?? ''}",
"images/financialsBottomIcon.png",
"",
"",
""),
SizedBox(
height: MediaQuery.of(context).size.height * .02,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .02,),
_detailTwoRow( _detailTwoRow(
"Water Type", "${widget.order.type_of_water}","images/water.png", "Water Type",
"Date of Delivery", "${widget.order.time}","images/calendar_appbar.png", "${widget.order.type_of_water}",
"images/water.png",
"Date of Delivery",
"${widget.order.time}",
"images/calendar_appbar.png",
),
SizedBox(
height: MediaQuery.of(context).size.height * .02,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .02,),
_detailTwoRow( _detailTwoRow(
"Capacity", "${widget.order.capacity}","images/capacity.png", "Capacity",
"Time of Delivery", "${widget.order.averageTime}","images/time.png", "${widget.order.capacity}",
"images/capacity.png",
"Time of Delivery",
"${widget.order.averageTime}",
"images/time.png",
),
SizedBox(
height: MediaQuery.of(context).size.height * .02,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .02,),
_detailTwoRow( _detailTwoRow(
"Quantity", "${widget.order.quantity}","images/quantity.png", "Quantity",
"Booking Charges", advance.toString(),"images/advance.png", "${widget.order.quantity}",
"images/quantity.png",
"Booking Charges",
advance.toString(),
"images/advance.png",
), ),
], ],
), ),
), ),
SizedBox(height:MediaQuery.of(context).size.height * .008,), SizedBox(
height: MediaQuery.of(context).size.height * .008,
),
/// 🔹 Additional Details /// 🔹 Additional Details
Padding( Padding(
padding: EdgeInsets.fromLTRB(16, 0, 16, 16), padding: EdgeInsets.fromLTRB(16, 0, 16, 16),
@ -206,21 +237,22 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
children: [ children: [
Text( Text(
"ADDITIONAL DETAILS", "ADDITIONAL DETAILS",
style: fontTextStyle(10, const Color(0XFF2D2E30), FontWeight.w600), style: fontTextStyle(
10, const Color(0XFF2D2E30), FontWeight.w600),
),
SizedBox(
height: MediaQuery.of(context).size.height * .011,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .011,),
Text( Text(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, " "Lorem ipsum dolor sit amet, consectetur adipiscing elit, "
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut " "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut "
"aliquip ex ea commodo consequat.", "aliquip ex ea commodo consequat.",
style: fontTextStyle(12, const Color(0XFF646566), FontWeight.w400), style: fontTextStyle(
12, const Color(0XFF646566), FontWeight.w400),
), ),
], ],
) )),
),
/// 🔹 Payment Summary /// 🔹 Payment Summary
Padding( Padding(
@ -230,24 +262,39 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
children: [ children: [
Text( Text(
"PAYMENT SUMMARY", "PAYMENT SUMMARY",
style: fontTextStyle(10, const Color(0XFF2D2E30), FontWeight.w600), style: fontTextStyle(
10, const Color(0XFF2D2E30), FontWeight.w600),
),
SizedBox(
height: MediaQuery.of(context).size.height * .011,
),
_detailRow("Tanker Price",
"${AppSettings.formDouble(widget.order.quoted_amount) ?? ''}"),
SizedBox(
height: MediaQuery.of(context).size.height * .004,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .011,),
_detailRow("Tanker Price", "${AppSettings.formDouble(widget.order.quoted_amount) ?? ''}"),
SizedBox(height:MediaQuery.of(context).size.height * .004,),
_detailRow("Booking Charges", "" + advance.toString()), _detailRow("Booking Charges", "" + advance.toString()),
SizedBox(height:MediaQuery.of(context).size.height * .004,), SizedBox(
height: MediaQuery.of(context).size.height * .004,
),
_detailRow("Total Amount", "" + totalFare.toString()), _detailRow("Total Amount", "" + totalFare.toString()),
SizedBox(height:MediaQuery.of(context).size.height * .004,), SizedBox(
Divider(color: Color(0XFF646566), height: MediaQuery.of(context).size.height * .004,
thickness: 0.3,), ),
SizedBox(height:MediaQuery.of(context).size.height * .004,), Divider(
_detailRow("Booking Charges Payable",'${AppSettings.formDouble(advancePayable.toString()) ?? ''}' color: Color(0XFF646566),
thickness: 0.3,
),
SizedBox(
height: MediaQuery.of(context).size.height * .004,
), ),
SizedBox(height:MediaQuery.of(context).size.height * .004,), _detailRow("Booking Charges Payable",
_detailRow("Amount to Pay (After Delivery)", '${AppSettings.formDouble(amountToPayAfterDelivery.toString()) ?? ''}' '${AppSettings.formDouble(advancePayable.toString()) ?? ''}'),
SizedBox(
height: MediaQuery.of(context).size.height * .004,
), ),
_detailRow("Amount to Pay (After Delivery)",
'${AppSettings.formDouble(amountToPayAfterDelivery.toString()) ?? ''}'),
], ],
), ),
), ),
@ -272,7 +319,8 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
foregroundColor: Color(0XFF000000), foregroundColor: Color(0XFF000000),
backgroundColor: Color(0xFFF1F1F1), backgroundColor: Color(0xFFF1F1F1),
side: BorderSide(color: Color(0xFFF1F1F1)), side: BorderSide(color: Color(0xFFF1F1F1)),
padding: EdgeInsets.symmetric(vertical: 10), // uniform height padding:
EdgeInsets.symmetric(vertical: 10), // uniform height
), ),
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
@ -293,15 +341,14 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
SizedBox(width: 4), SizedBox(width: 4),
Text( Text(
"Edit Order", "Edit Order",
style: fontTextStyle(14, const Color(0XFF000000), FontWeight.w400), style: fontTextStyle(
14, const Color(0XFF000000), FontWeight.w400),
), ),
], ],
), ),
), ),
), ),
SizedBox(width: 8), SizedBox(width: 8),
Expanded( Expanded(
child: OutlinedButton( child: OutlinedButton(
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
@ -310,7 +357,41 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
side: BorderSide(color: Color(0XFFE2483D)), side: BorderSide(color: Color(0XFFE2483D)),
padding: EdgeInsets.symmetric(vertical: 10), padding: EdgeInsets.symmetric(vertical: 10),
), ),
onPressed: () {}, onPressed: ()async {
AppSettings.preLoaderDialog(context);
bool isOnline = await AppSettings.internetConnectivity();
if (isOnline) {
var payload = new Map<String, dynamic>();
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["delivery_charges"] = advance;
payload["action"] = 'reject';
bool status = await AppSettings.acceptOrderRequests(
payload, widget.order.dbId);
try {
if (status) {
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longSuccessToast("Order request rejected Successfully");
Navigator.pop(context, true);
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("reject of order request Failed");
}
} catch (e) {
Navigator.of(context,rootNavigator: true).pop();
print(e);
}
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Please Check internet");
}
},
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
@ -318,15 +399,14 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
SizedBox(width: 4), SizedBox(width: 4),
Text( Text(
"Reject", "Reject",
style: fontTextStyle(14, const Color(0XFF000000), FontWeight.w400), style: fontTextStyle(
14, const Color(0XFF000000), FontWeight.w400),
), ),
], ],
), ),
), ),
), ),
SizedBox(width: 8), SizedBox(width: 8),
Expanded( Expanded(
child: ElevatedButton( child: ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
@ -334,10 +414,39 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
foregroundColor: Color(0XFFFFFFFF), foregroundColor: Color(0XFFFFFFFF),
padding: EdgeInsets.symmetric(vertical: 10), padding: EdgeInsets.symmetric(vertical: 10),
), ),
onPressed: () { onPressed: () async {
AppSettings.preLoaderDialog(context);
bool isOnline = await AppSettings.internetConnectivity();
if (isOnline) {
var payload = new Map<String, dynamic>();
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["delivery_charges"] = advance;
payload["action"] = 'accept';
bool status = await AppSettings.acceptOrderRequests(
payload, widget.order.dbId);
try {
if (status) {
Navigator.of(context,rootNavigator: true).pop();
Navigator.pop(context, true);
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Accept of order request Failed");
}
} catch (e) {
Navigator.of(context,rootNavigator: true).pop();
print(e);
}
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Please Check internet");
}
}, },
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -346,17 +455,15 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
SizedBox(width: 4), SizedBox(width: 4),
Text( Text(
"Accept", "Accept",
style: fontTextStyle(14, const Color(0XFFFFFFFF), FontWeight.w400), style: fontTextStyle(
14, const Color(0XFFFFFFFF), FontWeight.w400),
), ),
], ],
), ),
), ),
), ),
], ],
) )),
),
); );
} }
@ -367,10 +474,14 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text(title, Text(
style: fontTextStyle(12, const Color(0XFF646566), FontWeight.w400),), title,
Text(value, style: fontTextStyle(12, const Color(0XFF646566), FontWeight.w400),
style: fontTextStyle(12, const Color(0XFF2D2E30), FontWeight.w500),), ),
Text(
value,
style: fontTextStyle(12, const Color(0XFF2D2E30), FontWeight.w500),
),
], ],
), ),
); );
@ -408,8 +519,14 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text(t, style: titleStyle, maxLines: 1, overflow: TextOverflow.ellipsis), Text(t,
Text(v, style: valueStyle, maxLines: 1, overflow: TextOverflow.ellipsis), style: titleStyle,
maxLines: 1,
overflow: TextOverflow.ellipsis),
Text(v,
style: valueStyle,
maxLines: 1,
overflow: TextOverflow.ellipsis),
], ],
), ),
) )
@ -430,7 +547,4 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
), ),
); );
} }
} }

@ -212,8 +212,40 @@ class _EditOrderRequestsState extends State<EditOrderRequests> {
borderRadius: BorderRadius.circular(24), // <-- radius here borderRadius: BorderRadius.circular(24), // <-- radius here
), ),
), ),
onPressed: () { onPressed: () async{
AppSettings.preLoaderDialog(context);
bool isOnline = await AppSettings.internetConnectivity();
if (isOnline) {
var payload = new Map<String, dynamic>();
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["delivery_charges"] = widget.advance;
payload["action"] = 'accept';
bool status = await AppSettings.acceptOrderRequests(
payload, widget.order.dbId);
try {
if (status) {
Navigator.of(context,rootNavigator: true).pop();
Navigator.pop(context, true);
Navigator.pop(context, true);
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Accept of order request Failed");
}
} catch (e) {
Navigator.of(context,rootNavigator: true).pop();
print(e);
}
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Please Check internet");
}
}, },
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,

@ -43,11 +43,25 @@ class _OrderRequestsPageState extends State<OrderRequestsPage> {
} }
/// 🔹 Helper to get status based on order time /// 🔹 Helper to get status based on order time
Map<String, dynamic> getOrderStatus(String orderTimeStr) { Map<String, dynamic> getOrderStatus(String orderTimeStr, String dbStatus) {
String status = "Invalid time"; String status = "Invalid time";
Color color = Colors.grey; Color color = Colors.grey;
if (orderTimeStr.isEmpty) return {"status": status, "color": color}; final dbLower = (dbStatus ?? "").toLowerCase().trim();
// Statuses that ignore time
if (dbLower == "reject") return {"status": "Rejected", "color": const Color(0XFFE2483D)};
if (dbLower == "accept") return {"status": "Accepted", "color": const Color(0XFF0A9E04)};
if (dbLower == "delivered") return {"status": "Delivered", "color": const Color(0XFF2E7D32)};
if (dbLower == "cancelled" || dbLower == "cancelled_by_user" || dbLower == "cancelled_by_supplier") {
return {"status": "Cancelled", "color": const Color(0XFF757575)};
}
// Time-based status (only if not rejected/accepted/etc.)
if (orderTimeStr.isEmpty) {
// fallback for pending without time
return {"status": "Pending", "color": const Color(0XFFE56910)};
}
try { try {
final format = DateFormat("dd-MM-yyyy HH:mm"); final format = DateFormat("dd-MM-yyyy HH:mm");
@ -55,29 +69,30 @@ class _OrderRequestsPageState extends State<OrderRequestsPage> {
final now = DateTime.now(); final now = DateTime.now();
final difference = now.difference(orderTime); final difference = now.difference(orderTime);
if (difference.inHours < 2) { if (difference.inMinutes < 2) {
status = "New"; status = "New";
color = const Color(0XFF1D7AFC); // Blue color = const Color(0XFF1D7AFC); // Blue
} else if (difference.inHours < 240) { } else if (difference.inMinutes < 30) {
int remaining = 240 - difference.inHours; final remaining = 30 - difference.inMinutes;
status = "Expires in ${remaining}h"; status = "Expires in ${remaining}m"; // show time for pending
if (difference.inHours < 6) { color = difference.inMinutes < 10
color = const Color(0XFFE56910); // Less urgent ? const Color(0XFFE56910)
: const Color(0XFFE2483D);
} else { } else {
color = const Color(0XFFE2483D); // More urgent // Expired overrides pending
}
}
else {
status = "Expired"; status = "Expired";
color = const Color(0XFF757575); // Grey color = const Color(0XFF757575);
} }
} catch (e) { } catch (e) {
debugPrint("⚠️ Error parsing time: $e"); debugPrint("⚠️ Error parsing time: $e");
status = "Invalid time";
color = Colors.grey;
} }
return {"status": status, "color": color}; return {"status": status, "color": color};
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -100,7 +115,7 @@ class _OrderRequestsPageState extends State<OrderRequestsPage> {
itemCount: orderRequestsList.length, itemCount: orderRequestsList.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final order = orderRequestsList[index]; final order = orderRequestsList[index];
final statusMap = getOrderStatus(order.time ?? ""); final statusMap = getOrderStatus(order.time ?? "", order.status ?? "");
final status = statusMap['status']; final status = statusMap['status'];
final color = statusMap['color']; final color = statusMap['color'];
@ -113,20 +128,26 @@ class _OrderRequestsPageState extends State<OrderRequestsPage> {
price: "${AppSettings.formDouble(order.quoted_amount) ?? ''}", price: "${AppSettings.formDouble(order.quoted_amount) ?? ''}",
); );
final isExpired = status.toLowerCase() == "expired"; final noNavigateStatuses = ["expired", "rejected", "accepted", "delivered", "cancelled"];
final disableNavigation = noNavigateStatuses.contains(status.toLowerCase());
final card = OrderCard(order: cardModel); final card = OrderCard(order: cardModel);
return isExpired return disableNavigation
? card ? card // just show the card, no tap
: GestureDetector( : GestureDetector(
onTap: () { onTap: () async {
Navigator.push( final result = await Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (_) => AcceptOrderRequests(order: order,status:cardModel), builder: (context) => AcceptOrderRequests(order: order, status: cardModel),
), ),
); );
// If result indicates API reload
if (result == true) {
_fetchOrders();
}
}, },
child: card, child: card,
); );

@ -16,6 +16,8 @@ class OrderRequestsModel {
double lng=0; double lng=0;
double distanceInMeters=0; double distanceInMeters=0;
double distanceInKm=0.0; double distanceInKm=0.0;
String dbId = '';
String status='';
OrderRequestsModel(); OrderRequestsModel();
@ -23,13 +25,18 @@ class OrderRequestsModel {
OrderRequestsModel rtvm = new OrderRequestsModel(); OrderRequestsModel rtvm = new OrderRequestsModel();
rtvm.building_name = json['customer_details']['buildingName'] ?? ''; rtvm.building_name = json['customer_details']['buildingName'] ?? '';
rtvm.dbId = json['_id']?? '';
rtvm.address = json['customer_details']['profile']['address1'] ?? ''; rtvm.address = json['customer_details']['profile']['address1'] ?? '';
rtvm.type_of_water = json['type_of_water'] ?? ''; rtvm.type_of_water = json['type_of_water'] ?? '';
rtvm.capacity = json['capacity'] ?? ''; rtvm.capacity = json['capacity'] ?? '';
rtvm.quantity = json['quantity']?? ''; rtvm.quantity = json['quantity']?? '';
rtvm.averageTime = json['time'] ?? ''; rtvm.averageTime = json['time'] ?? '';
rtvm.time = json['my_supplier_entry']['time'] ?? ''; rtvm.time = json['my_supplier_entry']['time'] ?? '';
rtvm.status = json['my_supplier_entry']['status'] ?? '';
rtvm.quoted_amount = json['my_supplier_entry']['quoted_amount'].toString() ?? ''; rtvm.quoted_amount = json['my_supplier_entry']['quoted_amount'].toString() ?? '';
rtvm.lng=json['customer_details']['longitude'] ?? 0.0;
rtvm.lat=json['customer_details']['latitude'] ?? 0.0;
// Split and trim // Split and trim
List<String> parts = rtvm.address.split(',').map((e) => e.trim()).toList(); List<String> parts = rtvm.address.split(',').map((e) => e.trim()).toList();
@ -37,13 +44,20 @@ class OrderRequestsModel {
if (parts.length >= 2) { if (parts.length >= 2) {
rtvm.displayAddress = parts[parts.length -4]; // "Banjara Hills" rtvm.displayAddress = parts[parts.length -4]; // "Banjara Hills"
} }
rtvm.distanceInMeters = double.parse((Geolocator.distanceBetween( // Distance in meters
rtvm.distanceInMeters = double.parse(
Geolocator.distanceBetween(
rtvm.lat, rtvm.lat,
rtvm.lng, rtvm.lng,
AppSettings.supplierLatitude, AppSettings.supplierLatitude,
AppSettings.supplierLongitude AppSettings.supplierLongitude,
) / 1000).toStringAsFixed(2)); ).toStringAsFixed(2),
rtvm.distanceInKm = double.parse(( rtvm.distanceInMeters / 1000).toStringAsFixed(1)); );
// Distance in km
rtvm.distanceInKm = double.parse(
(rtvm.distanceInMeters / 1000).toStringAsFixed(2),
);
return rtvm; return rtvm;
} }

Loading…
Cancel
Save