package com.remax.notification.config

import com.google.gson.annotations.SerializedName

/**
 * 推送通知内容数据类
 * iconType
 * 1 代表 照片恢复
 * 2 代表 视频恢复
 * 3 代表 文档恢复
 * 4 代表 音频恢复
 * 5 代表 截图清理
 * 6 代表 已恢复文件列表
 *
 * actionType
 * 1 代表 跳转照片恢复 界面
 * 2 代表 跳转视频恢复 界面
 * 3 代表 跳转文档恢复 界面
 * 4 代表 跳转音频恢复 界面
 * 5 代表 跳转截图清理 界面
 * 6 代表 跳转已恢复文件列表 界面
 */

data class PushContent(
    @SerializedName("id")
    val id: String,
    @SerializedName("title")
    val title: String,
    @SerializedName("desc")
    val desc: String,
    @SerializedName("buttonText")
    val buttonText: String,
    @SerializedName("iconType")
    val iconType: Int,
    @SerializedName("actionType")
    val actionType: Int
) {
    companion object {
        /**
         * 图标类型常量
         */
        const val ICON_TYPE_PHOTO = 1      // 照片恢复
        const val ICON_TYPE_VIDEO = 2      // 视频恢复
        const val ICON_TYPE_DOCUMENT = 3   // 文档恢复
        const val ICON_TYPE_AUDIO = 4      // 音频恢复
        const val ICON_TYPE_SCREENSHOT = 5 // 截图清理
        const val ICON_TYPE_RECOVERED = 6  // 已恢复文件列表

        /**
         * 动作类型常量
         */
        const val ACTION_TYPE_PHOTO_RECOVERY = 1      // 跳转照片恢复 界面
        const val ACTION_TYPE_VIDEO_RECOVERY = 2      // 跳转视频恢复 界面
        const val ACTION_TYPE_DOCUMENT_RECOVERY = 3   // 跳转文档恢复 界面
        const val ACTION_TYPE_AUDIO_RECOVERY = 4      // 跳转音频恢复 界面
        const val ACTION_TYPE_SCREENSHOT_CLEAN = 5    // 跳转截图清理 界面
        const val ACTION_TYPE_RECOVERED_FILES = 6     // 跳转已恢复文件列表 界面

        // new ---
        const val ACTION_TYPE_GOLD = 101
        const val ACTION_TYPE_WITHDRAW = 102
        const val ACTION_TYPE_BOX = 103
        const val ACTION_TYPE_GAME = 104


        /**
         * 根据动作类型获取对应的图标类型
         */
        fun getIconTypeByActionType(actionType: Int): Int {
            return when (actionType) {
                ACTION_TYPE_PHOTO_RECOVERY -> ICON_TYPE_PHOTO
                ACTION_TYPE_VIDEO_RECOVERY -> ICON_TYPE_VIDEO
                ACTION_TYPE_DOCUMENT_RECOVERY -> ICON_TYPE_DOCUMENT
                ACTION_TYPE_AUDIO_RECOVERY -> ICON_TYPE_AUDIO
                ACTION_TYPE_SCREENSHOT_CLEAN -> ICON_TYPE_SCREENSHOT
                ACTION_TYPE_RECOVERED_FILES -> ICON_TYPE_RECOVERED
                else -> ICON_TYPE_PHOTO // 默认返回照片图标
            }
        }

        /**
         * 根据图标类型获取对应的动作类型
         */
        fun getActionTypeByIconType(iconType: Int): Int {
            return when (iconType) {
                ICON_TYPE_PHOTO -> ACTION_TYPE_PHOTO_RECOVERY
                ICON_TYPE_VIDEO -> ACTION_TYPE_VIDEO_RECOVERY
                ICON_TYPE_DOCUMENT -> ACTION_TYPE_DOCUMENT_RECOVERY
                ICON_TYPE_AUDIO -> ACTION_TYPE_AUDIO_RECOVERY
                ICON_TYPE_SCREENSHOT -> ACTION_TYPE_SCREENSHOT_CLEAN
                ICON_TYPE_RECOVERED -> ACTION_TYPE_RECOVERED_FILES
                else -> ACTION_TYPE_PHOTO_RECOVERY // 默认返回照片恢复动作
            }
        }

        /**
         * 检查动作类型是否有效
         */
        fun isValidActionType(actionType: Int): Boolean {
            return actionType in ACTION_TYPE_PHOTO_RECOVERY..ACTION_TYPE_RECOVERED_FILES
        }

        /**
         * 检查图标类型是否有效
         */
        fun isValidIconType(iconType: Int): Boolean {
            return iconType in ICON_TYPE_PHOTO..ICON_TYPE_RECOVERED
        }
    }
}
