//
//  HomeWorkStatusCardView.swift
//  suixinkan
//

import SnapKit
import UIKit

/// 首页在线状态与倒计时卡片。
final class HomeWorkStatusCardView: UIView {

    var onOnlineTap: (() -> Void)?
    var onReminderTap: (() -> Void)?

    private let onlineButton = UIButton(type: .system)
    private let countdownLabel = UILabel()
    private let reminderButton = UIButton(type: .system)

    override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = AppColor.cardBackground
        layer.cornerRadius = AppRadius.md

        onlineButton.titleLabel?.font = .app(.captionMedium)
        onlineButton.layer.cornerRadius = AppRadius.xs
        onlineButton.contentEdgeInsets = UIEdgeInsets(top: 6, left: 12, bottom: 6, right: 12)
        onlineButton.addTarget(self, action: #selector(onlineTapped), for: .touchUpInside)

        countdownLabel.font = .app(.subtitle)
        countdownLabel.textColor = AppColor.primary

        reminderButton.titleLabel?.font = .app(.subtitle)
        reminderButton.setTitleColor(AppColor.primary, for: .normal)
        reminderButton.addTarget(self, action: #selector(reminderTapped), for: .touchUpInside)

        addSubview(onlineButton)
        addSubview(countdownLabel)
        addSubview(reminderButton)

        onlineButton.snp.makeConstraints { make in
            make.leading.equalToSuperview().offset(AppSpacing.screenHorizontalInset)
            make.centerY.equalToSuperview()
        }
        countdownLabel.snp.makeConstraints { make in
            make.center.equalToSuperview()
        }
        reminderButton.snp.makeConstraints { make in
            make.trailing.equalToSuperview().offset(-AppSpacing.screenHorizontalInset)
            make.centerY.equalToSuperview()
        }
        snp.makeConstraints { make in
            make.height.equalTo(AppSpacing.formRowHeight)
        }
    }

    @available(*, unavailable)
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    func apply(isOnline: Bool, countdownText: String, reminderMinutes: Int) {
        onlineButton.setTitle(isOnline ? "在线" : "离线", for: .normal)
        if isOnline {
            onlineButton.backgroundColor = AppColor.online
            onlineButton.setTitleColor(AppColor.successBackground, for: .normal)
        } else {
            onlineButton.backgroundColor = AppColor.inputBackground
            onlineButton.setTitleColor(AppColor.textTabInactive, for: .normal)
        }
        countdownLabel.text = countdownText
        let reminderTitle = reminderMinutes == 0 ? "不提醒" : "提前\(reminderMinutes)分钟"
        reminderButton.setTitle(reminderTitle, for: .normal)
    }

    @objc private func onlineTapped() { onOnlineTap?() }
    @objc private func reminderTapped() { onReminderTap?() }
}
