146 lines
5.8 KiB
Kotlin
146 lines
5.8 KiB
Kotlin
package sh.sar.basedbank.util
|
|
|
|
import android.content.Context
|
|
import org.json.JSONArray
|
|
import org.json.JSONObject
|
|
import sh.sar.basedbank.api.mib.MibBeneficiary
|
|
import sh.sar.basedbank.api.mib.MibBeneficiaryCategory
|
|
|
|
object ContactsCache {
|
|
|
|
private const val PREFS = "contacts_cache"
|
|
private const val KEY_CONTACTS = "mib_contacts"
|
|
private const val KEY_CATEGORIES = "mib_categories"
|
|
|
|
fun save(
|
|
context: Context,
|
|
contacts: List<MibBeneficiary>,
|
|
categories: List<MibBeneficiaryCategory>
|
|
) {
|
|
val prefs = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE).edit()
|
|
|
|
val contactsArr = JSONArray()
|
|
for (c in contacts) {
|
|
contactsArr.put(JSONObject().apply {
|
|
put("benefNo", c.benefNo)
|
|
put("benefName", c.benefName)
|
|
put("benefNickName", c.benefNickName)
|
|
put("benefAccount", c.benefAccount)
|
|
put("benefType", c.benefType)
|
|
put("bankColor", c.bankColor)
|
|
put("benefBankName", c.benefBankName)
|
|
put("bankCode", c.bankCode)
|
|
put("benefStatus", c.benefStatus)
|
|
put("transferCyDesc", c.transferCyDesc)
|
|
put("customerImgHash", c.customerImgHash ?: "")
|
|
put("benefCategoryId", c.benefCategoryId)
|
|
put("profileId", c.profileId)
|
|
})
|
|
}
|
|
prefs.putString(KEY_CONTACTS, contactsArr.toString())
|
|
|
|
val catArr = JSONArray()
|
|
for (cat in categories) {
|
|
catArr.put(JSONObject().apply {
|
|
put("id", cat.id)
|
|
put("categoryName", cat.categoryName)
|
|
put("numBenef", cat.numBenef)
|
|
})
|
|
}
|
|
prefs.putString(KEY_CATEGORIES, catArr.toString())
|
|
prefs.apply()
|
|
}
|
|
|
|
fun loadContacts(context: Context): List<MibBeneficiary> {
|
|
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
|
|
.getString(KEY_CONTACTS, null) ?: return emptyList()
|
|
return try {
|
|
val arr = JSONArray(json)
|
|
(0 until arr.length()).map { i ->
|
|
val o = arr.getJSONObject(i)
|
|
MibBeneficiary(
|
|
benefNo = o.optString("benefNo"),
|
|
benefName = o.optString("benefName"),
|
|
benefNickName = o.optString("benefNickName"),
|
|
benefAccount = o.optString("benefAccount"),
|
|
benefType = o.optString("benefType"),
|
|
bankColor = o.optString("bankColor", "#888888"),
|
|
benefBankName = o.optString("benefBankName"),
|
|
bankCode = o.optString("bankCode"),
|
|
benefStatus = o.optString("benefStatus"),
|
|
transferCyDesc = o.optString("transferCyDesc", "MVR"),
|
|
customerImgHash = o.optString("customerImgHash").takeIf { it.isNotBlank() },
|
|
benefCategoryId = o.optString("benefCategoryId", "0"),
|
|
profileId = o.optString("profileId", "")
|
|
)
|
|
}
|
|
} catch (e: Exception) {
|
|
emptyList()
|
|
}
|
|
}
|
|
|
|
fun saveBml(context: Context, contacts: List<MibBeneficiary>) {
|
|
val arr = JSONArray()
|
|
for (c in contacts) {
|
|
arr.put(JSONObject().apply {
|
|
put("benefNo", c.benefNo)
|
|
put("benefName", c.benefName)
|
|
put("benefNickName", c.benefNickName)
|
|
put("benefAccount", c.benefAccount)
|
|
put("benefType", c.benefType)
|
|
put("bankColor", c.bankColor)
|
|
put("benefBankName", c.benefBankName)
|
|
put("bankCode", c.bankCode)
|
|
put("benefStatus", c.benefStatus)
|
|
put("transferCyDesc", c.transferCyDesc)
|
|
put("benefCategoryId", c.benefCategoryId)
|
|
})
|
|
}
|
|
context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
|
|
.edit().putString("bml_contacts", arr.toString()).apply()
|
|
}
|
|
|
|
fun loadBml(context: Context): List<MibBeneficiary> {
|
|
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
|
|
.getString("bml_contacts", null) ?: return emptyList()
|
|
return try {
|
|
val arr = JSONArray(json)
|
|
(0 until arr.length()).map { i ->
|
|
val o = arr.getJSONObject(i)
|
|
MibBeneficiary(
|
|
benefNo = o.optString("benefNo"),
|
|
benefName = o.optString("benefName"),
|
|
benefNickName = o.optString("benefNickName"),
|
|
benefAccount = o.optString("benefAccount"),
|
|
benefType = o.optString("benefType"),
|
|
bankColor = o.optString("bankColor", "#0066A1"),
|
|
benefBankName = o.optString("benefBankName"),
|
|
bankCode = o.optString("bankCode"),
|
|
benefStatus = o.optString("benefStatus"),
|
|
transferCyDesc = o.optString("transferCyDesc", "MVR"),
|
|
customerImgHash = null,
|
|
benefCategoryId = o.optString("benefCategoryId", "BML")
|
|
)
|
|
}
|
|
} catch (e: Exception) { emptyList() }
|
|
}
|
|
|
|
fun loadCategories(context: Context): List<MibBeneficiaryCategory> {
|
|
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
|
|
.getString(KEY_CATEGORIES, null) ?: return emptyList()
|
|
return try {
|
|
val arr = JSONArray(json)
|
|
(0 until arr.length()).map { i ->
|
|
val o = arr.getJSONObject(i)
|
|
MibBeneficiaryCategory(
|
|
id = o.optString("id"),
|
|
categoryName = o.optString("categoryName"),
|
|
numBenef = o.optInt("numBenef", 0)
|
|
)
|
|
}
|
|
} catch (e: Exception) {
|
|
emptyList()
|
|
}
|
|
}
|
|
}
|