// // AssessmentBeneficiaryViewModel.swift // LMS // // Created by Suraj Kumar Mandal on 13/09/22. // import Foundation import Alamofire class AssessmentBeneficiaryViewModel { var delegate: AssessmentBeneficiaryProtocol? func getAssessmentList(userId:Int, month:String) { if let delegate = delegate { delegate.startLoader() let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let url = ApiURL.GetAssessmentList + "/\(userId)/false" print(url) let headers: HTTPHeaders = [ "Authorization": "Bearer \(accessToken)", "Accept": "application/json", "Content-Type": "application/json" ] print(headers) let parameters: [String: Any] = [ "createdDate" : month, "statuses" : [] ] print(parameters) AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers) .responseString { 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 assessmentListData = try decoder.decode([AssessmentListModel].self, from: jsonData) delegate.assessmentListModel(model: assessmentListData) print(assessmentListData.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 } } else { print("Server error") } } } } func getQuizAttempts(userId:Int, assessmentId:Int) { if let delegate = delegate { delegate.startLoader() let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String let url = ApiURL.GetQuizAttempts + "/\(userId)/\(assessmentId)" 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() if let json = response.value { let data = json as! [String:Any] print(data) let assessmentId = data["assessmentId"] as? Int let count = data["count"] as? Int delegate.quizAttempts(assessmentId: assessmentId ?? 0, count: count ?? 0) } break case .failure(let error): delegate.stopLoader() print(error.localizedDescription) delegate.showError(error: error.localizedDescription) break } } else { print("Server error") } } } } } protocol AssessmentBeneficiaryProtocol { func startLoader() func stopLoader() func showError(error:String) func assessmentListModel(model: [AssessmentListModel]) func quizAttempts(assessmentId:Int, count:Int) }