HealthRemindVC.swift 7.09 KB
//
//  HealthRemindVC.swift
//  Twear
//
//  Created by yangbin on 2021/12/25.
//

import UIKit
import MBProgressHUD
import SwiftDate

class HealthRemindVC: UIViewController {
    
    @IBOutlet weak var sedentaryIntervalLabel: UILabel!
    @IBOutlet weak var sedentaryStartLabel: UILabel!
    @IBOutlet weak var sedentaryEndLabel: UILabel!
    @IBOutlet weak var sedentarySwitch: UISwitch!
    
    @IBOutlet weak var drinkIntervalLabel: UILabel!
    @IBOutlet weak var drinkStartLabel: UILabel!
    @IBOutlet weak var drinkEndLabel: UILabel!
    @IBOutlet weak var drinkSwitch: UISwitch!
    
    let device = CurDevice
    lazy private var lastDrink: RemindModel = CurDevice.drink
    lazy private var lastSed: RemindModel = CurDevice.sedentary
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        MBProgressHUD.hide()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let navController = navigationController as? ZCNavigationController
        navController?.enableScreenEdgePanGestureRecognizer(false)
    }
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        let navController = navigationController as? ZCNavigationController
        navController?.enableScreenEdgePanGestureRecognizer(true)
    }
    
    
    override func navigationShouldPop() -> Bool {
        if lastSed.isEqual(device.sedentary) && lastDrink.isEqual(device.drink) {
            return true
        } else {
            self.showAlert(title: LocString("温馨提示"), message: LocString("您的设置尚未保存,是否退出")) { action in
                self.navigationController?.popViewController(animated: true)
            }
            return false
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        title = LocString("健康提醒")
        
        let saveButton = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 28))
        saveButton.setTitle(LocString("保存"), for: .normal)
        saveButton.titleLabel?.font = RegularFont(14)
        saveButton.setTitleColor(UIColor.rgbColorFromHex(0x00993E), for: .normal)
        saveButton.addTarget(self, action: #selector(save), for: .touchUpInside)
        navigationItem.rightBarButtonItem =  UIBarButtonItem(customView: saveButton)
        
        sedentaryIntervalLabel.text = "\(device.sedentary.interval)\(LocString("分钟min"))"
        sedentaryStartLabel.text = device.sedentary.startDate.toString(.custom("HH:mm"))
        sedentaryEndLabel.text = device.sedentary.endDate.toString(.custom("HH:mm"))
        sedentarySwitch.isOn = device.sedentary.isOn
        drinkIntervalLabel.text = "\(device.drink.interval)\(LocString("分钟min"))"
        drinkStartLabel.text = device.drink.startDate.toString(.custom("HH:mm"))
        drinkEndLabel.text = device.drink.endDate.toString(.custom("HH:mm"))
        drinkSwitch.isOn = device.drink.isOn
    }
    
    @IBAction func valueChanged(_ sender: UISwitch) {
        if sender.tag == 0 {
            device.sedentary.isOn = sender.isOn
        } else {
            device.drink.isOn = sender.isOn
        }
    }
    
    @IBAction func setRemindInterval(_ sender: UIButton) {
        let values: [Int] = [30, 45, 60, 90, 120]
        if sender.tag == 0 {
            let pickerView = ZCPickerView(title: LocString("间隔时间"), values: values)
            pickerView.selectedRow = values.firstIndex(of: device.sedentary.interval) ?? 5
            pickerView.show()
            pickerView.clickClosure = {[weak self] value in
                self?.sedentaryIntervalLabel.text = "\(value)\(LocString("分钟min"))"
                self?.device.sedentary.interval = value
            }
        } else {
            let pickerView = ZCPickerView(title: LocString("间隔时间"), values: values)
            pickerView.selectedRow = values.firstIndex(of: device.drink.interval) ?? 5
            pickerView.show()
            pickerView.clickClosure = {[weak self] value in
                self?.drinkIntervalLabel.text = "\(value)\(LocString("分钟min"))"
                self?.device.drink.interval = value
            }
        }
    }
    
    @IBAction func setStartTime(_ sender: UIButton) {
        if sender.tag == 0 {
            let values = (0..<24).map { (i) -> Int in
                return i
            }
            let pickerView = ZCPickerView(title: LocString("开始时间"), values: values, suffix: ":00")
            pickerView.selectedRow = values.firstIndex(of: device.sedentary.startDate.hour) ?? 9
            pickerView.show()
            pickerView.clickClosure = {[weak self] value in
                let date = DateInRegion(year: 2000, month: 1, day: 1, hour: value, minute: 0).date
                self?.sedentaryStartLabel.text = date.toString(.custom("HH:mm"))
                self?.device.sedentary.startDate = date
            }
        } else {
            let pickerView = DatePickerView(title: LocString("开始时间"))
            pickerView.datePicker.date = device.drink.startDate
            pickerView.show()
            pickerView.clickClosure = {[weak self] date in
                self?.drinkStartLabel.text = date.toString(.custom("HH:mm"))
                self?.device.drink.startDate = date
            }
        }
    }
    
    @IBAction func setEndTime(_ sender: UIButton) {
        if sender.tag == 0 {
            let values = (0..<24).map { (i) -> Int in
                return i
            }
            let pickerView = ZCPickerView(title: LocString("结束时间"), values: values, suffix: ":00")
            pickerView.selectedRow = values.firstIndex(of: device.sedentary.endDate.hour) ?? 9
            pickerView.show()
            pickerView.clickClosure = {[weak self] value in
                let date = DateInRegion(year: 2000, month: 1, day: 1, hour: value, minute: 0).date
                self?.sedentaryEndLabel.text = date.toString(.custom("HH:mm"))
                self?.device.sedentary.endDate = date
            }
        } else {
            let pickerView = DatePickerView(title: LocString("结束时间"))
            pickerView.datePicker.date = device.drink.endDate
            pickerView.show()
            pickerView.clickClosure = {[weak self] date in
                self?.drinkEndLabel.text = date.toString(.custom("HH:mm"))
                self?.device.drink.endDate = date
            }
        }
    }
    
    
    @objc private func save() {
        _ = MBProgressHUD.showMessage("")
        setSedentary()
    }
    
    private func setSedentary() {
        BluetoothManager.shared.setSedentaryRemind(device.sedentary) {[weak self] error in
            AdminHelper.shared.updateDevice((self?.device)!)
            self?.setDrinkWater()
        }
    }
    
    private func setDrinkWater() {
        BluetoothManager.shared.setDrinkWaterRemind(device.drink) {[weak self] error in
            AdminHelper.shared.updateDevice((self?.device)!)
            MBProgressHUD.hide()
            self?.navigationController?.popViewController(animated: true)
        }
    }

    deinit {
        print("deinit\(NSStringFromClass(type(of: self)))!!!!!!!")
    }

}