package com.yidianling.home.ui.view

import android.annotation.SuppressLint
import android.content.Context
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.blankj.utilcode.util.SpanUtils
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.ydl.ydl_image.module.GlideApp
import com.yidianling.common.tools.RxImageTool
import com.yidianling.home.R
import com.yidianling.home.event.IHomeBaseEvent
import com.yidianling.home.model.bean.HomeConfideBean
import kotlinx.android.synthetic.ydl.home_confide_item_layout.view.*

/**
 * @author jiucheng
 * @描述:首页倾诉模块--专家个人信息view
 * @Copyright Copyright (c) 2018
 * @Company 壹点灵
 * @date 2019/2/16
 */
class HomeConfideExpertInfoView(private var mContext: Context, private var homeEvent: IHomeBaseEvent?) : FrameLayout(mContext) {
    private var dp70 = 0

    init {
        initView()

        dp70 = RxImageTool.dip2px(70f)
    }

    private fun initView() {
        var params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        layoutParams = params
        View.inflate(context, R.layout.home_confide_item_layout, this)
    }

    fun setData(bean: HomeConfideBean.BodyBean?, position: Int, isLast: Boolean) {
        if (bean == null) {
            visibility = View.GONE
            return
        }
        //设置头像
        setHead(bean)

        setListenAndScore(bean)

        setFreeStatus(bean)

        setConfideTag(bean)

        setLineStatus(bean)

        //设置名称
        tv_name.text = bean.confidedName
        //设置倾诉标签View的最大宽度
//        tag_view.setConfideWidth()
        //咨询师标签
//        tag_view.initData(bean.confidedTag as MutableList<String>)
        //设置向TA倾诉人数
        setConfideNum(bean)
        //设置接通率文案
        setConnection(bean)
        //设置向TA倾诉按钮状态
        setConfideButton(bean)
        //设置红包、原价
//        setCoupon(bean)

        //设置咨询师简介
        tv_content.text = bean.confideContent

        //最后一项显示分割线
        if (isLast) {
            view_line.visibility = View.GONE
        } else {
            view_line.visibility = View.VISIBLE
        }
        this.setOnClickListener {
            homeEvent!!.confideClick(bean.linkUrl, bean.confidedId.toString(), bean.doctorId, bean.uid.toString())
        }
    }

    /**
     * 设置头像
     */
    private fun setHead(bean: HomeConfideBean.BodyBean) {
//        val op = SimpleImageOpConfiger()
//        op.errorPic = R.drawable.platform_head_place_hold_pic
//        op.loadingPic = R.drawable.platform_head_place_hold_pic
//        op.transform = 0
//        YDLImageCacheManager.showImage(mContext, bean.confidedIcon, img_head, op)


        //这样处理 是防止 滑动过程中 反复去加载图片
        if (!TextUtils.isEmpty(bean.confidedIcon) && img_head.getTag(R.id.img_head) != bean.confidedIcon) {
            GlideApp.with(context)
                .load(bean.confidedIcon)
//                .override(dp96, dp96)
                .into(img_head)
            img_head.setTag(R.id.img_head, bean.confidedIcon)
        }

    }

    /**
     * 设置向TA倾诉人数
     */
    private fun setConfideNum(bodyBean: HomeConfideBean.BodyBean) {
        if (TextUtils.isEmpty(bodyBean.confideNum)) {
            tv_confideNum.visibility = View.GONE
            tv_tv_confideNumContent.visibility = View.GONE
        } else {
            tv_confideNum.visibility = View.VISIBLE
            tv_tv_confideNumContent.visibility = View.VISIBLE
            tv_confideNum.text = bodyBean.confideNum
        }
    }

    /**
     * 设置接通率文案
     */
    private fun setConnection(bodyBean: HomeConfideBean.BodyBean) {
        if (TextUtils.isEmpty(bodyBean.confideConnection)) {
            tv_Connection.visibility = View.INVISIBLE
            tv_ConnectionContent.visibility = View.INVISIBLE
        } else {
            tv_Connection.visibility = View.VISIBLE
            tv_ConnectionContent.visibility = View.VISIBLE
            tv_Connection.text = bodyBean.confideConnection
        }
    }

    /**
     * 设置向TA倾诉按钮状态
     */
    private fun setConfideButton(bodyBean: HomeConfideBean.BodyBean) {
        when (bodyBean.confideLine) {//1在线 2离线 3通话中  4继续倾诉
            1 -> {
                tv_confide.setBackgroundResource(R.drawable.home_confide_line_1)
            }
            2 -> {
                tv_confide.setBackgroundResource(R.drawable.home_confide_line_2)
            }
            3 -> {
                tv_confide.setBackgroundResource(R.drawable.home_confide_line_3)
            }
            4 -> {
                tv_confide.setBackgroundResource(R.drawable.home_confide_line_4)
            }
        }
        tv_confide.setOnClickListener {
            if (bodyBean.confideLine == 2) {//喊他上线  私聊
                homeEvent!!.toChatForMsg(bodyBean.uid.toString())
            } else {
                homeEvent!!.confideClick(bodyBean.linkUrl, bodyBean.confidedId.toString(), bodyBean.doctorId, bodyBean.uid.toString())
            }
        }
    }


    private fun setListenAndScore(bodyBean: HomeConfideBean.BodyBean) {
        SpanUtils.with(price_content).append(bodyBean.confideFee)
            .setForegroundColor(resources.getColor(R.color.home_confide_fe6040)).setFontSize(18, true)
            .append("元").setForegroundColor(resources.getColor(R.color.home_confide_fe6040))
            .setFontSize(11, true)
            .append("/25分钟").setForegroundColor(resources.getColor(R.color.home_confide_aaaeba))
            .setFontSize(11, true)
            .create()
        tv_score.text = bodyBean.confidePraiseScore
    }

    /**
     * 设置在线状态
     */
    private fun setLineStatus(bodyBean: HomeConfideBean.BodyBean) {
        when (bodyBean.confideLine) {//1在线 2离线 3通话中
            1, 4 -> {
                tv_online.text = "在线"
                tv_online.setBackgroundResource(R.drawable.home_confide_online_main)
            }
            2 -> {
                tv_online.text = "离线"
                tv_online.setBackgroundResource(R.drawable.home_confide_offline_bg)
            }
            3 -> {
                tv_online.text = "通话中"
                tv_online.setBackgroundResource(R.drawable.home_confide_online_main)
            }
        }
    }

    private fun setConfideTag(bodyBean: HomeConfideBean.BodyBean) {
        if (null == bodyBean.confidedTag || bodyBean.confidedTag!!.isEmpty()) {
            return
        }
        var i = 0
        val sb = StringBuilder()
        for (tag in bodyBean.confidedTag!!) {
            if (i > 4) break
            sb.append(tag).append(" | ")
            i++
        }
        if (sb.length > 3) {
            sb.setLength(sb.length - 3)
        }
        flowlayout_tag.text = sb.toString()
    }

    private fun setFreeStatus(bodyBean: HomeConfideBean.BodyBean) {
        if (bodyBean.listenFree == true && bodyBean.confideLine == 1) {
            confide_free_logo.visibility = VISIBLE
            Glide.with(context)
                .load(R.drawable.home_confide__free)
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
                .into(confide_free_logo)
        } else {
            confide_free_logo.visibility = GONE
        }
    }

    /**
     * 设置红包、原价
     */
    @SuppressLint("SetTextI18n")
    private fun setCoupon(bodyBean: HomeConfideBean.BodyBean) {

//        if(!TextUtils.isEmpty(bodyBean.couponText)){
//            tvCoupon.text = bodyBean.couponText
//            tvCoupon.visibility = View.VISIBLE
//        }else{
//            tvCoupon.visibility = View.GONE
//        }
//        if (TextUtils.isEmpty(bodyBean.confideFee) || TextUtils.isEmpty(bodyBean.couponMoney) || bodyBean.couponMoney!!.toFloat() <= 0){
//            tvOriginalPrice.visibility = View.GONE
//        }else{
//            tvOriginalPrice.visibility = View.VISIBLE
//            val originalBuffer = StringBuffer()
//            originalBuffer.append(bodyBean.confideFee).append("元/次")
//            tvOriginalPrice.text = originalBuffer.toString()
//            //添加删除线
//            tvOriginalPrice.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
//        }
//        try {
//            val couponMoney = bodyBean.couponMoney!!.toFloat().toInt()
//            val confideFee = bodyBean.confideFee!!.toFloat().toInt()
//
//            if (couponMoney >= confideFee){
//                tv_price.text = "¥0"
//            }else{
//                val price = confideFee - couponMoney
//                tv_price.text = "¥"+price.toString()
//            }
//        }catch (e:Exception){
//            //防止数据类型变化引起奔溃
//        }

    }
}