CNLiveMineQuestViewController.swift 6.8 KB
//
//  CNLiveMineQuestViewController.swift
//  metaCode
//
//  Created by open on 2023/6/26.
//

import Foundation
import EmptyDataSet_Swift

class CNLiveMineQuestViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate {
    
    let kMineBodyFourViewCellIdentifier = "kMineBodyFourViewCellIdentifier"
    lazy var tableView: UITableView = {
        let tableView = UITableView.init(frame: .zero, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        tableView.emptyDataSetSource = self
        tableView.emptyDataSetDelegate = self
        tableView.backgroundColor = .clear
        tableView.separatorStyle = .none
        tableView.register(MineBodyFourViewCell.self, forCellReuseIdentifier: kMineBodyFourViewCellIdentifier)
        let headerView = MineQuestHeaderView.init(frame: CGRectMake(0, 10, KSreenWidth, 150), checkModel: _checkModel)
        tableView.tableHeaderView = headerView
        let footerView = UIView(frame: CGRect(x: 0, y: 0, width: KSreenWidth - 40, height: 10))
        footerView.clipsToBounds = true
        footerView.backgroundColor = .white
        footerView.addCorner(conrners: [.bottomLeft,.bottomRight], radius: 5)
        tableView.tableFooterView = footerView
        return tableView
    }()
    
    lazy var headerView: UIView = {
        let headerView = UIView.init(frame: CGRectMake(0, 0, KSreenWidth - 40, 60))
        headerView.backgroundColor = .white
        headerView.addCorner(conrners: [.topLeft,.topRight], radius: 10)
        headerView.layer.masksToBounds = true
        let nameLabel = UILabel.init()
        nameLabel.text = "日常任务"
        nameLabel.textColor = .black
        nameLabel.textAlignment = .left
        nameLabel.font = BoldFont_19_Fit
        headerView.addSubview(nameLabel)
        nameLabel.snp.makeConstraints { make in
            make.centerY.equalToSuperview()
            make.left.equalToSuperview().offset(10)
        }
        let lineLabel = UILabel.init()
        lineLabel.backgroundColor = HexColor("#E5E5E5")
        headerView.addSubview(lineLabel)
        lineLabel.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.bottom.equalToSuperview().offset(-0.5)
            make.left.equalToSuperview().offset(15)
            make.right.equalToSuperview().offset(-15)
            make.height.equalTo(0.5)
        }
        return headerView
    }()
    
    lazy var dataArray: NSMutableArray = {
        let dataArray = NSMutableArray.init()
        return dataArray
    }()
    
    var _checkModel: MinePointCheckInModel!
    var network_type: CNLiveMineResponseType!
    init(checkModel:MinePointCheckInModel) {
       super.init(nibName:nil, bundle:nil)
        _checkModel = checkModel
    }
    
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationBarHidden = false
        titleName = "任务中心"
        
        loadDataWithTaskList()
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.top.equalToSuperview().offset(KNavigationHeight)
            make.bottom.equalToSuperview().offset(KTabBarHeight - 49)
            make.left.equalToSuperview().offset(20)
            make.right.equalToSuperview().offset(-20)
        }
    }
    
    func loadDataWithTaskList() {
        CNLiveMineViewModel.requestWithTaskList { result, respStatue in
            if respStatue == .success {
                self.network_type = .success
                self.dataArray.addObjects(from: result as! [MineTaskCheckListModel])
                self.tableView.reloadData()
            }else if (respStatue == .noNetwork) {
                self.network_type = .noNetwork
                self.tableView.reloadEmptyDataSet()
            } else {
                self.network_type = .failed
                self.tableView.reloadEmptyDataSet()
            }
        }
    }
}

extension CNLiveMineQuestViewController {
    
    func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
        if network_type == .failed  || network_type == .unkonw {
            return UIImage(named: "mine_list_source_unusual_failed")
        }
        if network_type == .noNetwork {
            return UIImage(named: "mine_list_source_unusual_noNet")
        }
        return UIImage(named: "mine_list_source_unusual_empty")
    }
    
    func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
        var defult_string = ""
        if network_type == .failed  || network_type == .unkonw {
            defult_string = "接口请求错误,刷新试试~"
        }
        if network_type == .noNetwork {
            defult_string = "网络开小差了,刷新试试~"
        }
        if dataArray.count == 0 && network_type == .success{
            defult_string = "暂无任务~"
        }
        return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!])
    }
    
    func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? {
        if (network_type == .failed || network_type == .noNetwork) {
            let attributes = [NSAttributedString.Key.font:Font_16_Fit,
                              NSAttributedString.Key.foregroundColor: HexColor("#609BFF")]
            return NSAttributedString(string: "刷新", attributes: attributes as [NSAttributedString.Key : Any])
        }
        return nil
    }
    
    func backgroundColor(forEmptyDataSet scrollView: UIScrollView) -> UIColor? {
        return UIColor.white
    }
    
    func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) {
        loadDataWithTaskList() 
    }
}

extension CNLiveMineQuestViewController {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: kMineBodyFourViewCellIdentifier) as? MineBodyFourViewCell else {
            return MineBodyFourViewCell()
        }
        cell.setupWithData(listModel: dataArray[indexPath.row] as! MineTaskCheckListModel)
        return cell
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 70.0
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 60.0
    }
    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return headerView
    }
    
    
}