orderCreation method

dynamic orderCreation(
  1. BuildContext context,
  2. String cartId,
  3. String paymentId,
  4. String transactionType, {
  5. required bool isBank,
  6. bool isCashOnDelivery = false,
})

Implementation

orderCreation(
  BuildContext context,
  String cartId,
  String paymentId,
  String transactionType, {
  required bool isBank,
  bool isCashOnDelivery = false,
}) async {
  try {
    Helper.progressDialog(context, "Please wait..");
    // printLogs(dio);
    dio.options = BaseOptions(
      receiveTimeout: const Duration(
        seconds: Constants.defaultSubmitTimeout,
      ),
      connectTimeout: const Duration(
        seconds: Constants.defaultSubmitTimeout,
      ),
      followRedirects: true,
    );
    var data_ = json.encode(
      {
        "partnerId": partnerId,
        "partnerType": storage.read("LEVEL_NAME"),
        "distributeId": partnerId,
        "distributeType": storage.read("LEVEL_NAME"),
        "paymentTransactionId": paymentId,
        "billingOrShippingAddressId": "",
        "transactionRemarks": "",
        "purchaseOrderReferenceNumber": "",
        "branchId": "",
        "externalParentTransactionId": "",
        "relatedParty": [
          {"name": storage.read("USER_ID"), "role": "CreatedBy"},
          {"name": "Regional Distributor(RD)", "role": "DistributorType"},
          {"name": storage.read("USER_ID"), "role": "agentId"}
        ],
        "checkInId": checkinId,
      },
    );
    dio
        .post(
      '${ApiConstant.posBaseUrl}pos-purchase-order-service-svc/transaction/$transactionType/carts/$cartId',
      data: data_,
      options: Options(
        headers: {
          'X-User-Id': storage.read("XUSER_ID"),
          'X-User-Name': storage.read("XUSER_ID")
        },
      ),
    )
        .then((response) {
      if (response.data != null) {
        print('orderCreation${response.data}');
        OrderCreationModel model = OrderCreationModel();
        Map<String, dynamic> creditData = response.data;
        model = OrderCreationModel.fromJson(creditData);
        if (model.status == 'POS200') {
          Get.back();
          Get.to(
            () => OrderSuccessScreen(
              orderCreationModel: model,
              isBankPayment: isBank,
              isCashOnDelivery: isCashOnDelivery,
            ),
          );
        } else {
          Get.back();
          Helper.messageDialog(
            Get.context!,
            model.errors?[0]?["errorItem"]["errorCode"] ?? "Try Again",
            model.errors?[0]?["errorItem"]["errorMessage"] ??
                "Something went wrong",
          );
        }
      }
    }).catchError((error) {
      print(error.toString());
      Get.back();
      MainController mainController = Get.put(MainController());
      mainController.showErrorPopup();
    });
  } catch (e) {
    Get.back();
  }
}