getMerchantPayModes method

Future<void> getMerchantPayModes()

Implementation

Future<void> getMerchantPayModes() async {
  loaderController.add(true);
  String? encodedMerchantId = CryptoUtils.encrypt(
      MerchantConstants.merchantId, KeywordConstants.internalKey);
  await appRepository.getMerchantPayModeAndScheme(encodedMerchantId!).then(
      (Response response) async {
    //debugPrint('Get merchant payment mode api response is ${response.body}');
    MerchantPayModeSchemesResponse payModeSchemesResponse =
        MerchantPayModeSchemesResponse.fromJson(json.decode(response.body));
    String encryptedSchemes = payModeSchemesResponse.payModeSchemes;
    String? schemes =
        CryptoUtils.decrypt(encryptedSchemes, MerchantConstants.merchantKey);
    //debugPrint('Decrypted schemes are $schemes');
    if (schemes != null && schemes.isNotEmpty) {
      paymentModeList = <PaymentMode>[];
      List<dynamic> jsonMapList = json.decode(schemes);

      final payMode.PaymentMethodModel model1 = payMode.PaymentMethodModel(
          "packages/safexpay/img/ic_card.png", "CREDIT/DEBIT/ATM CARD",
          preference: 1);
      final payMode.PaymentMethodModel model2 = payMode.PaymentMethodModel(
          "packages/safexpay/img/ic_bank.png", "NET BANKING",
          preference: 2);
      final payMode.PaymentMethodModel model3 = payMode.PaymentMethodModel(
          "packages/safexpay/img/ic_wallet.png", "WALLETS",
          preference: 3);
      final payMode.PaymentMethodModel model4 = payMode.PaymentMethodModel(
          "packages/safexpay/img/ic_upi.png", "UPI",
          preference: 4);

      paymentMethodList.clear();

      for (Map<String, dynamic> jsonMap in jsonMapList) {
        PaymentMode paymentMode = PaymentMode.fromJson(jsonMap);
        paymentModeList?.add(paymentMode);
        //debugPrint('Payment mode id is ${paymentMode.payModeId}');
        if (paymentMode.payModeId == "NB" && netBankingPaymentFlag) {
          paymentMethodList.add(model2);
          nbPaymentMode = paymentMode;
          filteredNBPaymentList.clear();
          filteredNBPaymentList.addAll(nbPaymentMode.paymentModeDetailsList!);
          generateStaticNBList();
        }
        if (paymentMode.payModeId == "CC" &&
            !paymentMethodList.contains(model1) &&
            cardPaymentFlag) {
          paymentMethodList.add(model1);
        }
        if (paymentMode.payModeId == "DC" &&
            !paymentMethodList.contains(model1) &&
            cardPaymentFlag) {
          paymentMethodList.add(model1);
        }

        /// Remove before comment once UP payment mode implementation is done
        if (paymentMode.payModeId == "UP" && upiPaymentFlag) {
          paymentMethodList.add(model4);
          upiPaymentList.clear();
          upiPaymentList.addAll(paymentMode.paymentModeDetailsList!);
          /*for(PaymentModeDetails paymentModeDetails in paymentMode.paymentModeDetailsList!){
            ////debugPrint('${paymentModeDetails.pgDetailsResponse!.pgName} Upi payment icon is ${paymentModeDetails.pgDetailsResponse!.pgIcon}');
          }*/
        }
        if (paymentMode.payModeId == 'WA' && walletPaymentFlag) {
          paymentMethodList.add(model3);
          walletPaymentList.clear();
          walletPaymentList.addAll(paymentMode.paymentModeDetailsList!);
          if (walletPaymentList.isNotEmpty) {
            walletListController.add(true);
          } else {
            walletListController.add(false);
          }
        }
      }
    }
    if (paymentMethodList.isNotEmpty) {
      paymentMethodList.sort((a, b) => a.preference.compareTo(b.preference));
      payModeListController.add(true);
    } else {
      payModeListController.add(false);
    }
    loaderController.add(false);
  }, onError: (dynamic e) {
    loaderController.add(false);
    //debugPrint('Get merchant payment mode api exception is ${e.toString()}');
  });
}