// // OdsAplikasiEntryPresenter.swift // Sirani // // Created by Anhar Solehudin on 13/04/19. // Copyright © 2019 Anhar Solehudin. All rights reserved. // import Foundation import SwiftyJSON class OdsAplikasiEntryPresenter { private let siraniApiServices: SiraniApiServices weak private var view: OdsAplikasiEntryViewDelegate? init(siraniApiServices: SiraniApiServices) { self.siraniApiServices = siraniApiServices } func attachView(view: OdsAplikasiEntryViewDelegate?) { self.view = view } func detachView() { self.view = nil } func loadData(cursor: Int, prev: Int, jenis: String, columns: String, search: String) { self.view?.hideNoDataLayout() self.view?.showLoading() // TODO : Get Id from User Sessions let custId = 0 // let savedCustId = UserState.instance.getCustId() // if savedCustId > 0 { // custId = savedCustId // } var dataList = [OdsAplikasiEntry]() siraniApiServices.postToGetOdsAplikasiEntry(cursor: cursor, prev: prev, jenis: jenis, columns: columns, search: search, cust_id: custId).responseJSON { response in if response.error == nil { guard let data = response.data else { return } if let json = try? JSON(data: data) { if let data = json["data"].array { if data.count > 0 { for item in data { let aplikasiEntry = OdsAplikasiEntry( apl_id: item["apl_id"].intValue, resi_cek: item["resi_cek"].stringValue, jns_apl: item["jns_apl"].stringValue, tgla: item["tgla"].stringValue, plg_id: item["plg_id"].intValue, nib: item["nib"].stringValue, cust_name: item["cust_name"].stringValue, eqp_name: item["eqp_name"].stringValue, merk: item["merk"].stringValue, model: item["model"].stringValue, brand: item["brand"].stringValue, mfc_name: item["mfc_name"].stringValue, negara: item["negara"].stringValue) dataList.append(aplikasiEntry) } self.setDataList(dataList: dataList) } else { if cursor > 0 { self.setDataList(dataList: dataList) } else { self.showNoData() } } } else { self.showNoData() } } else { self.showNoData() } } else { self.showNoData() } } } // other functions private func setDataList(dataList: [OdsAplikasiEntry]) { self.view?.setDataList(dataList: dataList) DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) { self.view?.hideLoading() } } private func showNoData() { DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.view?.showNoDataLayout() self.view?.hideLoading() } } }