Created
          July 22, 2021 19:55 
        
      - 
      
 - 
        
Save photizzo/3869771e66cb4e6c40e29daebd8ff97d to your computer and use it in GitHub Desktop.  
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | package com.eyowo.android.report.ui.util | |
| import android.widget.ImageView | |
| import android.widget.TextView | |
| import com.eyowo.android.core.utils.ext.isAvailable | |
| import com.eyowo.android.core.utils.ext.isNotAvailable | |
| import com.eyowo.android.core.utils.getTransactionsImage | |
| import com.eyowo.android.core.utils.toTitleCase | |
| import com.eyowo.android.report.R | |
| import com.eyowo.android.report.model.ExpensesModel | |
| import com.eyowo.android.report.model.TRANSACTION_SUB_TYPE | |
| import com.eyowo.android.report.model.TRANSACTION_TYPE | |
| import com.eyowo.android.report.ui.expense.ExpensesAdapter | |
| fun TextView.showTransactionExtraData(transactionModel: ExpensesModel) { | |
| text = | |
| if (transactionModel.metadata != null && transactionModel.metadata.sub_type != TRANSACTION_SUB_TYPE.UNKNOWN) { | |
| when { | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_BUSINESS_PAYMENT -> | |
| transactionModel.metadata.sub_type.subtype.toLowerCase() | |
| .capitalize() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.PHONE_TRANSFER && | |
| transactionModel.metadata.scheduledPaymentId.isAvailable() -> context.getString( | |
| R.string.scheduled_phone_transfer | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.PHONE_TRANSFER -> context.getString( | |
| R.string.phone_transfer | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.BILL_PAYMENT_CHARGE || | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SMS_CHARGE || | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.TRANSACTION_CHARGE | |
| || transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.WHATSAPP_SMS_CHARGE -> context.getString( | |
| R.string.charges | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD || | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_CREATION || | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_FUNDING | |
| || transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_TERMINATION -> context.getString( | |
| R.string.virtual_card | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.AIRTIME_RECHARGE && | |
| transactionModel.metadata.scheduledPaymentId.isAvailable() -> context.getString( | |
| R.string.scheduled_airtime_purchase | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.AIRTIME_RECHARGE && | |
| transactionModel.metadata.recipientMobile.isAvailable() | |
| && transactionModel.metadata.scheduledPaymentId.isNotAvailable() -> context.getString( | |
| R.string.airtime_purchase | |
| ) | |
| transactionModel.metadata.scheduledPaymentId.isAvailable() -> context.getString( | |
| R.string.scheduled_holder, | |
| transactionModel.metadata.sub_type.subtype | |
| ).toLowerCase().capitalize() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.RECEIVE && | |
| transactionModel.metadata.source.isNotEmpty() && | |
| transactionModel.metadata.source == ExpensesAdapter.PAYSTACK_CARDS -> context.getString( | |
| R.string.card_funding | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.BILL_PAYMENT | |
| && transactionModel.metadata.billerCategory == "Data" -> { | |
| context.getString(R.string.data_purchase_transaction) | |
| } | |
| else -> transactionModel.metadata.subTypeString.replace( | |
| "_", | |
| " " | |
| ).toLowerCase().capitalize() | |
| } | |
| } else { | |
| transactionModel.type.type.toLowerCase().capitalize() | |
| } | |
| } | |
| fun TextView.showTransactionDetails(transactionModel: ExpensesModel) { | |
| text = if (transactionModel.metadata != null) { | |
| when { | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_BUSINESS_PAYMENT -> { | |
| if (transactionModel.metadata.senderName.isNotAvailable()) { | |
| transactionModel.metadata.sub_type.subtype | |
| } else { | |
| transactionModel.metadata.senderName.toLowerCase().toTitleCase() | |
| } | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.OUTWARD_BANK_TRANSFER -> transactionModel.metadata.account_name.toLowerCase() | |
| .toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.INWARD_BANK_TRANSFER -> transactionModel.metadata.account_name.toLowerCase() | |
| .toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_RETAIL_PAYMENT -> transactionModel.metadata.billSenderName | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.CARD_VERIFICATION_PAYMENT -> context.getString( | |
| R.string.verif_card_ending_with, | |
| transactionModel.metadata.cardBIN | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.CARD_FUNDING -> context.getString( | |
| R.string.verif_card_ending_with, | |
| transactionModel.metadata.cardBIN | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EXPERIENCE_IT -> transactionModel.metadata.description | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.WHATSAPP_SMS_CHARGE -> transactionModel.metadata.subTypeString.replace( | |
| "_", | |
| " " | |
| ).toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.DEVELOPER_APP_BVN_CHECK -> if (transactionModel.metadata.developerAppName.isNotAvailable()) { | |
| transactionModel.metadata.bvn | |
| } else { | |
| transactionModel.metadata.developerAppName | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.BILL_PAYMENT | |
| || transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.AIRTIME_RECHARGE -> { | |
| val sentTo = if (transactionModel.metadata.contactname.isNotAvailable()) { | |
| transactionModel.metadata.recipientMobile | |
| } else { | |
| transactionModel.metadata.contactname | |
| } | |
| when (transactionModel.metadata.billerCategory) { | |
| "VTU" -> "${transactionModel.metadata.billerName.toTitleCase()} ($sentTo)" | |
| else -> transactionModel.metadata.billerName.toTitleCase() | |
| } | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.CASH_OUT_FROM_SAFE -> { | |
| if (transactionModel.metadata.safeName.isNotAvailable()) { | |
| transactionModel.metadata.sub_type.subtype.toTitleCase() | |
| } else { | |
| transactionModel.metadata.safeName.toTitleCase() | |
| } | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SAVINGS_WITHDRAWAL -> { | |
| if (transactionModel.metadata.safeName.isNotAvailable()) { | |
| transactionModel.metadata.sub_type.subtype.toTitleCase() | |
| } else { | |
| transactionModel.metadata.safeName.toTitleCase() | |
| } | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_RETAIL_CASHBACK -> transactionModel.metadata.senderName | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.TRANSACTION_CHARGE -> this.context.getString( | |
| R.string.charge_holder, | |
| transactionModel.metadata.category.category | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SMS_CHARGE -> transactionModel.metadata.subTypeString.replace( | |
| "_", | |
| " " | |
| ).toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SAVINGS_DEPOSIT -> transactionModel.metadata.safeName.toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_AGENT_DEPOSIT -> transactionModel.metadata.agentPhoneNumber | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.INTEREST_RUN -> transactionModel.metadata.safeName.toTitleCase() | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.DSTV -> transactionModel.metadata.sub_type.subtype | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.INTEREST_PAYMENT -> transactionModel.metadata.safeName.toTitleCase() | |
| // WHY I HAD TO DO THIS WITH ENUMS? I DO NOT KNOW.... | |
| transactionModel.metadata.sub_type.subtype == TRANSACTION_SUB_TYPE.PHONE_TRANSFER.subtype -> { | |
| if (transactionModel.metadata.contactname.isNotAvailable()) { | |
| transactionModel.metadata.receiverMobile | |
| } else { | |
| "${transactionModel.metadata.contactname} (${transactionModel.metadata.receiverMobile})" | |
| } | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_FUNDING -> this.context.getString( | |
| R.string.virtual_card_funding | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_TERMINATION -> this.context.getString( | |
| R.string.virtual_card_termination | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_CREATION -> this.context.getString( | |
| R.string.virtual_card_creation | |
| ) | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.BILL_PAYMENT_CHARGE -> transactionModel.metadata.sub_type.subtype.toTitleCase() | |
| transactionModel.metadata.sub_type.subtype == TRANSACTION_SUB_TYPE.RECEIVE.subtype -> if (transactionModel.metadata.senderMobile.isNotEmpty() && | |
| transactionModel.metadata.senderMobile.isAvailable() | |
| ) { | |
| if (transactionModel.metadata.contactname.isNotAvailable()) { | |
| transactionModel.metadata.senderMobile | |
| } else { | |
| transactionModel.metadata.contactname | |
| } | |
| } else { | |
| this.context.getString( | |
| R.string.card_ending_with, | |
| transactionModel.metadata.cardBIN | |
| ) | |
| } | |
| else -> transactionModel.metadata.subTypeString.replace( | |
| "_", | |
| " " | |
| ).toLowerCase().toTitleCase() | |
| } | |
| } else { | |
| transactionModel.metadata?.subTypeString?.replace("_", " ")?.toTitleCase() | |
| } | |
| } | |
| fun ImageView.showTransactionIcon(transactionModel: ExpensesModel) { | |
| val image: Int = | |
| if (transactionModel.metadata != null) { | |
| when { | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.OUTWARD_BANK_TRANSFER -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_RETAIL_PAYMENT -> R.drawable.ic_retail_shop | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.BILL_PAYMENT | |
| || transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.AIRTIME_RECHARGE -> { | |
| getTransactionsImage(transactionModel.metadata.billerName) | |
| } | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_RETAIL_CASHBACK -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.TRANSACTION_CHARGE -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SMS_CHARGE -> R.drawable.ic_sms_charge | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.EYOWO_AGENT_DEPOSIT -> R.drawable.ic_agent_deposit | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.INTEREST_RUN -> R.drawable.ic_safe | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.INTEREST_PAYMENT -> R.drawable.ic_safe | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.PHONE_TRANSFER -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_CREATION -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_TERMINATION -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.VIRTUAL_CARD_FUNDING -> R.drawable.ic_eyowo_logo_report | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.DSTV -> R.drawable.dstv_circular | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.CARD_VERIFICATION_PAYMENT -> R.drawable.ic_card | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SAVINGS_DEPOSIT -> R.drawable.ic_safe | |
| transactionModel.metadata.sub_type == TRANSACTION_SUB_TYPE.SAVINGS_WITHDRAWAL -> R.drawable.ic_safe | |
| // WHY I HAD TO DO THIS WITH ENUMS? I DO NOT KNOW.... | |
| transactionModel.metadata.sub_type.subtype == TRANSACTION_SUB_TYPE.RECEIVE.subtype -> | |
| if (transactionModel.metadata.senderMobile.isNotEmpty() && transactionModel.metadata.senderMobile.isAvailable()) { | |
| // transactionModel.metadata.senderMobile | |
| // generateTextDrawable("TRF") | |
| R.drawable.ic_eyowo_logo_report | |
| } else if (transactionModel.metadata.source.isNotEmpty() && transactionModel.metadata.source == "PAYSTACK_CARDS") { | |
| R.drawable.ic_card | |
| } else { | |
| R.drawable.ic_eyowo_logo_report | |
| } | |
| else -> if (transactionModel.type == TRANSACTION_TYPE.EYOWO_CREDIT) { | |
| R.drawable.ic_eyowo_logo_report | |
| } else { | |
| R.drawable.ic_eyowo_logo_report | |
| } | |
| } | |
| } else { | |
| if (transactionModel.type == TRANSACTION_TYPE.EYOWO_CREDIT) { | |
| R.drawable.ic_eyowo_logo_report | |
| } else { | |
| R.drawable.ic_eyowo_logo_report | |
| } | |
| } | |
| setImageResource(image) | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment