// // BalaiUjiPresenter.swift // Sirani // // Created by Anhar Solehudin on 03/04/19. // Copyright © 2019 Anhar Solehudin. All rights reserved. // import Foundation import SwiftyJSON class BalaiUjiPresenter { private let siraniApiServices: SiraniApiServices weak private var view: BalaiUjiViewDelegate? init(siraniApiServices: SiraniApiServices) { self.siraniApiServices = siraniApiServices } func attachView(view: BalaiUjiViewDelegate?) { self.view = view } func detachView() { self.view = nil } func loadData(status: String, limit: Int, page: Int, jenis: 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 = [BalaiUji]() siraniApiServices.postToGetBalaiUjiNew(user_id: userId, cust_id: custId, role_id: roleId, status: status, limit: limit, page: page, search: search, jenis: jenis).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 balaiUji = BalaiUji( balai_id: item["balai_id"].intValue, ctia: item["ctia"].intValue, gcf: item["gcf"].intValue, kontak: item["kontak"].stringValue, latitude: item["latitude"].stringValue, longitude: item["longitude"].stringValue, nama: item["nama"].stringValue, negara: item["negara"].stringValue, no_lab: item["no_lab"].stringValue, ruang_lingkup: item["ruang_lingkup"].stringValue, tanggal_terbit: item["tanggal_terbit"].stringValue, tempat: item["tempat"].stringValue, website: item["website"].stringValue ) dataList.append(balaiUji) } self.setDataList(dataList: dataList) } else { if page > 0 { self.setDataList(dataList: dataList) } else { self.showNoData() } } } else { self.showNoData() } } else { self.showNoData() } } else { self.showNoData() } } } // other functions private func setDataList(dataList: [BalaiUji]) { 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() } } }