package com.yidianling.user

import android.text.TextUtils
import com.google.gson.Gson
import com.ydl.ydlcommon.utils.SharedPreferencesEditor
import com.ydl.ydlcommon.utils.UserInfoCache
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.api.bean.UserSettingBean

/**
 * 用户信息辅助类
 */
object UserHelper {

    val gson: Gson = Gson()

    //用户信息存储
    private val user_info_name_sp = "ydl_user_info"
    private val user_info_key_sp = "ydl_user_info_key"

    //用户设置存储
    private val user_setting_name_sp = "ydl_user_setting"
    private val user_setting_key_sp = "ydl_user_setting_key"

    //用户信息//缓存
    private var userTemp: UserResponseBean? = null

    //用户设置信息缓存
    private var userSetting: UserSettingBean? = null

    //存储用户信息
    fun setUserinfo(userInfo: UserResponseBean?) {
        try {
            userTemp = userInfo
            var str = gson.toJson(userTemp)
            SharedPreferencesEditor.putFileString(user_info_name_sp, user_info_key_sp, str)

            UserInfoCache.getInstance().saveYDLUser("\"" + userInfo?.uid + "\"",
                    userInfo?.userInfo?.nick_name, userInfo?.userInfo?.head)

            YdlBuryPointUtil.reLogin()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    //获取用户设置信息
    fun getUserInfo(): UserResponseBean? {
        if (userTemp != null) return userTemp!!
        try {
            var obj = SharedPreferencesEditor.getFileString(user_info_name_sp, user_info_key_sp)
            var app: UserResponseBean = gson.fromJson(obj, UserResponseBean::class.java)
            userTemp = app
            return userTemp!!
        } catch (e: Exception) {
            userTemp = UserResponseBean()
        }
        return userTemp
    }

    fun getUserInfoStr(): String? {
        if (userTemp != null) return gson.toJson(userTemp)
        try {
            return SharedPreferencesEditor.getFileString(user_info_name_sp, user_info_key_sp)
        } catch (e: Exception) {
            userTemp = UserResponseBean()
        }
        return gson.toJson(userTemp)
    }

    fun updateUserinfo(userInfo: UserResponseBean.UserInfo?) {
        getUserInfo()?.userInfo = userInfo
    }

    fun updateUserSetting(userseting: UserSettingBean?) {
        setUserSetting(userseting)
    }

    /**
     * 是否登录
     */
    fun isLogin(): Boolean {
        try {
            var user = getUserInfo()?.userInfo
            if (TextUtils.isEmpty(user?.uid)) {
                return false
            }
            var uid: Int = user?.uid?.toInt() ?: 0
            if (uid > 0) {
                return true
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return false
    }

    /**
     * 是否绑定手机
     */
    fun isBindPhone(): Boolean {
        return !TextUtils.isEmpty(getUserInfo()?.userInfo?.phone)
    }

    /**
     * 存储用户设置信息
     */
    fun setUserSetting(userseting: UserSettingBean?) {
        try {
            userSetting = userseting
            var str = gson.toJson(userSetting)
            SharedPreferencesEditor.putFileString(user_setting_name_sp, user_setting_key_sp, str)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    /**
     * 获取用户设置信息
     */
    fun getUsetSetting(): UserSettingBean? {
        if (userSetting != null) return userSetting!!
        try {
            var obj = SharedPreferencesEditor.getFileString(user_setting_name_sp, user_setting_key_sp)
            if (TextUtils.isEmpty(obj)) {
                setUserSetting(UserSettingBean())
            }
            var app: UserSettingBean = gson.fromJson(obj, UserSettingBean::class.java)
            userSetting = app
            return userSetting
        } catch (e: Exception) {
        }
        return userSetting
    }

    fun getUserSettingStr(): String? {
        if (userSetting != null) return gson.toJson(userSetting)
        try {
            return SharedPreferencesEditor.getFileString(user_setting_name_sp, user_setting_key_sp)
        } catch (e: Exception) {
            userSetting = UserSettingBean()
        }
        return gson.toJson(userSetting)
    }
}