Skip to content

Instantly share code, notes, and snippets.

@photizzo
Created July 22, 2021 19:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save photizzo/3869771e66cb4e6c40e29daebd8ff97d to your computer and use it in GitHub Desktop.
Save photizzo/3869771e66cb4e6c40e29daebd8ff97d to your computer and use it in GitHub Desktop.
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