//
//  RetailManageViewController.swift
//  GeliBusinessPlatform
//
//  Created by 刘俊宏 on 2020/11/3.
//  Copyright © 2020 junye lu. All rights reserved.
//

import UIKit

class RetailManageViewController: BaseViewController,UITableViewDelegate,UITableViewDataSource,RetailManageFooterViewDelagte, GeliAlertViewDelegate{
 
    var page : Int = 0
    let UserToken = UserDefaults.standard.value(forKey: "user_token")
    var startTime :Int? = 0
    var endTime :Int? = 0
    var dbt_type : Int = 0
    var dbt_people : Int = 1 //分销人类型(1我的订单分销,2代销订单)
    var keyword = ""
    var isUpData = false{
        didSet{
            if !isUpData {
                if listView  != nil {
                    listView.mj_header?.beginRefreshing()
                }
            }
        }
    }
    @IBOutlet weak var listView: UITableView!
    @IBOutlet weak var searchBgView: UIView!
    @IBOutlet weak var changeBgView: UIView!
    
    //MARK:--VC 初始化
    convenience init(title: String) {
        self.init(title: title, content: "")
    }
    init(title: String, content: String) {
        super.init(nibName: nil, bundle: nil)
        self.title = title
        if self.title == "代销订单" {
            dbt_people = 2
        }
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        listView.register(UINib(nibName: "RetailManageViewCell", bundle: nil), forCellReuseIdentifier: "RetailManageViewCell")
        listView.separatorStyle = .none
        listView.delegate = self
        listView.dataSource = self
        headerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadData))
        listView.mj_header = headerMJ
        footerMJ.setRefreshingTarget(self, refreshingAction: #selector(loadMoreData))
        listView.mj_footer = footerMJ
        listView.mj_header?.beginRefreshing()
    }
  
    //MARK:--loadData
    //MARK:--列表数据源
    var dataArr:Array<dbtOrderLisDataModel> = []
//    var dataArr2:Array<dbtOrderLisDataModel> = []

    @objc func loadData(){
        isUpData = true

        //结算方式(0全部1人工结算 2自动结算(3待自动结算、4已自动结算)(5待人工结算6已人工结算))
        page = 1
        let dic = ["user_token":UserToken as Any,"keyword":keyword,"page":page,"dbt_type":dbt_type,"dbt_people":dbt_people,"start_time":startTime as Any,"end_time":endTime as Any]
        
        dbtOrderLis(dic) { (data) in
            let dataM = data as! dbtOrderLisModel
            
            self.dataArr.removeAll()
            dataM.data?.forEach({ (model) in
                self.dataArr.append(model)
            })
            self.listView.mj_header?.endRefreshing()

            self.listView.reloadData()
             if dataM.data?.count == 0 {
                self.listView.mj_footer?.endRefreshingWithNoMoreData()
            }else{
                self.listView.mj_footer?.endRefreshing()
            }
            self.page = 2
   
        } failture: { (error) in
            self.listView.mj_header?.endRefreshing()

        }

    }
    @objc func loadMoreData(){
        
        let dic = ["user_token":UserToken as Any,"keyword":keyword,"page":page,"dbt_type":dbt_type,"dbt_people":dbt_people,"start_time":startTime as Any,"end_time":endTime as Any]
        dbtOrderLis(dic) { (data) in
            let dataM = data as! dbtOrderLisModel
            if dataM.data?.count == 0 {
                self.listView.mj_footer?.endRefreshingWithNoMoreData()
            }else{
                self.page += 1
                dataM.data?.forEach({ (model) in
                    self.dataArr.append(model)
                })
                self.listView.reloadData()
                self.listView.mj_footer?.endRefreshing()
            }
            
            

        } failture: { (error) in
            self.listView.mj_footer?.endRefreshing()

        }
    }
    func numberOfSections(in tableView: UITableView) -> Int {
    
        return self.dataArr.count
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 
        let goodArrModel = self.dataArr[section]
        
        return goodArrModel.order_goods!.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "RetailManageViewCell") as! RetailManageViewCell
        let goodArrModel = self.dataArr[indexPath.section]

        let goodModel = goodArrModel.order_goods![indexPath.row]
        
        cell.goodsLbl.text = goodModel.goods_name
        cell.numLbl.text = "x" + StringByInt(number: goodModel.goods_number!)
        cell.priceLbl.text = "¥" + goodModel.amount!
    
        if (indexPath.row + 1) == goodArrModel.order_goods?.count {
            cell.dotImgV.isHidden = true

        }else{
            cell.dotImgV.isHidden = false
        }

        return cell
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if self.title == "代销订单" {
            let vc = RetailManageDetailViewController()
            let goodArrModel = self.dataArr[indexPath.section]
//            vc.orderId = goodArrModel.order_id
            vc.orderId = 12637
            vc.dbt_shop_id = goodArrModel.shop_id
            self.navigationController?.pushViewController(vc, animated: true)
        }else{
            let vc = RetailManageDetailViewController()
            let goodArrModel = self.dataArr[indexPath.section]
//            vc.orderId = goodArrModel.order_id
            vc.orderId = 12637
            self.navigationController?.pushViewController(vc, animated: true)
        }

    }
    
 
    @objc func didselectCellHorF(sender:UITapGestureRecognizer){
        
        if self.title == "代销订单" {
            let vc = RetailManageDetailViewController()
            let goodArrModel = self.dataArr[sender.view!.tag]
            vc.orderId = goodArrModel.order_id
            vc.dbt_shop_id = goodArrModel.shop_id
            self.navigationController?.pushViewController(vc, animated: true)
        }else{
            let vc = RetailManageDetailViewController()
            let goodArrModel = self.dataArr[sender.view!.tag]
            vc.orderId = goodArrModel.order_id
            self.navigationController?.pushViewController(vc, animated: true)
        }

    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerV = UIView()
        let tap = UITapGestureRecognizer(target: self, action: #selector(didselectCellHorF))
        headerV.addGestureRecognizer(tap)
        headerV.tag = section
        
        let contentV = RetailManageHeaderView()
        headerV.addSubview(contentV)
        contentV.snp_makeConstraints { (make) in
            make.left.top.right.bottom.equalToSuperview()
        }
        let model = self.dataArr[section]
        contentV.snNumLbl.text = model.order_sn
        var dbt_typeStr = "人工结算"
        if model.dbt_type == 2 {
            dbt_typeStr = "自动结算"
        }
        switch model.pay_status {
        case 2:
            contentV.stateLbl.text = "已付款/" + dbt_typeStr
            break
        case 10:
            contentV.stateLbl.text = "月结/" + dbt_typeStr
            break
        case 11:
            contentV.stateLbl.text = "已退款/" + dbt_typeStr
            break
        default:
            contentV.stateLbl.text = "未付款/" + dbt_typeStr
            break
        }
        return headerV

    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50
    }
    
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let footerV = UIView()
        let tap = UITapGestureRecognizer(target: self, action: #selector(didselectCellHorF))
        footerV.addGestureRecognizer(tap)
        footerV.tag = section

        let contentV = RetailManageFooterView()
        footerV.addSubview(contentV)
        contentV.snp_makeConstraints { (make) in
            make.left.top.right.bottom.equalToSuperview()
        }
        let model = self.dataArr[section]
        contentV.priceLbl.text = model.sum_amount!
        if model.commission_status == 1 {
            contentV.moneyLbl.text = model.sum_commission_val! + "(已结算)"

        }else{
            contentV.moneyLbl.text = model.sum_commission_val! + "(未结算)"

        }
        contentV.actionBtn.tag = section
        contentV.delgate = self
        return footerV

    }
    func tapRetailManageFooterBtnAction(sender: Int) {
        //标记为人工结算
        let alertView = GeliAlertView(frame: self.view.window!.bounds)
        alertView.delegate = self;
        alertView.tishiLbl.text = ""
        alertView.titileLbl.text = "是否把该订单标记为已人工结算?"
        alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确定"), for: .normal)
        alertView.rightBtn.tag = sender
        self.view.window?.addSubview(alertView)
    }
    func sureGeliAlertViewAction(sender: UIButton) {
        HUD.flash(.progress)
        let model = self.dataArr[sender.tag]
        editCommissionStatus(["user_token":UserToken as Any,"order_id":model.order_id as Any]) { (data) in
            HUD.hide()
            model.commission_status = 1
            
            HUD.flash(.labeledSubSuccess(subtitle: "确认成功"),delay: 1.2)
            self.listView.reloadSections([sender.tag], with: .none)
        } failture: { (error) in

        }

    }

    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        let model = self.dataArr[section]
        //已结算
        if model.commission_status == 1 {
            return 48
        }
        //或 自动结算 不需要显示标记
        if model.dbt_type == 2 {
            return 48
        }
        return 100

    }
}