master
Sneha 2 months ago
parent 8cd6b1463a
commit 9dc86047ed

@ -189,10 +189,7 @@ class AppSettings{
static String respondRecurringBookingUrl = host + 'customer/recurring/respond'; static String respondRecurringBookingUrl = host + 'customer/recurring/respond';
static String getSupplierBookingsUrl = host + 'getuserRequestbookingsforplansforsupplier'; static String getSupplierBookingsUrl = host + 'getuserRequestbookingsforplansforsupplier';
static String recurringDateActionUrl = host + 'recurring-booking/date-action'; static String recurringDateActionUrl = host + 'recurring-booking/date-action';
static String cancelTankerBookingUrl = host + 'update-tank-cancel-status';
static int driverAvailableCount = 0; static int driverAvailableCount = 0;
static int driverOnDeliveryCount = 0; static int driverOnDeliveryCount = 0;
@ -631,7 +628,14 @@ class AppSettings{
// display error toast // display error toast
return false; 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(); bool status = await AppSettings.resetToken();
if (status) { if (status) {
response = await http.post(uri, 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*/ /*Apis ends here*/
//save data local //save data local

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

@ -498,8 +498,8 @@ class OrderCard extends StatelessWidget {
), ),
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () async{
Navigator.push( /*Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => DeliveryUpdatesPage( builder: (context) => DeliveryUpdatesPage(
@ -507,7 +507,20 @@ class OrderCard extends StatelessWidget {
initialStatus: order.status, 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( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(

@ -152,8 +152,42 @@ class _CancelOrderScreenState extends State<CancelOrderScreen> {
// Primary // Primary
Expanded( Expanded(
child: ElevatedButton( child: ElevatedButton(
onPressed: () { onPressed: () async {
// TODO: call cancel API 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( style: ElevatedButton.styleFrom(
backgroundColor: const Color(0XFFE2483D), backgroundColor: const Color(0XFFE2483D),

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

@ -18,6 +18,7 @@ class OrderRequestsModel {
double distanceInKm=0.0; double distanceInKm=0.0;
String dbId = ''; String dbId = '';
String status=''; String status='';
String date='';
OrderRequestsModel(); OrderRequestsModel();
@ -26,6 +27,7 @@ class OrderRequestsModel {
rtvm.building_name = json['customer_details']['buildingName'] ?? ''; rtvm.building_name = json['customer_details']['buildingName'] ?? '';
rtvm.dbId = json['_id']?? ''; rtvm.dbId = json['_id']?? '';
rtvm.date = json['date']?? '';
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'] ?? '';

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

Loading…
Cancel
Save