CNLiveDigitalResumePreViewSelectRenzhengCerController.swift 15.1 KB
//
//  CNLiveDigitalResumePreViewSelectRenzhengCerController.swift
//  metaCode
//
//  Created by zx on 2024/8/12.
//  数字简历-关联选择官方认证/证书 页面

import Foundation

///数字简历 选择 官方认证/证书类型
enum CNLiveViateSelectRenzhengCerType {
    ///官方认证
    case renzheng
    ///证书
    case cer
}

class CNLiveDigitalResumePreViewSelectRenzhengCerController:CNLiveBaseViewController,UITableViewDataSource, UITableViewDelegate{
    
    var renzhengCerType:CNLiveViateSelectRenzhengCerType = .renzheng
    //简历里 认证列表的数据
    var _digitalListModels : [CNLiveVitaeIdentitiesModel]?
    var digitalListModels : [CNLiveVitaeIdentitiesModel]? {
        get{
            _digitalListModels
        }
        set{
            _digitalListModels = newValue!
            setupNewUI(models: _digitalListModels!)
        }
    }
    
    //简历里 证书列表的数据
    var _cerListModels : [CNLiveVitaeCertificatesModel]?
    var cerListModels : [CNLiveVitaeCertificatesModel]? {
        get{
            _cerListModels
        }
        set{
            _cerListModels = newValue!
            setupCerNewUI(models: _cerListModels!)
        }
    }
    
    //认证和证书 数据源
    lazy var totalDataArray: NSMutableArray = {
        var dataArray = NSMutableArray()
        return dataArray
    }()

    let kCNLiveDigitalResumeGuanfangRenzhengCellIdentifier = "kCNLiveDigitalResumeGuanfangRenzhengCellIdentifier"
    let kCNLiveDigitalResumeSelectCerCellIdentifier = "kCNLiveDigitalResumeSelectCerCellIdentifier"
    
    lazy var tableView : UITableView = {
        let tableView = UITableView(frame: .zero, style: .plain)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.separatorStyle = .none
        tableView.tableFooterView = UIView.init()
        tableView.register(CNLiveDigitalResumeGuanfangRenzhengCell.self, forCellReuseIdentifier: kCNLiveDigitalResumeGuanfangRenzhengCellIdentifier)
        tableView.register(CNLiveDigitalResumeSelectCerCell.self, forCellReuseIdentifier: kCNLiveDigitalResumeSelectCerCellIdentifier)
        tableView.backgroundColor = .clear
        return tableView
    }()
    lazy var bottomZhiNanWhiteView :UIView = {
        let bottomNavView = UIView()
        bottomNavView.backgroundColor = .white
        return bottomNavView
    }()
    lazy var settingBtn: UIButton = {
        let  nextBtn = UIButton(type: .custom)
        nextBtn.setTitle("取消", for: .normal)
        nextBtn.setTitleColor(HexColor("#333333"), for: .normal)
        nextBtn.titleLabel?.font = BoldFont_17
        nextBtn.addTarget(self, action: #selector(settingBtnAction), for: .touchUpInside)
        return nextBtn
    }()
    lazy var previewBtn: UIButton = {
        let  nextBtn = UIButton(type: .custom)
        nextBtn.setTitle("确认", for: .normal)
        nextBtn.setTitleColor(.white, for: .normal)
        nextBtn.backgroundColor = HexColor("#1961FE")
        nextBtn.layer.cornerRadius = 20
        nextBtn.clipsToBounds = true
        nextBtn.addTarget(self, action: #selector(previewBtnAction), for: .touchUpInside)
        return nextBtn
    }()
    
    lazy var renzhengCerLabel: UILabel = {
        let  nextBtn = UILabel()
        nextBtn.text = "技能证书"
        nextBtn.textColor = HexColor("#333333")
        nextBtn.font = BoldFont_16
        return nextBtn
    }()
    lazy var addBtn: UIButton = {
        let  nextBtn = UIButton(type: .custom)
        nextBtn.frame = CGRect(x: 0, y: 0, width: 70, height: 20)
        nextBtn.setTitle("添加证书", for: .normal)
        nextBtn.setTitleColor(HexColor("#1961FE"), for: .normal)
        nextBtn.titleLabel?.font = BoldFont_13
        nextBtn.setImage(UIImage(named: "mine_jianli_preview_add"), for: .normal)
        nextBtn.setupButtonImageAndTitlePossitionWith(padding: 5, style: .left)
        nextBtn.addTarget(self, action: #selector(addBtnAction), for: .touchUpInside)
        return nextBtn
    }()
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if self.renzhengCerType == .renzheng{
            self.getAuthInfoList()
        }else{
            self.getCerList()
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if self.renzhengCerType == .renzheng{
            titleName = "选择官方认证"
            self.renzhengCerLabel.text = "官方认证"
            self.addBtn.setTitle("添加官方认证", for: .normal)
        }else{
            titleName = "选择证书"
            self.renzhengCerLabel.text = "技能证书"
            self.addBtn.setTitle("添加证书", for: .normal)
        }
        navigationBarHidden = false
        self.view.backgroundColor = HexColor("#F5F6FB")
        
        self.view.addSubview(self.tableView)
        self.tableView.snp.makeConstraints { make in
            make.top.equalTo(KNavigationHeight+53)
            make.left.right.equalToSuperview()
            make.height.equalToSuperview().offset(-KNavigationHeight-60-53)
        }
        
        self.view.addSubview(self.bottomZhiNanWhiteView)
        self.bottomZhiNanWhiteView.snp.makeConstraints { make in
            make.top.equalTo(self.tableView.snp.bottom)
            make.bottom.left.right.equalToSuperview()
        }
        
        self.bottomZhiNanWhiteView.addSubview(self.previewBtn)
        self.previewBtn.snp.makeConstraints { make in
            make.left.equalTo(100)
            make.right.equalToSuperview().offset(-15)
            make.top.equalTo(10)
            make.height.equalTo(40)
        }
        
        self.bottomZhiNanWhiteView.addSubview(self.settingBtn)
        self.settingBtn.snp.makeConstraints { make in
            make.left.equalTo(0)
            make.width.equalTo(100)
            make.top.equalTo(0)
            make.height.equalToSuperview()
        }
        
        self.view.addSubview(self.addBtn)
        if self.renzhengCerType == .renzheng{
            self.addBtn.snp.makeConstraints { make in
                make.top.equalTo(KNavigationHeight)
                make.right.equalToSuperview().offset(-15)
                make.width.equalTo(100)
                make.height.equalTo(53)
            }
        }else{
            self.addBtn.snp.makeConstraints { make in
                make.top.equalTo(KNavigationHeight)
                make.right.equalToSuperview().offset(-15)
                make.width.equalTo(70)
                make.height.equalTo(53)
            }
        }
        self.view.addSubview(self.renzhengCerLabel)
        self.renzhengCerLabel.snp.makeConstraints { make in
            make.left.equalTo(15)
            make.top.equalTo(15+KNavigationHeight)
            make.right.lessThanOrEqualTo(self.addBtn.snp.left).offset(-5)
        }
        
    }
    
    deinit {
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.totalDataArray.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if self.renzhengCerType == .renzheng{
            guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveDigitalResumeGuanfangRenzhengCellIdentifier) as? CNLiveDigitalResumeGuanfangRenzhengCell
            else {
                let cell = CNLiveDigitalResumeGuanfangRenzhengCell()
                return cell
            }
            let authListMdl = self.totalDataArray[indexPath.row] as! MineAuthListModel
            cell.authListModel = authListMdl
            return cell
        }else{
            guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveDigitalResumeSelectCerCellIdentifier) as? CNLiveDigitalResumeSelectCerCell
            else {
                let cell = CNLiveDigitalResumeSelectCerCell()
                return cell
            }
            let cerListMdl = self.totalDataArray[indexPath.row] as! CNLiveVitaeCertificateModel
            cell.cerListMdl = cerListMdl
            return cell
        }

    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if self.renzhengCerType == .renzheng{
            return 75+15
        }else{
            return 157+15
        }
    }
    
    func setupNewUI(models:[CNLiveVitaeIdentitiesModel]){
        if models.count > 0{
            
        }else{
            
        }
    }
    
    func setupCerNewUI(models:[CNLiveVitaeCertificatesModel]){
        if models.count > 0{
            
        }else{
            
        }
    }
    
    // MARK: - ButtonAction
    @objc func settingBtnAction(){
        //取消
        self.navigationController?.popViewController(animated: true)
    }
    @objc func previewBtnAction(){
        //提交
        if self.renzhengCerType == .renzheng{
            var idsArrStr = ""
            for (idx,obj) in self.totalDataArray.enumerated() {
                let model = obj as! MineAuthListModel
                let cell = self.tableView.cellForRow(at: IndexPath(row: idx, section: 0)) as! CNLiveDigitalResumeGuanfangRenzhengCell
                if cell.selectBtn.isSelected{
                    idsArrStr = idsArrStr + "\(model.identityId),"
                }
            }
            if idsArrStr.count > 0{
                idsArrStr = idsArrStr.subString(start: 0, length: idsArrStr.count-1)
            }
            let vsid = UserInfoManager.shared.userInfo.currentUser?.vsid ?? "0"
            CNLiveVitaeViewModel.linkVitae(ids: idsArrStr, vsid: vsid, type: "2") { result, status in
                if status == .success{
                    self.navigationController?.popViewController(animated: true)
                }
            }
        }else{
            var idsArrStr = ""
            for (idx,obj) in self.totalDataArray.enumerated() {
                let model = obj as! CNLiveVitaeCertificateModel
                let cell = self.tableView.cellForRow(at: IndexPath(row: idx, section: 0)) as! CNLiveDigitalResumeSelectCerCell
                if cell.selectBtn.isSelected{
                    idsArrStr = idsArrStr + "\(model.id),"
                }
            }
            if idsArrStr.count > 0{
                idsArrStr = idsArrStr.subString(start: 0, length: idsArrStr.count-1)
            }
            let vsid = UserInfoManager.shared.userInfo.currentUser?.vsid ?? "0"
            CNLiveVitaeViewModel.linkVitae(ids: idsArrStr, vsid: vsid, type: "3") { result, status in
                if status == .success{
                    self.navigationController?.popViewController(animated: true)
                }
            }
        }
    }
    @objc func addBtnAction(){
        
        if self.renzhengCerType == .renzheng{
            //添加官方认证
            let vc = CNLiveIdentityRepositoryController()
            vc.channelId = ""
            vc.type = "1"
            navigationViewController().pushViewController(vc, animated: true)
        }else{
            //添加证书
            navigationViewController().pushViewController(CNLiveVitaeVocationalCertificateController(), animated: true)
        }
    }
    
    // MARK: - 获取证书数量
    func getCerList(){
        let vsid = UserInfoManager.shared.userInfo.currentUser?.vsid ?? ""
        CNLiveVitaeViewModel.getCerList(vsid: vsid, page: 1, pageSize: 100){ result, respStatue in
            if respStatue == .success{
                if let res = result as? [CNLiveVitaeCertificateModel]{
                    var arr = Array<CNLiveVitaeCertificateModel>()
                    var guanlianNum = 0
                    res.forEach { cerMdl in
                        if let cerListArr = self.cerListModels{
                            for (_,mdl) in cerListArr.enumerated() {
                                let model = mdl
                                if cerMdl.id == model.id{
                                    
                                    cerMdl.selectStatus = 1
                                    guanlianNum = guanlianNum + 1
//                                    //已关联
//                                    if cerMdl.status == 0{//审核中:不可关联
//                                        cerMdl.selectStatus = -1
//                                    }else{//审核成功:可关联
//                                        cerMdl.selectStatus = 1
//                                    }
//                                    guanlianNum = guanlianNum + 1
                                }else{
                                    //未关联
                                }
                            }
                        }
                        arr.append(cerMdl)

                    }
                    self.renzhengCerLabel.text = "技能证书(\(guanlianNum)本)"
                    
                    self.totalDataArray.removeAllObjects()
                    self.totalDataArray.addObjects(from: arr)
                    self.tableView.reloadData()
                }
            }else{
                showMessage(message: "数据异常")
            }

        }
    }
    //获取认证信息
    func getAuthInfoList(){
        CNLiveMineViewModel.requestsGETAuthInfoList(page: 1) { [weak self] result, respStatue in
            if respStatue == .success {
                let listBaseModel = result as! MineAuthListBaseModel
                if self != nil{
                    var arr = Array<MineAuthListModel>()
                    var sussArr = Array<MineAuthListModel>()
                    var guanlianNum = 0
                    listBaseModel.list.forEach { listMdl in
                        if let idListArr = self!.digitalListModels{
                            
                            for (_,mdl) in idListArr.enumerated() {
                                let model = mdl
                                if listMdl.identityId == model.identityId{
                                    //已关联
                                    if listMdl.userStatus == 0{//审核中:不可关联
                                        listMdl.selectStatus = -1
                                    }else{//审核成功:可关联
                                        listMdl.selectStatus = 1
                                    }
                                    guanlianNum = guanlianNum + 1
                                }else{
                                    //未关联
                                    //                                listMdl.selectStatus = 0
                                }
                            }
                        }
                        
                        if listMdl.userStatus == 1{
                            
                            arr.insert(listMdl, at: 0)
                            sussArr.append(listMdl)
                        }else{
                            arr.append(listMdl)
                        }
                    }
                    self?.renzhengCerLabel.text = "官方认证(\(guanlianNum)条)"
                    self!.totalDataArray.removeAllObjects()
                    self!.totalDataArray.addObjects(from: arr)
                    self!.tableView.reloadData()
                }
            }else {

            }
        }
    }
        
    
}