//
//  OrderListViewController.swift
//  GeliBusinessPlatform
//
//  Created by 刘俊宏 on 2020/4/25.
//  Copyright © 2020 junye lu. All rights reserved.
//

import UIKit
import Parchment

class OrderListViewController: BaseViewController ,UISearchBarDelegate, SearchBarViewDelegate, PagingViewControllerDelegate, OrderSelectMoreViewDelegate{
    fileprivate let cities = [
        "全部",
        "待确认",
        "待付款",
        "待发货",
        "已发货",
        "退款/货",
        "已取消"
    ]
    let viewControllers = [
        OrderListVC(title: "全部"),
        OrderListVC(title: "待确认"),
        OrderListVC(title: "待付款"),
        OrderListVC(title: "待发货"),
        OrderListVC(title: "已发货"),
        OrderListVC(title: "退款/货"),
        OrderListVC(title: "已取消")
    ]
    var searchV : SearchBarView? = nil
    @IBOutlet weak var contentView: UIView!
    @IBOutlet weak var searchBgView: UIView!
    
    //头部滚动视图
    weak var pagingVC : PagingViewController?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = UIColor.init(named: "白色背景色")
        //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
        
        let pagingViewController = PagingViewController(viewControllers: viewControllers)
        pagingViewController.indicatorColor = UIColor.init(named: "蓝色字体颜色")!
        pagingViewController.menuItemSize = .fixed(width: 0, height: 44*glscale)
        pagingViewController.font = UIFont.systemFont(ofSize: 13)
        pagingViewController.selectedFont = UIFont.systemFont(ofSize: 13)
        pagingViewController.textColor = UIColor.init(named: "灰色字体颜色")!
        pagingViewController.selectedTextColor = UIColor.init(named: "蓝色字体颜色")!
        pagingViewController.delegate = self
        pagingViewController.dataSource = self
        pagingViewController.sizeDelegate = self
        addChild(pagingViewController)
        contentView.addSubview(pagingViewController.view)
        contentView.constrainToEdges(pagingViewController.view)
        pagingViewController.didMove(toParent: self)
        pagingVC = pagingViewController
        
        //MARK:--添加个刷新通知
        NotificationCenter.default.addObserver(self, selector: #selector(refreshingByOrderHavChange), name: NSNotification.Name(rawValue: "orderChange"), object: nil)
        
        NotificationCenter.default.addObserver(self, selector: #selector(jpushServiceNotification(notion:)), name: NSNotification.Name(rawValue: "jpushServiceNotification0"), object: nil)
        
        //跳转对应的头部视图
        NotificationCenter.default.addObserver(self, selector: #selector(orderNavChange), name: NSNotification.Name(rawValue: "orderNavChange"), object: nil)

    }
    @objc func orderNavChange(notion:Notification){
        let dic = notion.userInfo
        pagingVC!.select(index: dic!["tag"] as Any as! Int, animated: true)
    }
    //MARK:--jpushServiceNotification
    @objc func jpushServiceNotification(notion:Notification) {
        let vc = MsgCenterViewController()
        self.navigationController?.pushViewController(vc, animated: true)
    }
    @objc func refreshingByOrderHavChange(){
        viewControllers.forEach { (vc) in
            vc.isUpData = false
        }
    }
    //MARK:--搜索按钮代理
    var keyword = ""
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        print("点击搜索进行--")
        searchBar.resignFirstResponder()
        keyword = searchBar.text!
        viewControllers.forEach { (vc) in
            vc.keyword = keyword
            vc.isUpData = false
        }
        let vc = viewControllers[selectIndex]
        vc.tableV.mj_header?.beginRefreshing()
 
    }
    //MARK:--取消搜索代理
    func clearSearchAction() {
         print("取消搜索代理了--")
    }
    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
        print("编辑即将结束了--")
        removeBlackBtnView()
        if searchBar.text?.count == 0 && keyword.count != 0{
            keyword = searchBar.text!
            viewControllers.forEach { (vc) in
                vc.keyword = keyword
                vc.isUpData = false
            }
            let vc = viewControllers[selectIndex]
            vc.tableV.mj_header?.beginRefreshing()
        }
    }
    //MARK:--筛选
    var BeginDate: Date! = nil
    var EndDate: Date! = nil
    var paySArr:Array<Bool> = [false,false,false,false,false,false]
    var bugSArr:Array<Bool> = [false,false]
    var sendSArr:Array<Bool> = [false,false,false,false]
    var selectV : OrderSelectMoreView! = nil
    @IBAction func SelectOtherAction(_ sender: UIButton) {
        print("筛选")
        if blackBtnView != nil {
            blackBtnView.removeFromSuperview()
            searchV!.resignFirstResponder()
        }
        if selectV == nil {
            selectV = OrderSelectMoreView()
            selectV.delegate = self
            self.view.window?.addSubview(selectV)
            selectV.snp.makeConstraints { (make) in
                make.left.right.bottom.equalToSuperview()
                make.top.equalTo(contentView.snp_top)
            }

            selectV.setUIbyData(beginDate: BeginDate, endginDate: EndDate, paySelectArr: paySArr, bugSelectArr: bugSArr, sendSelectArr: sendSArr)
 
        }else{
            selectV.removeFromSuperview()
            selectV  = nil
        }
        
    }
    
    //MARK: -- 筛选代理
    func sureAction(beginDate: Date?, endginDate: Date?, paySelectArr: Array<Bool>, bugSelectArr: Array<Bool>, sendSelectArr: Array<Bool>) {
        selectV  = nil
        EndDate = endginDate
        BeginDate = beginDate
        self.paySArr = paySelectArr
        self.bugSArr = bugSelectArr
        self.sendSArr = sendSelectArr
        
 
       
        viewControllers.forEach { (vc) in
            if EndDate == nil {
                vc.startTime = 0
                vc.endTime = 0
            }else{
                let timeInterval:TimeInterval = BeginDate!.timeIntervalSince1970
                let timeIntervalEnd:TimeInterval = EndDate!.timeIntervalSince1970
                
                vc.startTime = Int(timeInterval)
                vc.endTime = Int(timeIntervalEnd)
            }
            //支付状态
            var payStr = ""
            for i in 0..<self.paySArr.count {
                let isBool = self.paySArr[i]
                var tmpeStr = ""
                if isBool {
                    switch i {
                    case 0:
                        tmpeStr = "0"
                        break
                    case 1:
                        tmpeStr = "1"
                        break
                    case 2:
                        tmpeStr = "2"
                        break
                    case 3:
                        tmpeStr = "10"
                        break
                    case 4:
                        tmpeStr = "11"
                        break
                    case 5:
                        tmpeStr = "12"
                        break
                    default:
                        break
                    }
                }
                if tmpeStr.count > 0 {
                    if payStr.count == 0 {
                        payStr = tmpeStr
                    }else{
                        payStr = payStr + ";" + tmpeStr
                    }
                }
            }
            if payStr.count == 0 {
                payStr = "100"
            }
            vc.payStatus = payStr
            //下单方式
            vc.orderSource = 0
            for i in 0..<self.bugSArr.count {
                let isBool = self.bugSArr[i]
                if isBool {
                    vc.orderSource = i + 1
                }
            }
            //商品配送状态
            var shippingStr = ""
            for i in 0..<self.sendSArr.count {
                let isBool = self.sendSArr[i]
                var tmpeStr = ""
                if isBool {
                    switch i {
                    case 0:
                        tmpeStr = "0"
                        break
                    case 1:
                        tmpeStr = "1"
                        break
                    case 2:
                        tmpeStr = "2"
                        break
                    case 3:
                        tmpeStr = "4"
                        break
                    default:
                        break
                    }
                }
                if tmpeStr.count > 0 {
                    if shippingStr.count == 0 {
                        shippingStr = tmpeStr
                    }else{
                        shippingStr = shippingStr + ";" + tmpeStr
                    }
                }
            }
            if shippingStr.count == 0 {
                shippingStr = "100"
            }
            vc.shippingStatus = shippingStr
            vc.isUpData = false
        }
        let vc = viewControllers[selectIndex]
        vc.tableV.mj_header?.beginRefreshing()
 
        
    }
 
    func colseAction() {
        selectV  = nil
    }
    //MAKR:--调起搜索后添加个蒙版本
    var blackBtnView:UIButton! = nil
    func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
        print("调起搜索后添加个蒙版本")
        blackBtnView = UIButton ()
        blackBtnView.backgroundColor = UIColor.init(named: "提示视图背景色")
        contentView.addSubview(blackBtnView)
        blackBtnView.snp.makeConstraints { (make) in
            make.left.right.top.bottom.equalToSuperview()
        }
        blackBtnView.addTarget(self, action: #selector(removeBlackBtnView), for: .touchUpInside)
        if selectV != nil {
            selectV.removeFromSuperview()
            selectV  = nil
        }
        return true
    }
    @objc func removeBlackBtnView(){
        if blackBtnView != nil {
            blackBtnView.removeFromSuperview()
            searchV!.resignFirstResponder()
        }
    }
    //MARK:---滚动选择
    var selectIndex = 0
    func pagingViewController(_ pagingViewController: PagingViewController, didScrollToItem pagingItem: PagingItem, startingViewController: UIViewController?, destinationViewController: UIViewController, transitionSuccessful: Bool) {
        guard let item = pagingItem as? PagingIndexItem else { return}
        print("滚动至vc\(item.index)")
        if selectIndex != item.index {
            selectIndex = item.index
            let vc = viewControllers[selectIndex]
            if !vc.isUpData {
                vc.tableV.mj_header?.beginRefreshing()
            }
        }
    }
    
}
extension OrderListViewController: PagingViewControllerDataSource {
    
    func pagingViewController(_: PagingViewController, pagingItemAt index: Int) -> PagingItem {
        return PagingIndexItem(index: index, title: cities[index])
    }
    
    func pagingViewController(_: PagingViewController, viewControllerAt index: Int) -> UIViewController {
        return viewControllers[index]
    }
    
    func numberOfViewControllers(in pagingViewController: PagingViewController) -> Int {
        return cities.count
    }
    
}

extension OrderListViewController: PagingViewControllerSizeDelegate {
    
    
    func pagingViewController(_ pagingViewController: PagingViewController, widthForPagingItem pagingItem: PagingItem, isSelected: Bool) -> CGFloat {
        guard let item = pagingItem as? PagingIndexItem else { return 0 }
        
        let insets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
        let size = CGSize(width: CGFloat.greatestFiniteMagnitude, height: pagingViewController.options.menuItemSize.height)
        let attributes = [NSAttributedString.Key.font: pagingViewController.options.font]
        
        let rect = item.title.boundingRect(with: size,
                                           options: .usesLineFragmentOrigin,
                                           attributes: attributes,
                                           context: nil)
        
        let width = ceil(rect.width) + insets.left + insets.right
        
        if isSelected {
            return width * 1.5
        } else {
            return width
        }
    }
    
}