//
//  WA_4KVC.swift
//  wallpaper_project


import UIKit
import JXSegmentedView
import MJExtension
import MJRefresh
import FirebaseAnalytics
import AppLovinSDK
import Alamofire
import FirebaseRemoteConfig
import MTGSDKNewInterstitial
import MTGSDKBidding
import MTGSDK
import AnyThinkInterstitial

class WA_4KVC: WA_RootVC {
    
    @IBOutlet weak var collectionView: UICollectionView!
    
    var wallpapers = [WA_3DModel]()
    
    var currentPage: Int = 1 // 当前页数
    let pageSize: Int = 10 // 每页加载的数量
    var interstitialAd: MAInterstitialAd!
    var retryAttempt = 0.0
    
    
    // 顶部刷新
    let header = MJRefreshNormalHeader()
    // 底部刷新
    let footer = MJRefreshAutoNormalFooter()
//    var MKArr = [WallpaperModel]()
    
    // 存储不同类型的壁纸数组
    var newestWallpapers: [WallpaperData] = []
    var popularWallpapers: [WallpaperData] = []
    var FlowersWallpapers: [WallpaperData] = []
    var SuperheroesWallpapers: [WallpaperData] = []
    var ChristmasWallpapers: [WallpaperData] = []
    
    
    var remoteConfig: RemoteConfig!
    
    var isadshow:Bool = false
    
    var bidToken:String?
    var newInterstitialAdManager:MTGNewInterstitialBidAdManager?
    
    @IBOutlet weak var nameLabel: UILabel!
    var type:Int = 0
    override func viewDidLoad() {
        super.viewDidLoad()
//        self.createInterstitialAd()
        Analytics.logEvent("in_4k", parameters: nil)
        self.view.backgroundColor = .white
        setCollectionView()

        setRefresh()
        
        if StartManager.shared.superHero == true{
//             return dataimag.count
//            cell.typeImagV.image = UIImage(named: "\(self.dataimag[indexPath.row])")
            if self.type == 1{
                self.nameLabel.text = "4K"
//                 self.wallpapers.count
            }else if type == 2{
                self.nameLabel.text = "Newest"
            }else if type == 3{
                self.nameLabel.text = "Popular Wallpapers"
            }else if type == 4{
                self.nameLabel.text = "Superheroes"
            }else if type == 5{
                self.nameLabel.text = "Christmas Wallpapers"
            }else{
                self.nameLabel.text = "Flowers"
            }
        }else{
//             return dataimaghero.count
//            cell.typeImagV.image = UIImage(named: "\(self.dataimaghero[indexPath.row])")
            if self.type == 1{
                self.nameLabel.text = "4K"
//                 self.wallpapers.count
            }else if type == 2{
                self.nameLabel.text = "Newest"
            }else if type == 3{
                self.nameLabel.text = "Popular Wallpapers"
            }else if type == 4{
                self.nameLabel.text = "Christmas Wallpapers"
            }else{
                self.nameLabel.text = "Flowers"
            }
        }


    }
    
    @IBAction func backbtn(_ sender: Any) {
        
      

        if  self.isadshow == true{
            if ATAdManager.shared().interstitialReady(forPlacementID: "n66bdc1da370ec"){
                ATAdManager.shared().showInterstitial(withPlacementID: "n66bdc1da370ec", in: self, delegate: self)
                StartManager.shared.shelfNumber = "静态页面壁纸返回show"
                setPostSHOW()
            }else{
                self.navigationController?.popViewController(animated: true)
            }
            
        }else{
            self.navigationController?.popViewController(animated: true)
        }
    }
    
    @objc func setRefresh(){
        refreshData()
 
        header.setRefreshingTarget(self, refreshingAction: #selector(WA_LIVEVC.setRefresh))
        // 现在的版本要用mj_header
        
        header.setTitle("pull-to-refresh", for: .idle)
        header.setTitle("Release updates", for: .pulling)
        header.setTitle("Refreshing...", for: .refreshing)
        self.collectionView.mj_header = header
        
        
        // 上拉刷新
        footer.setRefreshingTarget(self, refreshingAction: #selector(WA_LIVEVC.loadMoreData))
        footer.setTitle("Pull up loading", for: .idle)
        footer.setTitle("Release Load", for: .pulling)
        footer.setTitle("Loading...", for: .refreshing)
        self.collectionView.mj_footer = footer
  
        
        header.beginRefreshing()
//        footer.beginRefreshing()
        
        
    }
    // 下拉刷新
       @objc func refreshData() {
           currentPage = 1
           setJsondata()
           settypeNetwork()
       }
       
       // 上拉加载更多
       @objc func loadMoreData() {
           currentPage += 1
           setJsondata()
           settypeNetwork()
       }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.navigationBar.isHidden = true
        
        // 初始化 Remote Config
        remoteConfig = RemoteConfig.remoteConfig()
        
        
        
        // 设置最小获取间隔（开发期间可以设置较小的值）
        let settings = RemoteConfigSettings()
        settings.minimumFetchInterval = 0
        remoteConfig.configSettings = settings
        // Fetch 配置值
        remoteConfig.setDefaults(fromPlist: "isopen")

//        fetchRemoteConfig()
        loadTopAD()
    }
    
    func loadTopAD(){
        let extra: [String: Any] = [
                 kATAdLoadingExtraMediaExtraKey: "custom_values"
             ]
        ATAdManager.shared().loadAD(withPlacementID: "n66bdc1da370ec", extra: extra, delegate: self)
        self.fetchRemoteConfig()
        
    }
    
    ///是否有广告
    func fetchRemoteConfig() {
        let localVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "0.0"
        remoteConfig.fetch{ (status, error) -> Void in
            if status == .success {
                print("Config fetched!")
                self.remoteConfig.activate { changed, error in
                    if error == nil{
                        let js = self.remoteConfig.configValue(forKey: "isopen").jsonValue as! [String:Any]
                        let valueopen = js["isadopen"] as! Bool
                        let valueversion = js["version"] as! String
                        DispatchQueue.main.async {
                            if valueversion == localVersion{
                                self.isadshow = false
                            }else{
                                if valueopen {
                                    self.isadshow = true
                                } else {
                                    self.isadshow = false
                                }
                            }
                        }
                        
                 
                    }
       
                }
                
            } else {
                print("Config not fetched")
                if let error = error {
                    print("Error: \(error.localizedDescription)")
                }
            }
        }
        
    }
    
    func setCollectionView(){
        collectionView.delegate = self
        collectionView.dataSource = self
        
        // 设置 collection view 的布局
               let layout = CustomCollectionViewFlowLayout()
               collectionView.collectionViewLayout = layout
            layout.scrollDirection = .vertical
        
        collectionView.register(UINib(nibName: "WA_WallpaperCollectionCell", bundle: nil), forCellWithReuseIdentifier: "WA_WallpaperCollectionCell")
        
    }
    func setJsondata(){
        // 读取 JSON 文件并解析
        if let path = Bundle.main.path(forResource: "4k", ofType: "json") {
            do {
                let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
                
                // 使用 MJExtension 解析 JSON 数据
                let jsonArray = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [[String: Any]]
                
                if let jsonArray = jsonArray {
                    // 使用 MJExtension 将 JSON 数组转换为模型数组
                     let wallpapersarr = (WA_3DModel.mj_objectArray(withKeyValuesArray: jsonArray) as? [WA_3DModel])!
                    
                    if currentPage == 1 {
                                // 只取前10条数据
                                let firstTenWallpapers = Array(wallpapersarr.prefix(10))
                        self.wallpapers = firstTenWallpapers
                                collectionView.reloadData()
                                collectionView.mj_header?.endRefreshing()
                            } else {
                                // 上拉加载更多
                                let startIndex = currentPage * pageSize
                                let moreWallpapers = Array(wallpapersarr.prefix(startIndex))
                                DispatchQueue.main.asyncAfter(deadline: .now() + 1.5){
                                    self.wallpapers = moreWallpapers
                                    self.collectionView.reloadData()
                                    self.collectionView.mj_footer?.endRefreshing()

                                        }
                            }
                }
            } catch {
                print("Error reading JSON file:", error.localizedDescription)
            }
        } else {
            print("JSON file not found.")
        }
    }
    
    func settypeNetwork(){
        // 读取 JSON 文件路径
        guard let jsonFilePath = Bundle.main.path(forResource: "my_wallpaper", ofType: "json") else {
            fatalError("Unable to locate my_wallpaper.json file.")
        }

        // 读取 JSON 数据
        do {
            // 读取 JSON 数据
            let jsonData = try Data(contentsOf: URL(fileURLWithPath: jsonFilePath))
            
            // 尝试将 JSON 数据转换为 Swift 对象
            let decoder = JSONDecoder()
            let wallpaperModels = try decoder.decode([WallpaperModel].self, from: jsonData)
               
            // 遍历解析后的 WallpaperModel 对象数组
            for wallpaperModel in wallpaperModels {
                // 根据名称将数据放入不同的数组中
                switch wallpaperModel.name {
                case "Newest":
                    newestWallpapers = wallpaperModel.data
                case "Popular Wallpapers":
                    popularWallpapers = wallpaperModel.data
                case "Superheroes":
                    SuperheroesWallpapers = wallpaperModel.data
                case "Christmas Wallpapers":
                    ChristmasWallpapers = wallpaperModel.data
                case "Flowers":
                    FlowersWallpapers = wallpaperModel.data
                default:
                    break
                }
            }
            
        } catch {
            print("Error reading or parsing JSON file: \(error)")
        }
    }
    
}
extension WA_4KVC:JXSegmentedListContainerViewListDelegate{
    func listView() -> UIView {
        return view
    }
}
extension WA_4KVC:ATInterstitialDelegate{
//    插页广告展示成功
    func interstitialDidShow(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
        print("----成功")

    }
   /// 插页广告被点击
    func interstitialDidClick(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
        print("----点击")
    }
//    插页广告已关闭
    func interstitialDidClose(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
        print("----关闭")
//        WA_TabbarCommon.TabBarController()
        self.navigationController?.popViewController(animated: true)
        
    }
    
    func didFinishLoadingAD(withPlacementID placementID: String!) {
        print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(placementID)")
    }
    
//    load失败
    func didFailToLoadAD(withPlacementID placementID: String!, error: (any Error)!) {
        print("----load失败")
        print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(String(describing: placementID))---error\(String(describing: error))")
        
    }
    // 完成加载广告
    func didFinishLoadingADSource(withPlacementID placementID: String!,extra: [AnyHashable : Any]?) {
   
        let networkID = extra?["network_firm_id"]
        
        let ecpm = extra?["adsource_price"]
        
        let country = extra?["country"]

        
        if let adsourcePriceString = extra?["adsource_price"] as? String,
           let adsourcePrice = Double(adsourcePriceString) {
            StartManager.shared.ecpm = Float(adsourcePrice) / 1000
            print("-----ecpm ID: \(StartManager.shared.ecpm)")
        } else {
            print("无法获取 adsource_price 或类型不匹配")
        }
        
        StartManager.shared.countryCode = country as? String
        StartManager.shared.network = network(networkID as! Int)
        StartManager.shared.shelfNumber = "静态页面壁纸load"
        StartManager.shared.adId = "n66bdc1da370ec"
        setPostload()
        
        
   
        
        
    print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(placementID)")
    
}
    
}

extension WA_4KVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if  StartManager.shared.superHero == true{
            if self.type == 1{
                return self.wallpapers.count
            }else if type == 2{
                return self.newestWallpapers.count
            }else if type == 3{
                return self.popularWallpapers.count
            }else if type == 4{
                return self.SuperheroesWallpapers.count
            }else if type == 5{
                return self.ChristmasWallpapers.count
            }else{
                return self.FlowersWallpapers.count
            }
        }else{
            if self.type == 1{
                return self.wallpapers.count
            }else if type == 2{
                return self.newestWallpapers.count
            }else if type == 3{
                return self.popularWallpapers.count
            }else if type == 4{
                return self.ChristmasWallpapers.count
            }else{
                return self.FlowersWallpapers.count
            }
        }


        
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WA_WallpaperCollectionCell", for: indexPath)as!WA_WallpaperCollectionCell
        if StartManager.shared.superHero == true{
            if self.type == 1{
                cell.model = self.wallpapers[indexPath.row]
            }else if type == 2{
                let model = self.newestWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else if type == 3{
                let model = self.popularWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else if type == 4{
                let model = self.SuperheroesWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else if type == 5{
                let model = self.ChristmasWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else{
                let model = self.FlowersWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }
        }else{
            if self.type == 1{
                cell.model = self.wallpapers[indexPath.row]
            }else if type == 2{
                let model = self.newestWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else if type == 3{
                let model = self.popularWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else if type == 4{
                let model = self.ChristmasWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }else{
                let model = self.FlowersWallpapers[indexPath.row]
                if let imageURL = URL(string: model.previewThumb ?? "") {
                    cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
                    }
            }
        }
        
        

        return cell
    }
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let vc = WA_DetailsVC()
        vc.type = self.type
        if StartManager.shared.superHero == true{
            if self.type == 1{
                vc.model = self.wallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 2{
                vc.modeltype = self.newestWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 3{
                vc.modeltype = self.popularWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 4{
                vc.modeltype = self.SuperheroesWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 5{
                vc.modeltype = self.ChristmasWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else{
                vc.modeltype = self.FlowersWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }
        }else{
            if self.type == 1{
                vc.model = self.wallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 2{
                vc.modeltype = self.newestWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 3{
                vc.modeltype = self.popularWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else if type == 4{
                vc.modeltype = self.ChristmasWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }else{
                vc.modeltype = self.FlowersWallpapers[indexPath.row]
                navigationController?.pushViewController(vc, animated: true)
            }
        }
   
        
    }
}

