//
//  KMMemberCenterResult.swift
//  PDF Reader Pro
//
//  Created by wanjun on 2024/10/21.
//

import Cocoa

@objcMembers
class KMMemberCenterResult: NSObject {
    
    var code                : Int = 0
    var msg                 : String?
    var result              : Bool?
        
    var login_Result        : KMMemberLoginResult? // 登录
    
    var deviceList_Result   : [KMMemberDeviceList]? // 设备列表
    var maxDeviceNum        : Int?   // 设备限制数

    var resultStr           : String?
    var resultInt          : Int?

    var userInfo   : KMMemberUserInfo? //用户信息
    
    var activeVIPs : [KMMemberUserInfoActiveVIP]? // 当前会员状况
    
    var logOff: KMMemberLogOff? // 手动注销

    /**
     @abstract 新会员系统重置密码 & 验证邮箱(重置密码) & 获取邮箱验证码 & 实时检查邮件验证码
     @param code
     @param msg
     @param result
     */
    init(code: Int, msg: String, result: Bool) {
        self.code = code
        self.msg = msg
        self.result = result
    }
    
    // 邮箱登录
    /**
     @abstract 邮箱登录
     @param code
     @param msg
     @param result
     */
    init(loginResult: KMMemberLoginResult) {
        self.login_Result = loginResult
    }
    
    // 登出用户的指定设备
    init(code: Int, msg: String, resultStr: String) {
        self.code = code
        self.msg = msg
        self.resultStr = resultStr
    }
    
    // 老带新已邀请人数
    init(code: Int, msg: String, resultInt: Int) {
        self.code = code
        self.msg = msg
        self.resultInt = resultInt
    }
    
    // 获取用户登录设备列表
    init(deviceListResult: [KMMemberDeviceList], maxDeviceNum: Int) {
        self.deviceList_Result = deviceListResult
        self.maxDeviceNum = maxDeviceNum
    }
    
    /**
     @abstract              获取用户个人信息
     @param complete 回调
     */
    init(code: Int, msg: String, userInfo: KMMemberUserInfo) {
        self.code = code
        self.msg = msg
        self.userInfo = userInfo
    }
    
    /**
     @abstract              获取用户当前的会员情况
     @param code 返回值
     @param msg 返回信息
     @param activeVIPs 用户当前的会员情况
     */
    init(code: Int, msg: String, activeVIPs: [KMMemberUserInfoActiveVIP]) {
        self.code = code
        self.msg = msg
        self.activeVIPs = activeVIPs
    }
    
    /**
     @abstract              用户手动注销
     @param code 返回值
     @param msg 返回信息
     @param logOff 手动注销时间
     */
    init(code: Int, msg: String, logOff: KMMemberLogOff) {
        self.code = code
        self.msg = msg
        self.logOff = logOff
    }
}

class KMMemberLoginResult: NSObject {
    var refreshToken        : String?
    var accessToken         : String?
    var tokenType           : String?
    var expiresIn           : String?
    var scope               : String?
    
    init(refreshToken: String, accessToken: String, tokenType: String, expiresIn: String, scope: String = "") {
        self.refreshToken = refreshToken
        self.accessToken = accessToken
        self.tokenType = tokenType
        self.expiresIn = expiresIn
        self.scope = scope
    }
}

class KMMemberDeviceList: NSObject {
    var id: String? // 解绑时需要
    var deviceId: String? // 设备Id
    var productId: String? // 产品Id
    var uniqueSn: String? // 设备唯一标识
    var appId: String? // appId
    var userId: String?
    var device_model: String?
    var device_os: String?
    var deviceName: String?
    var language: String?
    var timeZone: String?
    var appVersion: String?
    var platform: String?
    var updatedAt: String?
    var createdAt: String?
    var validFlag: String?
    
    init(deviceId: String?, productId: String?, uniqueSn: String?, appId: String?, userId: String? = "", device_model: String? = "", device_os: String? = "", deviceName: String? = "", language: String? = "", timeZone: String? = "", appVersion: String? = "", platform: String? = "", updatedAt: String? = "", createdAt: String? = "", validFlag: String? = "") {
        self.deviceId = deviceId
        self.productId = productId
        self.uniqueSn = uniqueSn
        self.appId = appId
        self.userId = userId
        self.device_model = device_model
        self.device_os = device_os
        self.deviceName = deviceName
        self.language = language
        self.timeZone = timeZone
        self.appVersion = appVersion
        self.platform = platform
        self.updatedAt = updatedAt
        self.createdAt = createdAt
        self.validFlag = validFlag
    }
}


class KMMemberUserInfo: NSObject {
    var id              : String = "" // 【必需】用户id
    var email           : String = "" // 【必需】邮箱
    var fullName        : String = "" // 【必需】名称
    var activeVIP       : [KMMemberUserInfoActiveVIP] = [] // 【必需】活跃的会员
    var activeAI        : [KMMemberUserInfoActiveVIP] = [] // 【必需】活跃的AI
    var aiPoint         : Int = 0     // 【必需】ai点数
    var validFlag       : String = "" // 【必需】注销(0), * 正常(1), * 停用(2), * 注销中(5);
//    var isHavePwd       : String = "" // 【必需】1是0否 是否设置了密码
    var isHaveAIDiscount: String = "" // 【必需】1是0否 是否有ai折扣
    var canTrail        : String = "" // 【必需】1是0否 是否能试用
    
    var avatarUrl: String = "" // 头像
    
    init(id: String = "", email: String = "", fullName: String = "", activeVIP: [KMMemberUserInfoActiveVIP] = [], activeAI: [KMMemberUserInfoActiveVIP] = [], aiPoint: Int = 0, validFlag: String = ""/*, isHavePwd: String = ""*/, isHaveAIDiscount: String = "", canTrail: String = "") {
        self.id = id
        self.email = email
        self.fullName = fullName
        self.activeVIP = activeVIP
        self.activeAI = activeAI
        self.aiPoint = aiPoint
        self.validFlag = validFlag
//        self.isHavePwd = isHavePwd
        self.isHaveAIDiscount = isHaveAIDiscount
        self.canTrail = canTrail
    }
}

class KMMemberUserInfoActiveVIP: NSObject {
    var id              : String = "" // 【可选】id
    var userId          : String = "" // 【可选】用户id
    var status          : Int    = 0  // 【可选】状态 0注册1订阅中2订阅过期3试用中4试用过期
    var endDate         : String = "" // 【可选】到期时间
    var payType         : Int    = 0  // 【可选】0未开启自动续订 1自动续订
    var productName     : String = "" // 【可选】产品名字
    var levels          : String = "" // 【可选】会员等级 1是免费 2是标准 3是高级
    var platforms       : String = "" // 【可选】支持的平台
    var point           : Int    = 0  // 【可选】剩余ai点数(svip才有)
    var maxDeviceNum    : Int    = 0  // 【可选】最大登录设备限制数
    var paymentModel    : String = "" // 【可选】支付方式 付费模式(1自动续订(vip svip) 2单次付费(永久会员))
    var isAi            : String = "" // 【可选】是否是ai产品(0否1是)
    var cycle           : Int    = 0  // 【必需】订阅周期:1、月(30天);2、季(90天);3、半年(183天);4、年(365天)

    init(id: String = "", userId: String = "", status: Int = 0, endDate: String = "", payType: Int = 0, productName: String = "", levels: String = "", platforms: String = "", point: Int = 0, maxDeviceNum: Int = 0, paymentModel: String = "", isAi: String = "", cycle: Int = 0) {
        self.id = id
        self.userId = userId
        self.status = status
        self.endDate = endDate
        self.payType = payType
        self.productName = productName
        self.levels = levels
        self.platforms = platforms
        self.point = point
        self.maxDeviceNum = maxDeviceNum
        self.paymentModel = paymentModel
        self.isAi = isAi
        self.cycle = cycle
    }
}


class KMMemberLogOff: NSObject {
    var currentTime     : String? // 【必需】id
    var logOffTime      : String? // 【必需】用户id
    
    init(currentTime: String? = "", logOffTime: String? = "") {
        self.currentTime = currentTime
        self.logOffTime = logOffTime
    }
}