Friend.kt 1.5 KB
package fr.plnech.dunbar.model

import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.provider.ContactsContract.Contacts
import java.util.*

data class Friend(val map: MutableMap<String, String?>, val photo: Bitmap?) {
    override fun toString(): String = "$name"

    fun mapString(): String = map.entries.filter { !it.value.isNullOrEmpty() }.toString()

    val name: String?
        get() = map[Contacts.DISPLAY_NAME]

    val firstName: String?
        get() = name?.split(Regex("\\s"))?.firstOrNull()

    val id: Int
        get() = map[Contacts._ID]!!.toInt()

    val phone: String?
        get() = if (map[Contacts.HAS_PHONE_NUMBER] == "1") map["data1"] else null

    val lastTimeStamp = map[Contacts.LAST_TIME_CONTACTED]!!.toLong()

    val lastDate: Date?
        get() = if (lastTimeStamp > 0) Date(lastTimeStamp) else null

    val timesContacted: Int
        get() = map[Contacts.TIMES_CONTACTED]?.toInt() ?: 0

    val isYou: String?
        get() = map[Contacts.IS_USER_PROFILE]

    val visibleOutsideSearch: String?
        get() = map[Contacts.IN_DEFAULT_DIRECTORY]

    fun smsIntent(): Intent? {
        return phone?.let {
            val uri = Uri.parse("smsto:${it}")
            Intent(Intent.ACTION_SENDTO, uri).apply {
                putExtra("sms_body", "Hey ${firstName}, how are you?")
            }
        }
    }

    fun callIntent(): Intent? {
        return phone?.let {
            Intent(Intent.ACTION_DIAL, Uri.parse("tel:${it}"))
        }
    }


}