master
Sneha 2 months ago
parent 8cd6b1463a
commit 9dc86047ed

@ -189,10 +189,7 @@ class AppSettings{
static String respondRecurringBookingUrl = host + 'customer/recurring/respond';
static String getSupplierBookingsUrl = host + 'getuserRequestbookingsforplansforsupplier';
static String recurringDateActionUrl = host + 'recurring-booking/date-action';
static String cancelTankerBookingUrl = host + 'update-tank-cancel-status';
static int driverAvailableCount = 0;
static int driverOnDeliveryCount = 0;
@ -631,7 +628,14 @@ class AppSettings{
// display error toast
return false;
}
} else if (response.statusCode == 401) {
}
else if (response.statusCode == 2083) {
AppSettings.longFailedToast('Tanker name already exists');
return false;
}
else if (response.statusCode == 401) {
bool status = await AppSettings.resetToken();
if (status) {
response = await http.post(uri,
@ -1447,6 +1451,50 @@ class AppSettings{
}
}
static Future<bool> cancelTankerBooking(
String bookingId,
String status,
String reason,
) async {
try {
var uri = Uri.parse("$cancelTankerBookingUrl/$bookingId");
var payload = json.encode({
"status": status, // "cancelled"
"reason": reason,
});
var response = await http.put(
uri,
body: payload,
headers: await buildRequestHeaders(),
);
if (response.statusCode == 200) {
return true;
}
// 🔁 Token expired retry
if (response.statusCode == 401) {
bool refreshed = await resetToken();
if (!refreshed) return false;
response = await http.put(
uri,
body: payload,
headers: await buildRequestHeaders(),
);
return response.statusCode == 200;
}
return false;
} catch (e) {
debugPrint("❌ cancelTankerBooking error: $e");
return false;
}
}
/*Apis ends here*/
//save data local

@ -197,7 +197,7 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
"${widget.order.type_of_water}",
"images/water.png",
"Date of Delivery",
"${widget.order.time}",
"${widget.order.date}",
"images/calendar_appbar.png",
),
SizedBox(
@ -367,7 +367,7 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["delivery_charges"] = advance;
payload["action"] = 'rejected';
payload["action"] = 'reject';
bool status = await AppSettings.acceptOrderRequests(
payload, widget.order.dbId);
@ -424,7 +424,7 @@ class _AcceptOrderRequestsState extends State<AcceptOrderRequests> {
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["delivery_charges"] = advance;
payload["action"] = 'accepted';
payload["action"] = 'accept';
bool status = await AppSettings.acceptOrderRequests(
payload, widget.order.dbId);

@ -498,8 +498,8 @@ class OrderCard extends StatelessWidget {
),
),
GestureDetector(
onTap: () {
Navigator.push(
onTap: () async{
/*Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DeliveryUpdatesPage(
@ -507,7 +507,20 @@ class OrderCard extends StatelessWidget {
initialStatus: order.status,
),
),
);*/
final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CancelOrderScreen(
order: order,
status: order.status,
),
),
);
if (result == true) {
onRefresh?.call();
}
},
child: Container(
decoration: BoxDecoration(

@ -152,8 +152,42 @@ class _CancelOrderScreenState extends State<CancelOrderScreen> {
// Primary
Expanded(
child: ElevatedButton(
onPressed: () {
// TODO: call cancel API
onPressed: () async {
if (selectedReason == null) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Please select a reason")),
);
return;
}
String finalReason =
selectedReason == "Other"
? reasonController.text.trim()
: selectedReason!;
if (finalReason.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Please enter cancellation reason")),
);
return;
}
bool success = await AppSettings.cancelTankerBooking(
widget.order.dbId,
"cancel",
finalReason,
);
if (success) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Order cancelled successfully")),
);
Navigator.pop(context, true);
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Failed to cancel order")),
);
}
},
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0XFFE2483D),

@ -28,7 +28,7 @@ class _EditOrderRequestsState extends State<EditOrderRequests> {
quantityController.text='${widget.order.quantity}';
capacityController.text='${widget.order.capacity}';
timeController.text='${widget.order.averageTime}';
dateController.text='${widget.order.time}';
dateController.text='${widget.order.date}';
advanceController.text='${widget.advance}';
// Update summary in real-time as user types
tankerPriceController.addListener(() => setState(() {}));
@ -220,7 +220,7 @@ class _EditOrderRequestsState extends State<EditOrderRequests> {
if (isOnline) {
var payload = new Map<String, dynamic>();
payload["supplierId"] = AppSettings.supplierId;
payload["amount"] = int.parse(widget.order.quoted_amount);
payload["amount"] = int.parse(tankerPriceController.text);
payload["delivery_charges"] = widget.advance;
payload["action"] = 'accept';

@ -18,6 +18,7 @@ class OrderRequestsModel {
double distanceInKm=0.0;
String dbId = '';
String status='';
String date='';
OrderRequestsModel();
@ -26,6 +27,7 @@ class OrderRequestsModel {
rtvm.building_name = json['customer_details']['buildingName'] ?? '';
rtvm.dbId = json['_id']?? '';
rtvm.date = json['date']?? '';
rtvm.address = json['customer_details']['profile']['address1'] ?? '';
rtvm.type_of_water = json['type_of_water'] ?? '';
rtvm.capacity = json['capacity'] ?? '';

@ -37,7 +37,7 @@ class PlansModel {
return PlansModel(
id: json["_id"],
status: json["status"] == "processed" ? "Active" : "Pending",
status: json["status"].toString().toLowerCase() == "payment_completed" ? "Active" : "Pending",
apartment: json["customerId"],
liters: "${json["capacity"]} - ${json["type_of_water"]}",
price: "${supplier["quoted_amount"] ?? "--"}",

Loading…
Cancel
Save