//
//  YingFuZhangKuanXQViewController.swift
//  GeliBusinessPlatform
//
//  Created by junye lu on 2020/4/30.
//  Copyright © 2020 junye lu. All rights reserved.
//

import UIKit

class YingFuZhangKuanXQViewController:BaseViewController,UISearchBarDelegate,SearchBarViewDelegate,UITableViewDelegate,UITableViewDataSource,YingFuZhangKuanXQCellDelegate,GLAlertSelectViewDelegate, GeliAlertViewDelegate{
    func sureGeliAlertViewAction(sender: UIButton) {
        HUD.flash(.progress)
        let model = datas[sender.tag]
        uncollected(["user_token":UserToken as Any,"cus_log_id":model.cus_log_id as Any], success: { (data) in
            HUD.hide()
            self.listView.mj_header?.beginRefreshing()
        }) { (err) in
            
        }
    }
    
    
    let UserToken = UserDefaults.standard.value(forKey: "user_token")
    var ven_id:Int?
    
    var dataArr:Array<accountsPayableDetailDataListModel> = []
    var datas:Array<accountReceivableDetailListModel> = []
    
    func GLASClose(view: GLAlertSelectView, selectnum: Int, selectArr: Array<Int>) {
        glSelectView?.removeFromSuperview()
        glSelectView = nil
    }
    
    func GLAlertSelectViewFinish(sender:UIButton,title:String,cellTag:Int) {
        
        HUD.flash(.progress)
        var dict = ["user_token":UserToken as Any]
        switch title {
        case "付款":
            let model = dataArr[cellTag]
            dict["po_id"] = model.po_id
            dict["pay_type"] = sender.tag + 1
            dict["pay_status"] = 2
            payStatus(dict, success: { (data) in
                HUD.hide()
                self.listView.mj_header?.beginRefreshing()
            }) { (err) in}
            break
        case "设置未付款":
            let model = dataArr[cellTag]
            dict["po_id"] = model.po_id
            dict["pay_type"] = 0
            dict["pay_status"] = 1
            payStatus(dict, success: { (data) in
                HUD.hide()
                self.listView.mj_header?.beginRefreshing()
            }) { (err) in}
            break
        case "收款":
            let model = datas[cellTag]
            dict["cus_log_id"] = model.cus_log_id
            if sender.tag == 0 {
                dict["pay_type"] = 7
            }else{
                dict["pay_type"] = sender.tag + 8
            }
            confirmReceipt(dict, success: { (data) in
                HUD.hide()
                self.listView.mj_header?.beginRefreshing()
            }) { (err) in
                
            }
            break
        default:
            break
        }
        self.glSelectView?.removeFromSuperview()
        self.glSelectView = nil
        
    }
    let payTypeArr = ["已付款","未付款"]
    let typeArr = ["现金","转账(私)","转账(公)","转账(微信)","转账(支付宝)"]
    var glSelectView:GLAlertSelectView?
    var navTitle:String = ""
    
    var searchV : SearchBarView? = nil
    @IBOutlet weak var listView: UITableView!
    @IBOutlet weak var searchBGView: UIView!
    
    var first = ""
    var second = ""
    var third = ""
    override func viewDidLoad() {
        super.viewDidLoad()
        
        super.viewDidLoad()
        navbar.title = navTitle
        self.view.addSubview(navbar)
        //searchbar
        let searchBr = SearchBarView.init()
        self.searchBGView.addSubview(searchBr)
        searchBr.snp.makeConstraints { (make) in
            make.left.right.equalTo(0)
            make.centerY.equalToSuperview()
            make.height.equalTo(35)
        }
        searchV = searchBr
        searchBr.placeholderStr = "请输入单号"
        searchBr.cornerRadius = 35/2.0
        searchBr.delegate = self
        searchBr.delegateL = self
        
        SetTopFrame(view: searchBGView, height: 44)
        listView.separatorStyle = .none
        listView.register(UINib(nibName: "YingFuZhangKuanXQCell", bundle: nil), forCellReuseIdentifier: "YingFuZhangKuanXQCell")
        
        //下拉刷新相关设置
        headerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadData))
        listView.mj_header = headerMJ
        //上拉加载相关设置
        footerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadMoreData))
        listView.mj_footer = footerMJ
        listView.mj_header?.beginRefreshing()
        
    }
    
    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: fullScreenWidth, height: 77))
        view.backgroundColor = UIColor.white
        let title = UILabel()
        title.text = "当前应付款余额总计:"
        title.font = UIFont.boldSystemFont(ofSize: 13)
        title.textColor = UIColor(named: "灰色字体颜色")
        view.addSubview(title)
        title.sizeToFit()
        title.snp.makeConstraints { (make) in
            make.top.left.equalTo(15)
            make.height.equalTo(18.5)
            make.width.equalTo(title.bounds.size.width)
        }
        let ti1 = UILabel()
        ti1.text = "¥\(first)"
        ti1.font = UIFont.boldSystemFont(ofSize: 13)
        ti1.textColor = UIColor(named: "#F57575")
        view.addSubview(ti1)
        ti1.snp.makeConstraints { (make) in
            make.left.equalTo(title.snp_right)
            make.right.equalTo(0)
            make.centerY.equalTo(title.snp_centerY)
            make.height.equalTo(18.5)
        }
        
        let title2 = UILabel()
        title2.font = UIFont.boldSystemFont(ofSize: 13)
        title2.text = "已付应付账款:"
        title2.textColor = UIColor(named: "灰色字体颜色")
        view.addSubview(title2)
        title2.sizeToFit()
        title2.snp.makeConstraints { (make) in
            make.top.equalTo(title.snp_bottom).offset(10)
            make.left.equalTo(15)
            make.height.equalTo(18.5)
            make.width.equalTo(title2.bounds.size.width)
        }
        let ti11 = UILabel()
        ti11.text = "¥\(second)"
        ti11.font = UIFont.boldSystemFont(ofSize: 13)
        ti11.textColor = UIColor(named: "#F57575")
        view.addSubview(ti11)
        ti11.snp.makeConstraints { (make) in
            make.left.equalTo(title2.snp_right)
            make.right.equalTo(0)
            make.centerY.equalTo(title2.snp_centerY)
            make.height.equalTo(18.5)
        }
        
        if navTitle.contains("应收"){
            title.text = "当前应收款余额总计:"
            title2.text = "本期借方余额:"
            let title3 = UILabel()
            title3.font = UIFont.boldSystemFont(ofSize: 13)
            title3.text = "本期贷方余额:"
            title3.textColor = UIColor(named: "灰色字体颜色")
            view.addSubview(title3)
            title3.sizeToFit()
            title3.snp.makeConstraints { (make) in
                make.top.equalTo(title2.snp_bottom).offset(10)
                make.left.equalTo(15)
                make.height.equalTo(18.5)
                make.width.equalTo(title3.bounds.size.width)
            }
            let ti111 = UILabel()
            ti111.text = "¥\(third)"
            ti111.font = UIFont.boldSystemFont(ofSize: 13)
            ti111.textColor = UIColor(named: "#F57575")
            view.addSubview(ti111)
            ti111.snp.makeConstraints { (make) in
                make.left.equalTo(title3.snp_right)
                make.right.equalTo(0)
                make.centerY.equalTo(title3.snp_centerY)
                make.height.equalTo(18.5)
            }
        }
        
        let l1 = UIView()
        l1.backgroundColor = UIColor(named: "灰色分界线")
        view.addSubview(l1)
        l1.snp.makeConstraints { (make) in
            make.height.equalTo(1)
            make.top.right.left.equalTo(0)
        }
        
        
        
        return view
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if navTitle.contains("应付"){
            return 77
        }
        return 105.5
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if navTitle.contains("应付"){
            return dataArr.count
        }
        return datas.count
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 210
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "YingFuZhangKuanXQCell") as! YingFuZhangKuanXQCell
        cell.delegate = self
        cell.submitBtn.tag = indexPath.row
        cell.tag = indexPath.row
        if navTitle.contains("应付"){
            if dataArr.count > 0 {
                let model = dataArr[indexPath.row]
                cell.model = model
            }
        }else{
            let model = datas[indexPath.row]
            cell.data = model
        }
        return cell
    }
    //MARK: - 列表按钮改变状态
    func YingFuZhangKuanXQCellBtnClick(cell: YingFuZhangKuanXQCell, sender: UIButton) {
        let view = GLAlertSelectView(frame: self.view.bounds)
        view.delegate = self
        view.isYsYf = true
        view.ysyfTitle = sender.titleLabel?.text! as! String
        view.cellTag = cell.tag
        switch sender.titleLabel?.text {
        case "付款":
            if glSelectView == nil {
                view.dataArr = typeArr
                view.titleLbl.text = "请选择付款方式"
                glSelectView = view
                self.view.addSubview(view)
            }
            break
        case "设置未付款":
            if glSelectView == nil {
                view.titleLbl.text = "请选择付款状态"
                view.selectNum = 0
                view.dataArr = payTypeArr
                glSelectView = view
                self.view.addSubview(view)
            }
            break
        case "收款":
            if glSelectView == nil {
                view.dataArr = typeArr
                view.titleLbl.text = "请选择收款方式"
                glSelectView = view
                self.view.addSubview(view)
            }
            break
        case "设置未收款":
            let alertView = GeliAlertView(frame: self.view.window!.bounds)
            alertView.delegate = self;
            alertView.tishiLbl.text = ""
            alertView.rightBtn.tag = cell.tag
            alertView.titileLbl.text = "确定设为未收款?"
            alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确定"), for: .normal)
            self.view.window?.addSubview(alertView)
            break
        default:
            break
        }
        
    }
    var keyword = ""
    var page = 0
    //MAKR:--调起搜索后添加个蒙版本
    var blackBtnView:UIButton! = nil
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        print("点击搜索进行--")
        searchBar.resignFirstResponder()
        keyword = searchBar.text!
        listView.mj_header?.beginRefreshing()
    }
    //MARK:--取消搜索代理
    func clearSearchAction() {
        print("取消搜索代理了--")
    }
    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
        print("编辑即将结束了--")
        removeBlackBtnView()
        if searchBar.text?.count == 0 && keyword.count != 0{
            keyword = searchBar.text!
            listView.mj_header?.beginRefreshing()
            
        }
    }
    func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
        print("调起搜索后添加个蒙版本")
        blackBtnView = UIButton ()
        blackBtnView.backgroundColor = UIColor.init(named: "提示视图背景色")
        self.view.addSubview(blackBtnView)
        blackBtnView.snp.makeConstraints { (make) in
            make.left.right.bottom.equalToSuperview()
            make.top.equalTo(searchBGView!.snp_bottom)
        }
        blackBtnView.addTarget(self, action: #selector(removeBlackBtnView), for: .touchUpInside)
        
        return true
    }
    @objc func removeBlackBtnView(){
        if blackBtnView != nil {
            blackBtnView.removeFromSuperview()
            searchV!.resignFirstResponder()
        }
    }
    //MARK:--加载数据
    @objc func loadData(){
        print("加载数据")
        page = 1
        if (navTitle.contains("应付")){
            let dic = ["user_token":UserToken as Any,"keyword":keyword as Any,"page":page as Any,"ven_id":ven_id as Any]
            accountsPayableDetail(dic, success: { (data) in
                let model = (data as! accountsPayableDetailModel)
                self.dataArr.removeAll()
                model.data?.list?.forEach({ (item) in
                    self.dataArr.append(item)
                })
                if model.data?.payable != nil{
                    self.first = model.data?.payable as! String
                }
                if model.data?.already != nil {
                    self.second = "\(model.data!.already!)"
                }
                
                self.listView.reloadData()
                self.listView.mj_header?.endRefreshing()
                self.page = 2
                if model.data?.list?.count == 0 {
                    self.listView.mj_footer?.endRefreshingWithNoMoreData()
                }else{
                    self.listView.mj_footer?.endRefreshing()
                }
            }) { (error) in
                self.listView.mj_header?.endRefreshing()
            }
        }else{//应收
            let dic = ["user_token":UserToken as Any,"keyword":keyword as Any,"page":page as Any,"cus_id":ven_id as Any]
            accountReceivableDetail(dic, success: { (data) in
                let model = data as! accountReceivableDetailModel
                self.datas.removeAll()
                model.data?.list?.forEach({ (item) in
                    self.datas.append(item)
                })
                self.first = model.data?.arrears_money! as! String
                self.second = "0.00"
                if model.data!.jf != nil {
                    self.second = "\(model.data!.jf!)"
                }
                self.third = "0.00"
                if model.data!.df != nil {
                    self.third = "\(model.data!.df!)"
                }
                
                self.listView.reloadData()
                self.listView.mj_header?.endRefreshing()
                self.page = 2
                if model.data?.list?.count == 0 {
                    self.listView.mj_footer?.endRefreshingWithNoMoreData()
                }else{
                    self.listView.mj_footer?.endRefreshing()
                }
            }) { (err) in
                self.listView.mj_header?.endRefreshing()
            }
        }
    }
    //MARK:--加载更多数据
    @objc func loadMoreData(){
        print("加载更多数据")
        if (navTitle.contains("应付")){
            let dic = ["user_token":UserToken as Any,"keyword":keyword as Any,"page":page as Any,"ven_id":ven_id as Any]
            accountsPayableDetail(dic, success: { (data) in
                let dataM = data as! accountsPayableDetailModel
                if dataM.data?.list?.count == 0 {
                    self.listView.mj_footer?.endRefreshingWithNoMoreData()
                }else{
                    self.page += 1
                    dataM.data?.list?.forEach({ (model) in
                        self.dataArr.append(model)
                    })
                    self.listView.reloadData()
                    self.listView.mj_footer?.endRefreshing()
                }
            }) { (error) in
                self.listView.mj_footer?.endRefreshing()
                
            }
        }else{//应收
            let dic = ["user_token":UserToken as Any,"keyword":keyword as Any,"page":page as Any,"cus_id":ven_id as Any]
            accountReceivableDetail(dic, success: { (data) in
                let model = data as! accountReceivableDetailModel
                if model.data?.list?.count == 0 {
                    self.listView.mj_footer?.endRefreshingWithNoMoreData()
                }else{
                    self.page += 1
                    model.data?.list?.forEach({ (item) in
                        self.datas.append(item)
                    })
                    self.listView.reloadData()
                    self.listView.mj_footer?.endRefreshing()
                }
            }) { (err) in
                self.listView.mj_footer?.endRefreshing()
            }
        }
    }
    
}