SessionListViewModel.swift 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. //
  2. // SessionListViewModel.swift
  3. // LMS
  4. //
  5. // Created by Suraj Kumar Mandal on 05/09/22.
  6. //
  7. import Foundation
  8. import Alamofire
  9. class SessionListViewModel {
  10. var delegate: SessionListProtocol?
  11. func getSessionList(userId:Int, interventionId:Any, batchId:Any, schoolId:Any, interventionLevelId:Any, month:Any) {
  12. if let delegate = delegate {
  13. delegate.startLoader()
  14. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  15. let url = ApiURL.GetSessionList + "/\(userId)/filter"
  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. "interventionId" : interventionId,
  25. "batchId" : batchId,
  26. "schoolId" : schoolId,
  27. "interventionLevelId" : interventionLevelId,
  28. "statuses" : [],
  29. "inmonth" : month
  30. ]
  31. print(parameters)
  32. AF.request(url,
  33. method: .post,
  34. parameters: parameters,
  35. encoding: JSONEncoding.default,
  36. headers: headers)
  37. .responseJSON { response in
  38. if response.response?.statusCode == 200 {
  39. switch response.result {
  40. case .success(_):
  41. delegate.stopLoader()
  42. guard let jsonData = response.data else {
  43. return
  44. }
  45. let decoder = JSONDecoder()
  46. do {
  47. let sessionListData = try decoder.decode([SessionListModel].self, from: jsonData)
  48. delegate.sessionListModel(model: sessionListData)
  49. print(sessionListData.count)
  50. } catch {
  51. print("getDataList Unexpected error: \(error).")
  52. delegate.showError(error: "getDataList Unexpected error: \(error).")
  53. }
  54. break
  55. case .failure(let error):
  56. delegate.stopLoader()
  57. print(error.localizedDescription)
  58. delegate.showError(error: error.localizedDescription)
  59. break
  60. }
  61. }
  62. }
  63. }
  64. }
  65. func getSessionIntervention() {
  66. if let delegate = delegate {
  67. delegate.startLoader()
  68. let url = ApiURL.GetSessionIntervention
  69. print(url)
  70. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  71. let headers: HTTPHeaders = [
  72. "Authorization": "Bearer \(accessToken)",
  73. "Accept": "application/json",
  74. "Content-Type": "application/json"
  75. ]
  76. print(headers)
  77. AF.request(url,
  78. method: .get,
  79. encoding: URLEncoding.httpBody,
  80. headers: headers)
  81. .responseJSON { response in
  82. if response.response?.statusCode == 200 {
  83. switch response.result {
  84. case .success(_):
  85. delegate.stopLoader()
  86. guard let jsonData = response.data else {
  87. return
  88. }
  89. let decoder = JSONDecoder()
  90. do {
  91. let interventionData = try decoder.decode([SessionInterventionModel].self, from: jsonData)
  92. delegate.interventionModel(model: interventionData)
  93. print(interventionData.count)
  94. } catch {
  95. print("getDataList Unexpected error: \(error).")
  96. delegate.showError(error: "getDataList Unexpected error: \(error).")
  97. }
  98. break
  99. case .failure(let error):
  100. delegate.stopLoader()
  101. print(error.localizedDescription)
  102. delegate.showError(error: error.localizedDescription)
  103. break
  104. }
  105. }
  106. }
  107. }
  108. }
  109. func getInterventionLevel(id:Int) {
  110. if let delegate = delegate {
  111. delegate.startLoader()
  112. let url = ApiURL.GetInterventionLevel + "/\(id)"
  113. print(url)
  114. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  115. let headers: HTTPHeaders = [
  116. "Authorization": "Bearer \(accessToken)",
  117. "Accept": "application/json",
  118. "Content-Type": "application/json"
  119. ]
  120. print(headers)
  121. AF.request(url,
  122. method: .get,
  123. encoding: URLEncoding.httpBody,
  124. headers: headers)
  125. .responseJSON { response in
  126. if response.response?.statusCode == 200 {
  127. switch response.result {
  128. case .success(_):
  129. delegate.stopLoader()
  130. guard let jsonData = response.data else {
  131. return
  132. }
  133. if response.data != nil {
  134. let decoder = JSONDecoder()
  135. do {
  136. let interventionLevelData = try decoder.decode([InterventionLevel].self, from: jsonData)
  137. delegate.interventionLevelModel(model: interventionLevelData)
  138. print(interventionLevelData.count)
  139. } catch {
  140. print("getDataList Unexpected error: \(error).")
  141. delegate.showError(error: "getDataList Unexpected error: \(error).")
  142. }
  143. } else {
  144. delegate.showError(error: "No data found!")
  145. }
  146. break
  147. case .failure(let error):
  148. delegate.stopLoader()
  149. print(error.localizedDescription)
  150. delegate.showError(error: error.localizedDescription)
  151. break
  152. }
  153. }
  154. }
  155. }
  156. }
  157. func getBatchList() {
  158. if let delegate = delegate {
  159. delegate.startLoader()
  160. let accessToken = UserDefaults.standard.value(forKey: "accessToken") as! String
  161. let url = ApiURL.GetBatchList
  162. print(url)
  163. let headers: HTTPHeaders = [
  164. "Authorization": "Bearer \(accessToken)",
  165. "Accept": "application/json",
  166. "Content-Type": "application/json"
  167. ]
  168. print(headers)
  169. AF.request(url,
  170. method: .get,
  171. encoding: URLEncoding.httpBody,
  172. headers: headers)
  173. .responseJSON { response in
  174. if response.response?.statusCode == 200 {
  175. switch response.result {
  176. case .success(_):
  177. delegate.stopLoader()
  178. guard let jsonData = response.data else {
  179. return
  180. }
  181. let decoder = JSONDecoder()
  182. do {
  183. let batchData = try decoder.decode([BatchListModel].self, from: jsonData)
  184. delegate.batchListModel(model: batchData)
  185. print(batchData.count)
  186. } catch {
  187. print("getDataList Unexpected error: \(error).")
  188. delegate.showError(error: "getDataList Unexpected error: \(error).")
  189. }
  190. break
  191. case .failure(let error):
  192. delegate.stopLoader()
  193. print(error.localizedDescription)
  194. delegate.showError(error: error.localizedDescription)
  195. break
  196. }
  197. }
  198. }
  199. }
  200. }
  201. }
  202. protocol SessionListProtocol {
  203. func startLoader()
  204. func stopLoader()
  205. func showError(error:String)
  206. func interventionModel(model: [SessionInterventionModel])
  207. func interventionLevelModel(model: [InterventionLevel])
  208. func batchListModel(model: [BatchListModel])
  209. func sessionListModel(model: [SessionListModel])
  210. }