// // DaftarRhuPresenter.swift // Sirani // // Created by Anhar Solehudin on 27/04/19. // Copyright © 2019 Anhar Solehudin. All rights reserved. // import Foundation import SwiftyJSON class DaftarRhuPresenter { private let siraniApiServices: SiraniApiServices weak private var view: DaftarRhuViewDelegate? init(siraniApiServices: SiraniApiServices) { self.siraniApiServices = siraniApiServices } func attachView(view: DaftarRhuViewDelegate?) { 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 var custId = 0 var roleId = "" var userId = 0 let savedCustId = UserState.instance.getCustId() if savedCustId > 0 { custId = savedCustId } let savedRoleId = UserState.instance.getRoleId() if !savedRoleId.isEmpty { roleId = savedRoleId } let savedUserId = UserState.instance.getUserId() if savedUserId > 0 { userId = savedUserId } var dataList = [DaftarRhu]() siraniApiServices.postToGetDaftarRhu(cursor: cursor, prev: prev, jenis: jenis, columns: columns, search: search, cust_id: custId, user_id: userId, role_id: roleId).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 daftarRhu = DaftarRhu( apl_id: item["apl_id"].int, plg_id: item["plg_id"].int, rhu_no: item["rhu_no"].stringValue, upload_file_date_convert: item["upload_file_date_convert"].stringValue, jmleval: item["jmleval"].intValue, custs: item["custs"].string, eqp_name: item["eqp_name"].stringValue, models: item["models"].stringValue, merk: item["merk"].stringValue, balai: item["balai"].stringValue, tab_desc: item["tab_desc"].string, file_lhu: item["file_lhu"].stringValue, file_emc: item["file_emc"].stringValue ) dataList.append(daftarRhu) } self.setDataList(dataList: dataList) } else { if cursor > 0 { self.setDataList(dataList: dataList) } else { self.showNoData() } } } else { self.showNoData() } } else { self.showNoData() } } else { self.showNoData() } } } func downloadFile(urlWeb: String, filename: String) { self.view?.showLoading() siraniApiServices.downloadFile(urlWeb: urlWeb, filename: filename).responseData { response in if let urlFile = response.fileURL { self.onDownloadSuccess(urlFile: urlFile) } else { self.onDownloadFailed() } } } // other functions private func setDataList(dataList: [DaftarRhu]) { 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() } } private func onDownloadSuccess(urlFile: URL) { DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.view?.onDownloadSuccess(urlFile: urlFile) self.view?.hideLoading() } } private func onDownloadFailed() { DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.view?.onDownloadFailed() self.view?.hideLoading() } } }