package net.huansi.app.hssummarizingboard.utils

import android.widget.EditText
import baseform.android.huansi.net.request.WebResponseListener
import baseform.android.huansi.net.util.BasicVariableUtils
import baseform.android.huansi.net.util.ToastUtil
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
import com.alibaba.fastjson.parser.Feature
import java.math.BigDecimal

/**
 * 保留几位小数
 * @param decimalCount 小数位数
 */
fun Float.saveDecimal(decimalCount: Int = 2): Float {
    return BasicVariableUtils.saveDecimal(this.toDouble(), decimalCount).toFloat()
}

/**
 * 保留几位小数
 * BigDecimal.ROUND_DOWN        不四舍五入
 * BigDecimal.ROUND_UP          进位处理，就是直接+1
 * BigDecimal.ROUND_HALF_UP     四舍五入
 */
fun String.saveDecimalDiscard(
    decimalCount: Int = 2,
    roundingMode: Int = BigDecimal.ROUND_DOWN
): Float {
    //使用toString可以避免出现精度问题，如输入299.59使用toDouble()时会输出299.58
    val b = BigDecimal(this)
    return b.setScale(decimalCount, roundingMode).toFloat()
}

/**
 * 保留几位小数
 * BigDecimal.ROUND_DOWN        不四舍五入
 * BigDecimal.ROUND_UP          进位处理，就是直接+1
 */
fun Float.saveDecimalDiscard(
    decimalCount: Int = 2,
    roundingMode: Int = BigDecimal.ROUND_DOWN
): Float {
    //使用toString可以避免出现精度问题，如输入299.59使用toDouble()时会输出299.58
    val b = BigDecimal(this.toString())
    return b.setScale(decimalCount, roundingMode).toFloat()
}

fun EditText.setInputState(state: Boolean) {
    this.isFocusable = state
    this.isFocusableInTouchMode = state
}

/**
 * 接口返回的JSONObject转为需要使用的JSONArray
 */
fun String?.toJSONArray(name: String): JSONArray {
    if (this.isNullOrEmpty()) {
        ToastUtil.showShortErrorToast("${name}: 接口返回数据错误")
        return JSONArray()
    }
    val json = JSON.parse(this, Feature.OrderedField)
    if (json is JSONObject) {
//        if (json.getBoolean("success").not()) {
//            throw WebResponseListener.HSException(
//                json.getString("error"),
//                WebResponseListener.WebResponseError.CODE_ERROR_NORMAL
//            )
//        }
        return json.getJSONArray("data")
    } else if (json is JSONArray) {
        return json
    } else {
        ToastUtil.showShortErrorToast("${name}: 接口返回数据格式有误")
        return JSONArray()
    }
}

/**
 * 刷卡输入框去除重复字符
 */
fun String.toDeleteRepetitionString(repetitionString: String): String {
    if (this.contains(repetitionString)) {
        return this.substring(repetitionString.length, this.length)
    }
    return this
}

/**
 * 去除一些特殊字符
 */
fun String.removeOtherCharacter(): String {
    if (this.isEmpty()) return this
    return this.replace("\u0000", "")
        .replace("��", "")
}

//fun View.getAbsoluteX():Float{
//    val point=IntArray(2)
//    getLocationInWindow(point)
//    return point[0].toFloat()
//}
//
//fun View.getAbsoluteY():Float{
//    val point=IntArray(2)
//    getLocationInWindow(point)
//    return point[1].toFloat()
//}