callSubmitApi method
Implementation
Future<void> callSubmitApi(String cartId, double totalRetailprice,
double availableCreditLimit) async {
BuildContext context = Get.context!;
if (totalRetailprice > availableCreditLimit) {
// if (totalRetailprice > availableCreditLimit) {
Helper.messageDialog(Get.context!, "Can't proceed with submission",
"Your available credit balance is less than the total amount");
} else {
try {
Helper.progressDialog(context, "Please wait..");
List<RelatedParty> relatedPart = [];
relatedPart.add(RelatedParty(
id: math.Random().nextInt(100) + 50,
name: storage.read("WAREHOUSE_ID"),
role: "distributorWarehouseId"));
relatedPart.add(RelatedParty(
id: math.Random().nextInt(10),
name: storage.read("WAREHOUSE_NAME"),
role: "distributorWarehouseName"));
CollectStockSubmitRequest request = CollectStockSubmitRequest(
fieldForceAgentId: fieldForceAgentId,
fromPartyId: fromPartyId,
scanbyParty: scanByParty,
fromPartyType: "DISTRIBUTOR",
toPartyType: "FIELD_FORCE_AGENT",
toPartyName: toPartyName,
toPartyId: toPartyId,
relatedParty: relatedPart);
log(request.toJson().toString());
String requestTime = "";
String responseTime = "";
await ApiClient(
baseUrl: ApiConstant.posBFF,
connectTimeout: Constants.defaultSubmitTimeout,
receiveTimeout: Constants.defaultSubmitTimeout,
onFetchRequestTime: (time) {
requestTime = time;
},
onFetchResponseTime: (time) {
responseTime = time;
},
screenName: "collectStockSubmit",
buttonName: "submit",
)
.ownershipTransferForAssets(
xUserToken: storage.read("ACCESS_TOKEN"),
body: request,
type: "SCAN_IN",
cartId: cartId)
.then((response) {
Helper.logEvent(
"RESPONSE_EVENT",
success: true,
endPoint: "${Api.ownershipTransferForAssets}/SCAN_IN/carts/$cartId",
responseDate: responseTime,
screenName: "collectStockSubmit",
buttonName: "submit",
requestDate: requestTime,
);
OwnershipChangeModel model = response;
if (model.status == "POS200") {
Get.back();
Get.to(() => CollectStockSuccess(model: model));
} else {
Get.back();
if (model.errors != null) {
Helper.messageDialog(
Get.context!,
model.errors![0].code ?? "Try again!!",
model.errors![0].localeMessage ?? "Something went wrong");
}
}
}).catchError((error) {
print(error.toString());
Get.back();
if (error.runtimeType == DioException) {
var response = error as DioException;
if (response.response?.statusCode == 504) {
print(
"error ownershipTransferForAssets: ${response.response?.statusCode}");
DateTime now = DateTime.now();
// Convert current time to milliseconds since epoch
double currentTimeStamp = now.millisecondsSinceEpoch / 1000;
// Use the existing method to format the date and time
OwnershipChangeModel model = OwnershipChangeModel();
Get.to(
() => CollectStockSuccess(
model: model,
isTimeOut: true,
timestamp: currentTimeStamp,
),
);
// Handle the 504 status code here
// Helper.messageDialog(Get.context!, "Gateway Timeout",
// "The server took too long to respond. Please try again later.");
} else {
print(
"error ownershipTransferForAssets: ${response.response?.statusCode}",
);
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
}
} else {
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
}
});
} catch (err, stacktrace) {
Get.close(1);
print(stacktrace);
}
}
}