AssessmentBeneficiaryViewModel.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // AssessmentBeneficiaryViewModel.swift
  3. // LMS
  4. //
  5. // Created by Suraj Kumar Mandal on 13/09/22.
  6. //
  7. import Foundation
  8. import Alamofire
  9. class AssessmentBeneficiaryViewModel {
  10. var delegate: AssessmentBeneficiaryProtocol?
  11. func getAssessmentList(userId:Int, month:String) {
  12. if let delegate = delegate {
  13. delegate.startLoader()
  14. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  15. let url = ApiURL.GetAssessmentList + "/\(userId)/false"
  16. print(url)
  17. let headers: HTTPHeaders = [
  18. "Authorization": "Bearer \(accessToken)",
  19. "Accept": "application/json",
  20. "Content-Type": "application/json"
  21. ]
  22. print(headers)
  23. let parameters: [String: Any] = [
  24. "createdDate" : month,
  25. "statuses" : []
  26. ]
  27. print(parameters)
  28. AF.request(url,
  29. method: .post,
  30. parameters: parameters,
  31. encoding: JSONEncoding.default,
  32. headers: headers)
  33. .responseString { response in
  34. if response.response?.statusCode == 200 {
  35. switch response.result {
  36. case .success(_):
  37. delegate.stopLoader()
  38. guard let jsonData = response.data else {
  39. return
  40. }
  41. let decoder = JSONDecoder()
  42. do {
  43. let assessmentListData = try decoder.decode([AssessmentListModel].self, from: jsonData)
  44. delegate.assessmentListModel(model: assessmentListData)
  45. print(assessmentListData.count)
  46. } catch {
  47. print("getDataList Unexpected error: \(error).")
  48. delegate.showError(error: "getDataList Unexpected error: \(error).")
  49. }
  50. break
  51. case .failure(let error):
  52. delegate.stopLoader()
  53. print(error.localizedDescription)
  54. delegate.showError(error: error.localizedDescription)
  55. break
  56. }
  57. } else {
  58. print("Server error")
  59. }
  60. }
  61. }
  62. }
  63. func getQuizAttempts(userId:Int, assessmentId:Int) {
  64. if let delegate = delegate {
  65. delegate.startLoader()
  66. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  67. let url = ApiURL.GetQuizAttempts + "/\(userId)/\(assessmentId)"
  68. print(url)
  69. let headers: HTTPHeaders = [
  70. "Authorization": "Bearer \(accessToken)",
  71. "Accept": "application/json",
  72. "Content-Type": "application/json"
  73. ]
  74. print(headers)
  75. AF.request(url,
  76. method: .get,
  77. encoding: URLEncoding.httpBody,
  78. headers: headers)
  79. .responseJSON { response in
  80. if response.response?.statusCode == 200 {
  81. switch response.result {
  82. case .success(_):
  83. delegate.stopLoader()
  84. if let json = response.value {
  85. let data = json as! [String:Any]
  86. print(data)
  87. let assessmentId = data["assessmentId"] as? Int
  88. let count = data["count"] as? Int
  89. delegate.quizAttempts(assessmentId: assessmentId ?? 0, count: count ?? 0)
  90. }
  91. break
  92. case .failure(let error):
  93. delegate.stopLoader()
  94. print(error.localizedDescription)
  95. delegate.showError(error: error.localizedDescription)
  96. break
  97. }
  98. } else {
  99. print("Server error")
  100. }
  101. }
  102. }
  103. }
  104. }
  105. protocol AssessmentBeneficiaryProtocol {
  106. func startLoader()
  107. func stopLoader()
  108. func showError(error:String)
  109. func assessmentListModel(model: [AssessmentListModel])
  110. func quizAttempts(assessmentId:Int, count:Int)
  111. }