LessonViewModel.swift 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // LessonViewModel.swift
  3. // LMS
  4. //
  5. // Created by Suraj Kumar Mandal on 06/09/22.
  6. //
  7. import Foundation
  8. import Alamofire
  9. class LessonViewModel {
  10. var delegate: LessonProtocol?
  11. func getLessons(interventionId:Int, interventionLevelId:Int, unitId:Int) {
  12. if let delegate = delegate {
  13. delegate.startLoader()
  14. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  15. let url = ApiURL.GetLessons
  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: Int] = [
  24. "interventionId" : interventionId,
  25. "interventionLevelId" : interventionLevelId,
  26. "unitId" : unitId
  27. ]
  28. print(parameters)
  29. AF.request(url,
  30. method: .post,
  31. parameters: parameters,
  32. encoding: JSONEncoding.default,
  33. headers: headers)
  34. .responseJSON { response in
  35. if response.response?.statusCode == 200 {
  36. switch response.result {
  37. case .success(_):
  38. delegate.stopLoader()
  39. guard let jsonData = response.data else {
  40. return
  41. }
  42. let decoder = JSONDecoder()
  43. do {
  44. let lessonsData = try decoder.decode([LessonModel].self, from: jsonData)
  45. delegate.lessonModel(model: lessonsData)
  46. print(lessonsData.count)
  47. } catch {
  48. print("getDataList Unexpected error: \(error).")
  49. delegate.showError(error: "getDataList Unexpected error: \(error).")
  50. }
  51. break
  52. case .failure(let error):
  53. delegate.stopLoader()
  54. print(error.localizedDescription)
  55. delegate.showError(error: error.localizedDescription)
  56. break
  57. }
  58. }
  59. }
  60. }
  61. }
  62. }
  63. protocol LessonProtocol {
  64. func startLoader()
  65. func stopLoader()
  66. func showError(error:String)
  67. func lessonModel(model: [LessonModel])
  68. }