// // SessionListViewModel.swift // LMS // // Created by Suraj Kumar Mandal on 05/09/22. // import Foundation import Alamofire class SessionListViewModel { var delegate: SessionListProtocol? func getSessionList(userId:Int, interventionId:Any, batchId:Any, schoolId:Any, interventionLevelId:Any, month:Any) { if let delegate = delegate { delegate.startLoader() let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let url = ApiURL.GetSessionList + "/\(userId)/filter" print(url) let headers: HTTPHeaders = [ "Authorization": "Bearer \(accessToken)", "Accept": "application/json", "Content-Type": "application/json" ] print(headers) let parameters: [String: Any] = [ "interventionId" : interventionId, "batchId" : batchId, "schoolId" : schoolId, "interventionLevelId" : interventionLevelId, "statuses" : [], "inmonth" : month ] print(parameters) AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers) .responseJSON { response in if response.response?.statusCode == 200 { switch response.result { case .success(_): delegate.stopLoader() guard let jsonData = response.data else { return } let decoder = JSONDecoder() do { let sessionListData = try decoder.decode([SessionListModel].self, from: jsonData) delegate.sessionListModel(model: sessionListData) print(sessionListData.count) } catch { print("getDataList Unexpected error: \(error).") delegate.showError(error: "getDataList Unexpected error: \(error).") } break case .failure(let error): delegate.stopLoader() print(error.localizedDescription) delegate.showError(error: error.localizedDescription) break } } } } } func getSessionIntervention() { if let delegate = delegate { delegate.startLoader() let url = ApiURL.GetSessionIntervention print(url) let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let headers: HTTPHeaders = [ "Authorization": "Bearer \(accessToken)", "Accept": "application/json", "Content-Type": "application/json" ] print(headers) AF.request(url, method: .get, encoding: URLEncoding.httpBody, headers: headers) .responseJSON { response in if response.response?.statusCode == 200 { switch response.result { case .success(_): delegate.stopLoader() guard let jsonData = response.data else { return } let decoder = JSONDecoder() do { let interventionData = try decoder.decode([SessionInterventionModel].self, from: jsonData) delegate.interventionModel(model: interventionData) print(interventionData.count) } catch { print("getDataList Unexpected error: \(error).") delegate.showError(error: "getDataList Unexpected error: \(error).") } break case .failure(let error): delegate.stopLoader() print(error.localizedDescription) delegate.showError(error: error.localizedDescription) break } } } } } func getInterventionLevel(id:Int) { if let delegate = delegate { delegate.startLoader() let url = ApiURL.GetInterventionLevel + "/\(id)" print(url) let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let headers: HTTPHeaders = [ "Authorization": "Bearer \(accessToken)", "Accept": "application/json", "Content-Type": "application/json" ] print(headers) AF.request(url, method: .get, encoding: URLEncoding.httpBody, headers: headers) .responseJSON { response in if response.response?.statusCode == 200 { switch response.result { case .success(_): delegate.stopLoader() guard let jsonData = response.data else { return } if response.data != nil { let decoder = JSONDecoder() do { let interventionLevelData = try decoder.decode([InterventionLevel].self, from: jsonData) delegate.interventionLevelModel(model: interventionLevelData) print(interventionLevelData.count) } catch { print("getDataList Unexpected error: \(error).") delegate.showError(error: "getDataList Unexpected error: \(error).") } } else { delegate.showError(error: "No data found!") } break case .failure(let error): delegate.stopLoader() print(error.localizedDescription) delegate.showError(error: error.localizedDescription) break } } } } } func getBatchList() { if let delegate = delegate { delegate.startLoader() let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let url = ApiURL.GetBatchList print(url) let headers: HTTPHeaders = [ "Authorization": "Bearer \(accessToken)", "Accept": "application/json", "Content-Type": "application/json" ] print(headers) AF.request(url, method: .get, encoding: URLEncoding.httpBody, headers: headers) .responseJSON { response in if response.response?.statusCode == 200 { switch response.result { case .success(_): delegate.stopLoader() guard let jsonData = response.data else { return } let decoder = JSONDecoder() do { let batchData = try decoder.decode([BatchListModel].self, from: jsonData) delegate.batchListModel(model: batchData) print(batchData.count) } catch { print("getDataList Unexpected error: \(error).") delegate.showError(error: "getDataList Unexpected error: \(error).") } break case .failure(let error): delegate.stopLoader() print(error.localizedDescription) delegate.showError(error: error.localizedDescription) break } } } } } } protocol SessionListProtocol { func startLoader() func stopLoader() func showError(error:String) func interventionModel(model: [SessionInterventionModel]) func interventionLevelModel(model: [InterventionLevel]) func batchListModel(model: [BatchListModel]) func sessionListModel(model: [SessionListModel]) }