onEditMethodClick method

void onEditMethodClick(
  1. BuildContext context,
  2. String deliveryOpt, [
  3. bool isMissing = false
])

Implementation

void onEditMethodClick(
  BuildContext context,
  String deliveryOpt, [
  bool isMissing = false,
]) {
  final singleProductID =
      orderItems.length == 1 ? orderItems.first.productId : null;
  final singleSkuID = orderItems.length == 1 ? orderItems.first.skuID : null;
  List<StoreListRequest> products = [];
  for (var i = 0; i < orderItems.length; i++) {
    products.add(
      StoreListRequest(
        skuId: orderItems[i].skuID,
        productID: orderItems[i].productId,
        skuCode: orderItems[i].skuCode,
      ),
    );
  }
  switch (deliveryOpt.toLowerCase()) {
    case "pickup":
      if (!isMissing) {
        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (_) {
              return PickupFromPage(
                arg: PickupFromArg(
                  defaultAddr: _controller.defaultAddr,
                  deliveryMethod: 0,
                  delivOpt: deliveryOpt,
                  productID: productID ?? singleProductID,
                  skuID: skuID ?? singleSkuID,
                  branchId: storeId,
                  skuCode: skuCode,
                  orderItems: orderItems.isNotEmpty ? orderItems : [],
                ),
              );
            },
          ),
        ).then((value) {
          if (value is StoreItem) {
            _controller.altStoreId = value.storeId;
          }
        });
      }
      break;
    case "instant":
      if (!isMissing) {
        final summaryIndex =
            _controller.viewState.value.data?.instantDeliverySummary
                .indexWhere(
                  (element) => element.orderID.toString() == orderId,
                ) ??
            -1;
        final definedAddrId =
            summaryIndex.isNegative
                ? 0
                : (_controller
                        .viewState
                        .value
                        .data
                        ?.instantDeliverySummary[summaryIndex]
                        .addressId ??
                    0);
        final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
        final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;

        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (_) {
              return IncommeDeliveryAddress(
                args: PickAddressArgs(
                  addressId:
                      (definedAddrId > 0)
                          ? definedAddrId
                          : (dflAddrId > 0)
                          ? dflAddrId
                          : custAddrId,
                  storeId: storeId,
                  fromCart: true,
                  productID: productID ?? singleProductID,
                  skuID: skuID ?? singleSkuID,
                  deliveryOpt: deliveryOpt,
                  orderId: orderId,
                  shippingType: ShippingType.instant,
                  skuCode: skuCode ?? "",
                  products: products.isNotEmpty ? products : [],
                ),
              );
            },
          ),
        ).then((value) {
          if (value is PickAddressReturnArgs) {
            _controller.altAddressId = value.address.addressId;
            _controller.altStoreId = value.storeDetail.storeId;
          }
        });
      }
      break;
    case "regular":
      if (!isMissing) {
        final summaryIndex =
            _controller.viewState.value.data?.regularShippingSummary
                .indexWhere(
                  (element) => element.orderID.toString() == orderId,
                ) ??
            -1;
        final definedAddrId =
            summaryIndex.isNegative
                ? 0
                : (_controller
                        .viewState
                        .value
                        .data
                        ?.regularShippingSummary[summaryIndex]
                        .addressId ??
                    0);
        final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
        final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;
        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (_) {
              return IncommeDeliveryAddress(
                args: PickAddressArgs(
                  addressId:
                      (definedAddrId > 0)
                          ? definedAddrId
                          : (dflAddrId > 0)
                          ? dflAddrId
                          : custAddrId,
                  storeId: storeId,
                  fromCart: true,
                  productID: productID ?? singleProductID,
                  skuID: skuID ?? singleSkuID,
                  deliveryOpt: deliveryOpt,
                  orderId: orderId,
                  shippingType: ShippingType.regular,
                  products: products.isNotEmpty ? products : [],
                ),
              );
            },
          ),
        ).then((value) {
          if (value is PickAddressReturnArgs) {
            _controller.altAddressId = value.address.addressId;
            _controller.altStoreId = value.storeDetail.storeId;
          }
        });
      }
      break;
    case "delivery_store":
      if (!isMissing) {
        final summaryIndex =
            _controller.viewState.value.data?.deliveryStoreShippingSummaryList
                .indexWhere(
                  (element) => element.orderID.toString() == orderId,
                ) ??
            -1;
        final definedAddrId =
            summaryIndex.isNegative
                ? 0
                : (_controller
                        .viewState
                        .value
                        .data
                        ?.deliveryStoreShippingSummaryList[summaryIndex]
                        .addressId ??
                    0);
        final dflAddrId = _controller.defaultAddr?.addressId ?? 0;
        final custAddrId = _controller.defaultAddr?.customerAddressID ?? 0;
        Navigator.push(
          context,
          MaterialPageRoute(
            builder: (_) {
              return IncommeDeliveryAddress(
                args: PickAddressArgs(
                  addressId:
                      (definedAddrId > 0)
                          ? definedAddrId
                          : (dflAddrId > 0)
                          ? dflAddrId
                          : custAddrId,
                  storeId: storeId,
                  fromCart: true,
                  productID: productID ?? singleProductID,
                  skuID: skuID ?? singleSkuID,
                  deliveryOpt: deliveryOpt,
                  orderId: orderId,
                  shippingType: ShippingType.deliveryStore,
                  skuCode: skuCode ?? "",
                  products: products.isNotEmpty ? products : [],
                ),
              );
            },
          ),
        ).then((value) {
          if (value is PickAddressReturnArgs) {
            _controller.altAddressId = value.address.addressId;
            _controller.altStoreId = value.storeDetail.storeId;
          }
        });
      }
      break;
    default:
  }
}