You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2980 lines
110 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // RestApiManager.swift
  3. // GMERemittance
  4. //
  5. // Created by Sujal on 12/5/17.
  6. // Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. import Alamofire
  10. import SwiftyJSON
  11. import ObjectMapper
  12. enum ApiResult {
  13. case success(JSON)
  14. case failure(JSON)
  15. case updateAccessCode()
  16. case logOutUser()
  17. case timeOut()
  18. }
  19. enum Server {
  20. case uat
  21. case stagging
  22. case live
  23. }
  24. class RestApiMananger {
  25. let manager: SessionManager
  26. static let sharedInstance = RestApiMananger()
  27. init() {
  28. self.manager = Alamofire.SessionManager.default
  29. manager.session.configuration.timeoutIntervalForRequest = 150
  30. }
  31. func getUUID() -> String {
  32. let uuid = UserDefaults.standard.object(forKey: AppConstants.uuid) as? String
  33. if uuid != nil {
  34. return uuid!
  35. } else {
  36. let uuid = UUID().uuidString
  37. UserDefaults.standard.set(uuid, forKey: AppConstants.uuid)
  38. return uuid
  39. }
  40. }
  41. func getContentHeaderBeforeLogin() -> [String: String] {
  42. return ["Authorization": "Basic " + ("172017F9EC11222E8107142733:QRK2UM0Q" +
  43. ":" + getUUID()).toBase64(),
  44. "GME-TOKEN" : "39587YT398@FBQOW8RY3#948R7GB@CNEQW987GF87$TD18$1981..919@@##joghndvberteiru",
  45. "Content-Type": "application/json"]
  46. }
  47. func getContentHeaderAfterLogin() -> [String: String] {
  48. let accessCode = UserDefaults.standard.object(forKey: "com.gmeremit.accessCode") as? String ?? ""
  49. return [
  50. "Authorization": "Bearer " + accessCode,
  51. "GME-TOKEN" : "39587YT398@FBQOW8RY3#948R7GB@CNEQW987GF87$TD18$1981..919@@##joghndvberteiru",
  52. "Content-Type": "application/json",
  53. "clientId": Utility.getMyKftcClientId()
  54. ]
  55. }
  56. // ccr
  57. // added failure for delete operation. check if code is 204. if show show successfull message even in error
  58. func request<T: Mappable>(method: HTTPMethod, url: String, params: [String: Any]?, encoding: ParameterEncoding = JSONEncoding.default, needsAuthorization: Bool = true, success: @escaping (T) -> (), failure: @escaping (Error) -> ()) {
  59. if NetworkReachabilityManager()?.isReachable ?? false {
  60. let header = needsAuthorization ? getContentHeaderAfterLogin() : getContentHeaderBeforeLogin()
  61. manager.request(
  62. url,
  63. method: method,
  64. parameters: params,
  65. encoding: encoding,
  66. headers: header
  67. ).handle(success: success, failure: failure)
  68. }else {
  69. let error = NSError.init(domain: "NETWORK_REACHABILITY_DOMAIN", code: 0, userInfo: [NSLocalizedDescriptionKey : "No Internet connection found. 
Check your connection."])
  70. failure(error)
  71. }
  72. }
  73. func kftcRequest<T: Mappable>(method: HTTPMethod, header: [String: String], url: String, params: [String: Any]?, encoding: ParameterEncoding = JSONEncoding.default, needsAuthorization: Bool = true, success: @escaping (T) -> (), failure: @escaping (Error) -> ()) {
  74. if NetworkReachabilityManager()?.isReachable ?? false {
  75. manager.request(
  76. url,
  77. method: method,
  78. parameters: params,
  79. encoding: encoding,
  80. headers: header
  81. ).handle(success: success, failure: failure)
  82. }else {
  83. let error = NSError.init(domain: "NETWORK_REACHABILITY_DOMAIN", code: 0, userInfo: [NSLocalizedDescriptionKey : "No Internet connection found. 
Check your connection."])
  84. failure(error)
  85. }
  86. }
  87. func requestMultipart<T: Mappable>(
  88. method: HTTPMethod,
  89. _ URLString: URLConvertible,
  90. parameters: [String: String]? = nil,
  91. images: [String: Data],
  92. encoding: Alamofire.ParameterEncoding = URLEncoding.default,
  93. needsAuthorization: Bool = true,
  94. success: @escaping (T)-> Void,
  95. failure: @escaping (Error) -> ()) {
  96. if NetworkReachabilityManager()?.isReachable == true {
  97. let headers = needsAuthorization ? getContentHeaderAfterLogin() : getContentHeaderBeforeLogin()
  98. self.manager.upload(
  99. multipartFormData: { multipartFormData in
  100. if !images.isEmpty {
  101. images.forEach({ (data) in
  102. multipartFormData.append(data.value, withName: data.key, fileName: data.key + ".jpeg", mimeType: "image/jpeg")
  103. })
  104. }
  105. parameters?.forEach({ (params) in
  106. multipartFormData.append(params.value.data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: params.key)
  107. })
  108. },
  109. to: URLString,
  110. method: method,
  111. headers: headers,
  112. encodingCompletion: { encodingResult in
  113. switch encodingResult {
  114. case .success(let upload, _, _):
  115. upload.handle(success: success, failure: failure)
  116. case .failure:
  117. let error = NSError.init(domain: "NETWORK_REACHABILITY_DOMAIN", code: 0, userInfo: [NSLocalizedDescriptionKey : "No Internet connection found. 
Check your connection."])
  118. failure(error)
  119. }
  120. }
  121. )
  122. }else {
  123. let error = NSError.init(domain: "NETWORK_REACHABILITY_DOMAIN", code: 0, userInfo: [NSLocalizedDescriptionKey : "No Internet connection found. 
Check your connection."])
  124. failure(error)
  125. }
  126. }
  127. // ccr
  128. //Signing up a new user
  129. func registerUser(userId: String, password: String, completion: @escaping (ApiResult) -> Void) {
  130. manager.request(
  131. URL(string: UrlManager.sharedInstance.getSignupURL())!,
  132. method: .post,
  133. parameters: ["userId": userId, "password" : password],
  134. encoding: JSONEncoding.default,
  135. headers: getContentHeaderBeforeLogin()
  136. ).responseJSON { (response) -> Void in
  137. if let error = response.result.error {
  138. if error._code == NSURLErrorTimedOut {
  139. completion(.timeOut())
  140. }
  141. }
  142. if response.result.isFailure{
  143. completion(.timeOut())
  144. }
  145. if response.response?.statusCode == nil {
  146. return
  147. }
  148. guard (response.response?.statusCode == 200) else {
  149. completion(.failure(JSON(response.data!)))
  150. return
  151. }
  152. completion(.success(JSON(response.data!)))
  153. }
  154. }
  155. //Verification of 4 digit code for
  156. func authenticateUser(code: String, userId: String, completion: @escaping (ApiResult) -> Void) {
  157. manager.request(
  158. URL(string: UrlManager.sharedInstance.getCodeVerificationURL(userId: userId))!,
  159. method: .post,
  160. parameters: ["verificationcode": code, "phoneOs": "ios"],
  161. encoding: JSONEncoding.default,
  162. headers: getContentHeaderBeforeLogin()
  163. ).responseJSON { (response) -> Void in
  164. if let error = response.result.error {
  165. if error._code == NSURLErrorTimedOut {
  166. completion(.timeOut())
  167. }
  168. }
  169. if response.result.isFailure{
  170. completion(.timeOut())
  171. }
  172. if response.response?.statusCode == nil {
  173. return
  174. }
  175. guard (response.response?.statusCode == 204) else { //initially 204
  176. if response.response?.statusCode == 401 {
  177. completion(.updateAccessCode())
  178. } else {
  179. completion(.failure(JSON(response.data!)))
  180. }
  181. return
  182. }
  183. completion(.success(JSON.null))
  184. }
  185. }
  186. //Requesting another access code
  187. func requestAnotherCode (type: String, userId: String, completion: @escaping (ApiResult) -> Void) {
  188. var param: [String: String]?
  189. switch type {
  190. case "device":
  191. param = ["codeType":"dvc"]
  192. case "password":
  193. param = ["codeType":"prc"]
  194. default:
  195. param = nil
  196. }
  197. manager.request(
  198. URL(string: UrlManager.sharedInstance.getRequestAnotherCodeURL(userId: userId))!,
  199. method: .post,
  200. parameters: param!,
  201. encoding: JSONEncoding.default,
  202. headers: getContentHeaderBeforeLogin()
  203. ).responseJSON { (response) -> Void in
  204. if let error = response.result.error {
  205. if error._code == NSURLErrorTimedOut {
  206. completion(.timeOut())
  207. }
  208. }
  209. if response.result.isFailure{
  210. completion(.timeOut())
  211. }
  212. if response.response?.statusCode == nil {
  213. return
  214. }
  215. guard (response.response?.statusCode == 200) else {
  216. if response.response?.statusCode == 401 {
  217. completion(.updateAccessCode())
  218. }else{
  219. completion(.failure(JSON(response.data!)))
  220. }
  221. return
  222. }
  223. completion(.success(JSON(response.data!)))
  224. }
  225. }
  226. //Checking user verification for password reset process, 1 of 3
  227. func isVerifiedUser(userId: String, completion: @escaping (ApiResult) -> Void) {
  228. manager.request(
  229. URL(string: UrlManager.sharedInstance.getUserVerificationURLforPasswordReset())!,
  230. method: .post,
  231. parameters: ["userId": userId],
  232. encoding: JSONEncoding.default,
  233. headers: getContentHeaderBeforeLogin()
  234. ).responseJSON { (response) -> Void in
  235. if let error = response.result.error {
  236. if error._code == NSURLErrorTimedOut {
  237. completion(.timeOut())
  238. }
  239. }
  240. if response.result.isFailure{
  241. completion(.timeOut())
  242. }
  243. if response.response?.statusCode == nil {
  244. return
  245. }
  246. guard (response.response?.statusCode == 200) else {
  247. if response.response?.statusCode == 401 {
  248. completion(.updateAccessCode())
  249. }else{
  250. completion(.failure(JSON(response.data!)))
  251. }
  252. return
  253. }
  254. completion(.success(JSON(response.data!)))
  255. }
  256. }
  257. func submitUserDOB(userId: String, userDOB: String, completion: @escaping (ApiResult) -> Void) {
  258. manager.request(
  259. URL(string: UrlManager.sharedInstance.getDOBVerificationURLforPasswordReset(userId: userId))!,
  260. method: .post,
  261. parameters: ["userId": userId, "answer": userDOB],
  262. encoding: JSONEncoding.default,
  263. headers: getContentHeaderBeforeLogin()
  264. ).responseJSON { (response) -> Void in
  265. if let error = response.result.error {
  266. if error._code == NSURLErrorTimedOut {
  267. completion(.timeOut())
  268. }
  269. }
  270. if response.result.isFailure{
  271. completion(.timeOut())
  272. }
  273. if response.response?.statusCode == nil {
  274. return
  275. }
  276. guard (response.response?.statusCode == 200) else {
  277. if response.response?.statusCode == 401 {
  278. completion(.updateAccessCode())
  279. } else {
  280. completion(.failure(JSON(response.data!)))
  281. }
  282. return
  283. }
  284. completion(.success(JSON(response.data!)))
  285. }
  286. }
  287. //Getting 4 digit code for password reset, 3 of 3
  288. func reAuthenticateUser(code: String, userId: String, completion: @escaping (ApiResult) -> Void) {
  289. manager.request(
  290. URL(string: UrlManager.sharedInstance.getResetCodeValidationURL(userId: userId))!,
  291. method: .post,
  292. parameters: ["forgetCode": code, "phoneOs": "ios"],
  293. encoding: JSONEncoding.default,
  294. headers: getContentHeaderBeforeLogin()
  295. ).responseJSON { (response) -> Void in
  296. if let error = response.result.error {
  297. if error._code == NSURLErrorTimedOut {
  298. completion(.timeOut())
  299. }
  300. }
  301. if response.result.isFailure{
  302. completion(.timeOut())
  303. }
  304. if response.response?.statusCode == nil {
  305. return
  306. }
  307. guard (response.response?.statusCode == 200) else {
  308. if response.response?.statusCode == 401 {
  309. completion(.updateAccessCode())
  310. }else{
  311. completion(.failure(JSON(response.data!)))
  312. }
  313. return
  314. }
  315. completion(.success(JSON(response.data!)))
  316. }
  317. }
  318. //Resetting password
  319. func resetPassword(userId: String, password: String, completion: @escaping (ApiResult) -> Void) {
  320. manager.request(
  321. URL(string: UrlManager.sharedInstance.getPasswordUpdateURL(userId: userId))!,
  322. method: .patch,
  323. parameters: ["password": password],
  324. encoding: JSONEncoding.default,
  325. headers: getContentHeaderBeforeLogin()
  326. ).responseJSON { (response) -> Void in
  327. if let error = response.result.error {
  328. if error._code == NSURLErrorTimedOut {
  329. completion(.timeOut())
  330. }
  331. }
  332. if response.result.isFailure{
  333. completion(.timeOut())
  334. }
  335. if response.response?.statusCode == nil {
  336. return
  337. }
  338. guard (response.response?.statusCode == 200) else {
  339. if response.response?.statusCode == 401 {
  340. completion(.updateAccessCode())
  341. }else{
  342. completion(.failure(JSON(response.data!)))
  343. }
  344. return
  345. }
  346. completion(.success(JSON(response.data!)))
  347. }
  348. }
  349. // Getting recipients as per pagination
  350. func fetchRecipientListThroughPagination(userId: String, page: Int, size: Int, completion: @escaping (ApiResult) -> Void){
  351. manager.request(
  352. URL(string: UrlManager.sharedInstance.getRecipientListURLForPagination())!,
  353. method: .get,
  354. parameters: ["userId":userId,"size":size,"page":page],
  355. encoding: URLEncoding.queryString,
  356. headers: getContentHeaderAfterLogin()
  357. ).responseJSON { (response) -> Void in
  358. let error = response.result.error
  359. if error?._code == NSURLErrorTimedOut {
  360. completion(.timeOut())
  361. }
  362. if response.result.isFailure{
  363. completion(.timeOut())
  364. }
  365. if response.response?.statusCode == nil {
  366. completion(.timeOut())
  367. }
  368. guard (response.response?.statusCode == 200) else {
  369. if response.response?.statusCode == 401{
  370. completion(.updateAccessCode())
  371. } else if response.response?.statusCode == 403 {
  372. completion(.logOutUser())
  373. } else {
  374. completion(.failure(JSON(response.data!)))
  375. }
  376. return
  377. }
  378. completion(.success(JSON(response.data!)))
  379. }
  380. }
  381. //Creating a new recipient
  382. func createNewRecipient(recipientDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  383. manager.request(
  384. URL(string: UrlManager.sharedInstance.getNewRecipientURL())!,
  385. method: .post,
  386. parameters: recipientDetails,
  387. encoding: JSONEncoding.default,
  388. headers: getContentHeaderAfterLogin()
  389. ).responseJSON { (response) -> Void in
  390. let error = response.result.error
  391. if error?._code == NSURLErrorTimedOut {
  392. completion(.timeOut())
  393. }
  394. if response.result.isFailure{
  395. completion(.timeOut())
  396. }
  397. if response.response?.statusCode == nil {
  398. completion(.timeOut())
  399. }
  400. guard (response.response?.statusCode == 200) else {
  401. if response.response?.statusCode == 401{
  402. completion(.updateAccessCode())
  403. } else if response.response?.statusCode == 403 {
  404. completion(.logOutUser())
  405. } else {
  406. completion(.failure(JSON(response.data!)))
  407. }
  408. return
  409. }
  410. completion(.success(JSON(response.data!)))
  411. }
  412. }
  413. //Updating a recipient
  414. func updateRecipient(recipientId: String, recipientDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  415. manager.request(
  416. URL(string: UrlManager.sharedInstance.getUpdateRecipientURL(recipientId: recipientId))!,
  417. method: .patch,
  418. parameters: recipientDetails,
  419. encoding: JSONEncoding.default,
  420. headers: getContentHeaderAfterLogin()
  421. ).responseJSON { (response) -> Void in
  422. let error = response.result.error
  423. if error?._code == NSURLErrorTimedOut {
  424. completion(.timeOut())
  425. }
  426. if response.result.isFailure{
  427. completion(.timeOut())
  428. }
  429. if response.response?.statusCode == nil {
  430. completion(.timeOut())
  431. }
  432. guard (response.response?.statusCode == 200) else {
  433. if response.response?.statusCode == 401{
  434. completion(.updateAccessCode())
  435. } else if response.response?.statusCode == 403 {
  436. completion(.logOutUser())
  437. } else {
  438. completion(.failure(JSON(response.data!)))
  439. }
  440. return
  441. }
  442. completion(.success(JSON(response.data!)))
  443. }
  444. }
  445. //Removing an existing recipient
  446. func deleteRecipient(recipientId: String, completion: @escaping (ApiResult) -> Void) {
  447. manager.request(
  448. URL(string: UrlManager.sharedInstance.getDeleteRecipientURL(recipientId: recipientId))!,
  449. method: .delete,
  450. parameters: nil,
  451. encoding: JSONEncoding.default,
  452. headers: getContentHeaderAfterLogin()
  453. ).responseJSON { (response) -> Void in
  454. let error = response.result.error
  455. if error?._code == NSURLErrorTimedOut {
  456. completion(.timeOut())
  457. }
  458. if response.result.isFailure{
  459. completion(.timeOut())
  460. }
  461. if response.response?.statusCode == nil {
  462. completion(.timeOut())
  463. }
  464. guard (response.response?.statusCode == 204) else {
  465. if response.response?.statusCode == 401{
  466. completion(.updateAccessCode())
  467. } else if response.response?.statusCode == 403 {
  468. completion(.logOutUser())
  469. } else {
  470. completion(.failure(JSON(response.data!)))
  471. }
  472. return
  473. }
  474. completion(.success(JSON(response.data!)))
  475. }
  476. }
  477. func updateAccessCode(userId: String,password:String,completion: @escaping (String) -> Void) {
  478. Alamofire.request(
  479. URL(string: UrlManager.sharedInstance.getLogInURL())!,
  480. method: .post,
  481. parameters: ["userId": userId, "password": password],
  482. encoding: JSONEncoding.default,
  483. headers: getContentHeaderBeforeLogin()
  484. ).responseJSON { (response) -> Void in
  485. if response.response?.statusCode == nil {
  486. return
  487. }
  488. guard (response.response?.statusCode == 200) else {
  489. completion("Error")
  490. return
  491. }
  492. var json = JSON(response.data!)
  493. completion(json["accessCode"].stringValue)
  494. }
  495. }
  496. /* Recipient Model */
  497. //Getting transaction Information on send money and wallet
  498. func getTransactionInfo(param: [String: String],completion: @escaping (ApiResult) -> Void) {
  499. manager.request(
  500. URL(string: UrlManager.sharedInstance.getTransactionInformationURL())!,
  501. method: .get,
  502. parameters: param,
  503. encoding: URLEncoding.queryString,
  504. headers: getContentHeaderAfterLogin()
  505. ).responseJSON { (response) -> Void in
  506. let error = response.result.error
  507. if error?._code == NSURLErrorTimedOut {
  508. completion(.timeOut())
  509. }
  510. if response.result.isFailure{
  511. completion(.timeOut())
  512. }
  513. if response.response?.statusCode == nil {
  514. return
  515. }
  516. guard (response.response?.statusCode == 200) else {
  517. if response.response?.statusCode == 401{
  518. completion(.updateAccessCode())
  519. } else if response.response?.statusCode == 403 {
  520. completion(.logOutUser())
  521. } else {
  522. completion(.failure(JSON(response.data!)))
  523. }
  524. return
  525. }
  526. completion(.success(JSON(response.data!)))
  527. }
  528. }
  529. func getCurrency(param: [String: String],completion: @escaping (ApiResult) -> Void) {
  530. manager.request(
  531. URL(string: UrlManager.sharedInstance.getCurrencyURL())!,
  532. method: .get,
  533. parameters: param,
  534. encoding: URLEncoding.queryString,
  535. headers: getContentHeaderAfterLogin()
  536. ).responseJSON { (response) -> Void in
  537. let error = response.result.error
  538. if error?._code == NSURLErrorTimedOut {
  539. completion(.timeOut())
  540. }
  541. if response.result.isFailure{
  542. completion(.timeOut())
  543. }
  544. if response.response?.statusCode == nil {
  545. return
  546. }
  547. guard (response.response?.statusCode == 200) else {
  548. if response.response?.statusCode == 401{
  549. completion(.updateAccessCode())
  550. } else if response.response?.statusCode == 403 {
  551. completion(.logOutUser())
  552. } else {
  553. completion(.failure(JSON(response.data!)))
  554. }
  555. return
  556. }
  557. completion(.success(JSON(response.data!)))
  558. }
  559. }
  560. //Recharging mobile
  561. func rechargeMobile(rechargeDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  562. manager.request(
  563. URL(string: UrlManager.sharedInstance.getRechargeURL())!,
  564. method: .post,
  565. parameters: rechargeDetails,
  566. encoding: JSONEncoding.default,
  567. headers: getContentHeaderAfterLogin()
  568. ).responseJSON { (response) -> Void in
  569. if let error = response.result.error {
  570. if error._code == NSURLErrorTimedOut {
  571. completion(.timeOut())
  572. }
  573. }
  574. if response.result.isFailure{
  575. completion(.timeOut())
  576. }
  577. if response.response?.statusCode == nil {
  578. return
  579. }
  580. guard (response.response?.statusCode == 200) else {
  581. if response.response?.statusCode == 401{
  582. completion(.updateAccessCode())
  583. } else if response.response?.statusCode == 403 {
  584. completion(.logOutUser())
  585. } else {
  586. completion(.failure(JSON(response.data!)))
  587. }
  588. return
  589. }
  590. completion(.success(JSON(response.data!)))
  591. }
  592. }
  593. //Recharging amounts for mobile recharge
  594. func amountsForMobileRecharge(rechargeDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  595. manager.request(
  596. URL(string: UrlManager.sharedInstance.getURLForMobileRechargeAmount())!,
  597. method: .get,
  598. parameters: rechargeDetails,
  599. encoding: URLEncoding.queryString,
  600. headers: getContentHeaderAfterLogin()
  601. ).responseJSON { (response) -> Void in
  602. if let error = response.result.error {
  603. if error._code == NSURLErrorTimedOut {
  604. completion(.timeOut())
  605. }
  606. }
  607. if response.result.isFailure{
  608. completion(.timeOut())
  609. }
  610. if response.response?.statusCode == nil {
  611. return
  612. }
  613. guard (response.response?.statusCode == 200) else {
  614. if response.response?.statusCode == 401{
  615. completion(.updateAccessCode())
  616. } else if response.response?.statusCode == 403 {
  617. completion(.logOutUser())
  618. } else {
  619. completion(.failure(JSON(response.data!)))
  620. }
  621. return
  622. }
  623. completion(.success(JSON(response.data!)))
  624. }
  625. }
  626. func callMobileOperator(rechargeDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  627. manager.request(
  628. URL(string: UrlManager.sharedInstance.getMobileOperator())!,
  629. method: .get,
  630. parameters: rechargeDetails,
  631. encoding: URLEncoding.queryString,
  632. headers: getContentHeaderAfterLogin()
  633. ).responseJSON { (response) -> Void in
  634. if let error = response.result.error {
  635. if error._code == NSURLErrorTimedOut {
  636. completion(.timeOut())
  637. }
  638. }
  639. if response.result.isFailure{
  640. completion(.timeOut())
  641. }
  642. if response.response?.statusCode == nil {
  643. return
  644. }
  645. guard (response.response?.statusCode == 200) else {
  646. if response.response?.statusCode == 401{
  647. completion(.updateAccessCode())
  648. } else if response.response?.statusCode == 403 {
  649. completion(.logOutUser())
  650. } else {
  651. completion(.failure(JSON(response.data!)))
  652. }
  653. return
  654. }
  655. completion(.success(JSON(response.data!)))
  656. }
  657. }
  658. //Getting Bank Details
  659. func getBankDetails(completion: @escaping (ApiResult) -> Void) {
  660. manager.request(
  661. URL(string: UrlManager.sharedInstance.getBankDetailsURL())!,
  662. method: .get,
  663. parameters: nil,
  664. encoding: JSONEncoding.default,
  665. headers: getContentHeaderAfterLogin()
  666. ).responseJSON { (response) -> Void in
  667. if let error = response.result.error {
  668. if error._code == NSURLErrorTimedOut {
  669. completion(.timeOut())
  670. }
  671. }
  672. if response.result.isFailure{
  673. completion(.timeOut())
  674. }
  675. if response.response?.statusCode == nil {
  676. return
  677. }
  678. guard (response.response?.statusCode == 200) else {
  679. if response.response?.statusCode == 401{
  680. completion(.updateAccessCode())
  681. } else if response.response?.statusCode == 403 {
  682. completion(.logOutUser())
  683. } else {
  684. completion(.failure(JSON(response.data!)))
  685. }
  686. return
  687. }
  688. completion(.success(JSON(response.data!)))
  689. }
  690. }
  691. func getSource(completion: @escaping (ApiResult) -> Void) {
  692. Alamofire.request(
  693. URL(string: UrlManager.sharedInstance.getSourceURL())!,
  694. method: .post,
  695. parameters: nil,
  696. encoding: JSONEncoding.default,
  697. headers: getContentHeaderAfterLogin()
  698. ).responseJSON { (response) -> Void in
  699. if let error = response.result.error {
  700. if error._code == NSURLErrorTimedOut {
  701. completion(.timeOut())
  702. }
  703. }
  704. if response.result.isFailure{
  705. completion(.timeOut())
  706. }
  707. if response.response?.statusCode == nil {
  708. return
  709. }
  710. guard (response.response?.statusCode == 200) else {
  711. if response.response?.statusCode == 401{
  712. completion(.updateAccessCode())
  713. } else if response.response?.statusCode == 403 {
  714. completion(.logOutUser())
  715. } else {
  716. completion(.failure(JSON(response.data!)))
  717. }
  718. return
  719. }
  720. completion(.success(JSON(response.data!)))
  721. }
  722. }
  723. func getTransferReason(completion: @escaping (ApiResult) -> Void) {
  724. manager.request(
  725. URL(string: UrlManager.sharedInstance.getTransferReasonURL())!,
  726. method: .post,
  727. parameters: nil,
  728. encoding: JSONEncoding.default,
  729. headers: getContentHeaderAfterLogin()
  730. ).responseJSON { (response) -> Void in
  731. if let error = response.result.error {
  732. if error._code == NSURLErrorTimedOut {
  733. completion(.timeOut())
  734. }
  735. }
  736. if response.result.isFailure{
  737. completion(.timeOut())
  738. }
  739. if response.response?.statusCode == nil {
  740. return
  741. }
  742. guard (response.response?.statusCode == 200) else {
  743. if response.response?.statusCode == 401{
  744. completion(.updateAccessCode())
  745. } else if response.response?.statusCode == 403 {
  746. completion(.logOutUser())
  747. } else{
  748. completion(.failure(JSON(response.data!)))
  749. }
  750. return
  751. }
  752. completion(.success(JSON(response.data!)))
  753. }
  754. }
  755. func performTransfer(parameters: [String: String], completion: @escaping (ApiResult) -> Void) {
  756. manager.request(
  757. URL(string: UrlManager.sharedInstance.getTransferURL())!,
  758. method: .post,
  759. parameters: parameters,
  760. encoding: JSONEncoding.default,
  761. headers: getContentHeaderAfterLogin()
  762. ).responseJSON { (response) -> Void in
  763. let error = response.result.error
  764. if error?._code == NSURLErrorTimedOut {
  765. completion(.timeOut())
  766. }
  767. if response.response?.statusCode == nil {
  768. completion(.timeOut())
  769. }
  770. guard (response.response?.statusCode == 200) else {
  771. if response.response?.statusCode == 401{
  772. completion(.updateAccessCode())
  773. } else if response.response?.statusCode == 403 {
  774. completion(.logOutUser())
  775. } else {
  776. completion(.failure(JSON(response.data!)))
  777. }
  778. return
  779. }
  780. if response.result.isFailure{
  781. completion(.timeOut())
  782. }
  783. completion(.success(JSON(response.data!)))
  784. }
  785. }
  786. func getCDDListFor(cddCode: String, param: [String: String]?, completion: @escaping (ApiResult) -> Void) {
  787. manager.request(
  788. URL(string: UrlManager.sharedInstance.getCDDURL(code: cddCode))!,
  789. method: .get,
  790. parameters: param,
  791. encoding: URLEncoding.queryString,
  792. headers: getContentHeaderAfterLogin()
  793. ).responseJSON { (response) -> Void in
  794. let error = response.result.error
  795. if error?._code == NSURLErrorTimedOut {
  796. completion(.timeOut())
  797. }
  798. if response.response?.statusCode == nil {
  799. completion(.timeOut())
  800. }
  801. guard (response.response?.statusCode == 200) else {
  802. if response.response?.statusCode == 401{
  803. completion(.updateAccessCode())
  804. } else if response.response?.statusCode == 403 {
  805. completion(.logOutUser())
  806. } else if (response.error != nil) {
  807. completion(.failure(JSON(response.data!)))
  808. }else{
  809. if response.result.isFailure{
  810. completion(.timeOut())
  811. }
  812. }
  813. return
  814. }
  815. completion(.success(JSON(response.data!)))
  816. }
  817. }
  818. func submitKYCInfo(param: [String: String], userId: String, completion: @escaping (ApiResult) -> Void) {
  819. Alamofire.request(
  820. URL(string: UrlManager.sharedInstance.getKycURL(userId: userId))!,
  821. method: .post,
  822. parameters: param,
  823. encoding: JSONEncoding.default,
  824. headers: getContentHeaderAfterLogin()
  825. ).responseJSON { (response) -> Void in
  826. let error = response.result.error
  827. if error?._code == NSURLErrorTimedOut {
  828. completion(.timeOut())
  829. }
  830. if response.result.isFailure{
  831. completion(.timeOut())
  832. }
  833. if response.response?.statusCode == nil {
  834. completion(.timeOut())
  835. }
  836. guard (response.response?.statusCode == 201) else {
  837. if response.response?.statusCode == 401 {
  838. completion(.updateAccessCode())
  839. } else if response.response?.statusCode == 403 {
  840. completion(.logOutUser())
  841. } else {
  842. completion(.failure(JSON(response.data!)))
  843. }
  844. return
  845. }
  846. completion(.success(JSON(response.data!)))
  847. return
  848. }
  849. }
  850. func submitDocument(param: [String: String], userId: String, completion: @escaping (ApiResult) -> Void) {
  851. manager.request(
  852. URL(string: UrlManager.sharedInstance.getKycDocumentURL(userId: userId))!,
  853. method: .post,
  854. parameters: param,
  855. encoding: JSONEncoding.default,
  856. headers: getContentHeaderAfterLogin()
  857. ).responseJSON { (response) -> Void in
  858. let error = response.result.error
  859. if error?._code == NSURLErrorTimedOut {
  860. completion(.timeOut())
  861. }
  862. if response.result.isFailure{
  863. completion(.timeOut())
  864. }
  865. if response.response?.statusCode == nil {
  866. completion(.timeOut())
  867. }
  868. guard (response.response?.statusCode == 201) else {
  869. if response.response?.statusCode == 401 {
  870. completion(.updateAccessCode())
  871. } else if response.response?.statusCode == 403 {
  872. completion(.logOutUser())
  873. } else {
  874. completion(.failure(JSON(response.data!)))
  875. }
  876. return
  877. }
  878. completion(.success(JSON(response.data!)))
  879. }
  880. }
  881. func submitUserImage(param: [String: String], userId: String, completion: @escaping (ApiResult) -> Void) {
  882. manager.request(
  883. URL(string: UrlManager.sharedInstance.getUserProfileURL(userId: userId))!,
  884. method: .patch,
  885. parameters: param,
  886. encoding: JSONEncoding.default,
  887. headers: getContentHeaderBeforeLogin()
  888. ).responseJSON { (response) -> Void in
  889. if response.result.isFailure{
  890. completion(.timeOut())
  891. }
  892. if let error = response.result.error {
  893. if error._code == NSURLErrorTimedOut {
  894. completion(.timeOut())
  895. }
  896. }
  897. if response.response?.statusCode == nil {
  898. return
  899. }
  900. guard (response.response?.statusCode == 200) else {
  901. if response.response?.statusCode == 401{
  902. completion(.updateAccessCode())
  903. } else if response.response?.statusCode == 403 {
  904. completion(.logOutUser())
  905. } else {
  906. completion(.failure(JSON(response.data!)))
  907. }
  908. return
  909. }
  910. completion(.success(JSON(response.data!)))
  911. }
  912. }
  913. func getUserDetails(userId: String, completion: @escaping (ApiResult) -> Void) {
  914. manager.request(
  915. URL(string: UrlManager.sharedInstance.getUserProfileURL(userId: userId))!,
  916. method: .get,
  917. parameters: nil,
  918. encoding: JSONEncoding.default,
  919. headers: getContentHeaderAfterLogin()
  920. ).responseJSON { (response) -> Void in
  921. let error = response.result.error
  922. if error?._code == NSURLErrorTimedOut {
  923. completion(.timeOut())
  924. }
  925. if response.result.isFailure{
  926. completion(.timeOut())
  927. }
  928. if response.response?.statusCode == nil {
  929. completion(.timeOut())
  930. }
  931. guard (response.response?.statusCode == 200) else {
  932. if response.response?.statusCode == 401 {
  933. completion(.updateAccessCode())
  934. } else if response.response?.statusCode == 403 {
  935. completion(.logOutUser())
  936. } else {
  937. completion(.failure(JSON(response.data!)))
  938. }
  939. return
  940. }
  941. completion(.success(JSON(response.data!)))
  942. }
  943. }
  944. func fetchUserInfoFromKyc(userId: String, completion: @escaping (ApiResult) -> Void) {
  945. manager.request(
  946. URL(string: UrlManager.sharedInstance.getKYCURL(userId: userId))!,
  947. method: .get,
  948. parameters: nil,
  949. encoding: JSONEncoding.default,
  950. headers: getContentHeaderAfterLogin()
  951. ).responseJSON { (response) -> Void in
  952. let error = response.result.error
  953. if error?._code == NSURLErrorTimedOut {
  954. completion(.timeOut())
  955. }
  956. if response.result.isFailure{
  957. completion(.timeOut())
  958. }
  959. if response.response?.statusCode == nil {
  960. completion(.timeOut())
  961. }
  962. guard (response.response?.statusCode == 200) else {
  963. if response.response?.statusCode == 401{
  964. completion(.updateAccessCode())
  965. } else if response.response?.statusCode == 403 {
  966. completion(.logOutUser())
  967. } else {
  968. completion(.failure(JSON(response.data!)))
  969. }
  970. return
  971. }
  972. completion(.success(JSON(response.data!)))
  973. }
  974. }
  975. func updateUserInfoForKyc(userId: String, parameter: [String: String], completion: @escaping (ApiResult) -> Void) {
  976. manager.request(
  977. URL(string: UrlManager.sharedInstance.getKYCURL(userId: userId))!,
  978. method: .patch,
  979. parameters: parameter,
  980. encoding: JSONEncoding.default,
  981. headers: getContentHeaderAfterLogin()
  982. ).responseJSON { (response) -> Void in
  983. let error = response.result.error
  984. if error?._code == NSURLErrorTimedOut {
  985. completion(.timeOut())
  986. }
  987. if response.result.isFailure{
  988. completion(.timeOut())
  989. }
  990. if response.response?.statusCode == nil {
  991. completion(.timeOut())
  992. }
  993. guard (response.response?.statusCode == 200) else {
  994. if response.response?.statusCode == 401{
  995. completion(.updateAccessCode())
  996. } else if response.response?.statusCode == 403 {
  997. completion(.logOutUser())
  998. } else {
  999. completion(.failure(JSON(response.data!)))
  1000. }
  1001. return
  1002. }
  1003. completion(.success(JSON(response.data!)))
  1004. }
  1005. }
  1006. /// Getting AgentLocation
  1007. func getAgentLocationDetails(countryId: String, city: String,completion: @escaping (ApiResult) -> Void) {
  1008. let sessionManager = Alamofire.SessionManager.default
  1009. sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
  1010. dataTasks.forEach { $0.cancel() }
  1011. uploadTasks.forEach { $0.cancel() }
  1012. downloadTasks.forEach { $0.cancel() }
  1013. }
  1014. manager.request(
  1015. URL(string: UrlManager.sharedInstance.getPayoutsURL())!,
  1016. method: .get,
  1017. parameters: ["countryId": countryId, "city": city, "constraint": "default"],
  1018. encoding: URLEncoding.queryString,
  1019. headers: getContentHeaderAfterLogin()
  1020. ).responseJSON { (response) -> Void in
  1021. let error = response.result.error
  1022. if error?._code == NSURLErrorTimedOut {
  1023. completion(.timeOut())
  1024. }
  1025. if response.result.isFailure{
  1026. completion(.timeOut())
  1027. }
  1028. if response.response?.statusCode == nil {
  1029. completion(.timeOut())
  1030. }
  1031. guard (response.response?.statusCode == 200) else {
  1032. if response.response?.statusCode == 401 {
  1033. completion(.updateAccessCode())
  1034. } else if response.response?.statusCode == 403 {
  1035. completion(.logOutUser())
  1036. } else {
  1037. completion(.failure(JSON(response.data!)))
  1038. }
  1039. return
  1040. }
  1041. completion(.success(JSON(response.data!)))
  1042. }
  1043. }
  1044. func getFilteredRecipientList(queryString: String, userId: String, completion: @escaping (ApiResult) -> Void) {
  1045. cancelExistingNetworkCalls()
  1046. manager.request(
  1047. URL(string: UrlManager.sharedInstance.getRecipientListURL(userId: userId))!,
  1048. method: .get, parameters: ["search": queryString],
  1049. encoding: URLEncoding.queryString,
  1050. headers: getContentHeaderAfterLogin()
  1051. ).responseJSON { (response) -> Void in
  1052. if let error = response.result.error {
  1053. if error._code == NSURLErrorTimedOut {
  1054. completion(.timeOut())
  1055. }
  1056. }
  1057. if response.result.isFailure{
  1058. completion(.timeOut())
  1059. }
  1060. if response.response?.statusCode == nil {
  1061. return
  1062. }
  1063. guard (response.response?.statusCode == 200) else {
  1064. if response.response?.statusCode == 401{
  1065. completion(.updateAccessCode())
  1066. } else if response.response?.statusCode == 403 {
  1067. completion(.logOutUser())
  1068. } else{
  1069. completion(.failure(JSON(response.data!)))
  1070. }
  1071. return
  1072. }
  1073. completion(.success(JSON(response.data!)))
  1074. }
  1075. }
  1076. func getTransactionList(userId: String, recipientId: String, recipientName: String, transactionType: String, startDate: String, endDate: String, txPage: String, txSize: String, completion: @escaping (ApiResult) -> Void) {
  1077. var parameters: [String: Any] = [String: Any] ()
  1078. switch transactionType {
  1079. case "":
  1080. parameters = ["userId": userId, "startDate": startDate, "endDate": endDate]
  1081. case "sent":
  1082. parameters = ["userId": userId, "transactionType": "sent", "startDate": startDate, "endDate": endDate]
  1083. case "received":
  1084. parameters = ["userId": userId, "transactionType": "received", "startDate": startDate, "endDate": endDate]
  1085. case "date" :
  1086. parameters = ["userId": userId, "startDate": startDate, "endDate": endDate]
  1087. case "trackTransfer":
  1088. parameters = ["size": 3, "userId": userId, "receiverId": recipientId, "startDate": startDate, "endDate": endDate, "payoutMode": "cash,bank,door to door"]
  1089. case "search":
  1090. parameters = ["userId": userId, "search": recipientName, "startDate": startDate, "endDate": endDate]
  1091. case "walletTransfer":
  1092. parameters = ["page": txPage, "size": txSize, "startDate": startDate, "endDate": endDate, "userId": userId, "transactionType": "sent", "payoutMode": "wallet transfer"]
  1093. case "walletBorrow":
  1094. parameters = ["page": txPage, "size": txSize, "startDate": startDate, "endDate": endDate, "requestedTo": userId, "payoutMode": "wallet transfer", "transferType": "request"]
  1095. case "moneyRequest":
  1096. parameters = ["page": txPage, "size": txSize, "startDate": startDate, "endDate": endDate, "payoutMode": "wallet transfer", "transferType": "request", "userId": userId]
  1097. default:
  1098. return
  1099. }
  1100. manager.request(
  1101. URL(string: UrlManager.sharedInstance.getTransactionListURL())!,
  1102. method: .get,parameters: parameters, encoding: URLEncoding.queryString,
  1103. headers: getContentHeaderAfterLogin()
  1104. ).responseJSON { (response) -> Void in
  1105. let error = response.result.error
  1106. if error?._code == NSURLErrorTimedOut {
  1107. completion(.timeOut())
  1108. }
  1109. if response.result.isFailure{
  1110. completion(.timeOut())
  1111. }
  1112. if response.response?.statusCode == nil {
  1113. completion(.timeOut())
  1114. }
  1115. guard (response.response?.statusCode == 200) else {
  1116. if response.response?.statusCode == 401{
  1117. completion(.updateAccessCode())
  1118. } else if response.response?.statusCode == 403 {
  1119. completion(.logOutUser())
  1120. } else{
  1121. completion(.failure(JSON(response.data!)))
  1122. }
  1123. return
  1124. }
  1125. completion(.success(JSON(response.data!)))
  1126. }
  1127. }
  1128. /**
  1129. TrackTransaction Pagination
  1130. */
  1131. func getTransactionList(userId: String, recipientId: String, recipientName: String, transactionType: String, startDate: String, endDate: String, page:Int, size: Int, completion: @escaping (ApiResult) -> Void) {
  1132. var parameters: [String: Any] = [String: Any] ()
  1133. switch transactionType {
  1134. case "":
  1135. parameters = ["userId": userId, "startDate": startDate, "endDate": endDate, "page": page, "size": size]
  1136. case "sent":
  1137. parameters = ["userId": userId, "transactionType": "sent", "startDate": startDate, "endDate": endDate,"page": page, "size": size]
  1138. case "received":
  1139. parameters = ["userId": userId, "transactionType": "received", "startDate": startDate, "endDate": endDate,"page": page, "size": size]
  1140. case "date" :
  1141. parameters = ["userId": userId, "startDate": startDate, "endDate": endDate]
  1142. case "trackTransfer":
  1143. parameters = ["size": 3, "userId": userId, "receiverId": recipientId, "startDate": startDate, "endDate": endDate]
  1144. case "search":
  1145. parameters = ["userId": userId, "receiverName": recipientName, "startDate": startDate, "endDate": endDate]
  1146. case "walletTransfer":
  1147. parameters = ["userId": userId, "payoutMode": "wallet transfer", "transferType": "offer", "startDate": startDate, "endDate": endDate, "page": page, "size": size]
  1148. case "walletBorrow":
  1149. parameters = ["userId": userId, "payoutMode": "wallet transfer", "transferType": "request", "startDate": startDate, "endDate": endDate, "page": page, "size": size]
  1150. case "moneyRequest":
  1151. parameters = ["requestedTo": userId, "payoutMode": "wallet transfer", "startDate": startDate, "endDate": endDate]
  1152. default:
  1153. return
  1154. }
  1155. manager.request(
  1156. URL(string: UrlManager.sharedInstance.getTransactionListURL())!,
  1157. method: .get,parameters: parameters, encoding: URLEncoding.queryString,
  1158. headers: getContentHeaderAfterLogin()
  1159. ).responseJSON { (response) -> Void in
  1160. let error = response.result.error
  1161. if error?._code == NSURLErrorTimedOut {
  1162. completion(.timeOut())
  1163. }
  1164. if response.result.isFailure{
  1165. completion(.timeOut())
  1166. }
  1167. if response.response?.statusCode == nil {
  1168. completion(.timeOut())
  1169. }
  1170. guard (response.response?.statusCode == 200) else {
  1171. if response.response?.statusCode == 401{
  1172. completion(.updateAccessCode())
  1173. } else if response.response?.statusCode == 403 {
  1174. completion(.logOutUser())
  1175. } else {
  1176. completion(.failure(JSON(response.data!)))
  1177. }
  1178. return
  1179. }
  1180. completion(.success(JSON(response.data!)))
  1181. }
  1182. }
  1183. func submitMessage(supportIndex: Int, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1184. manager.request(
  1185. URL(string: UrlManager.sharedInstance.getMessageURL(supportIndex: supportIndex))!,
  1186. method: .post,
  1187. parameters: param,
  1188. encoding: JSONEncoding.default,
  1189. headers: getContentHeaderAfterLogin()
  1190. ).responseJSON { (response) -> Void in
  1191. if let error = response.result.error {
  1192. if error._code == NSURLErrorTimedOut {
  1193. completion(.timeOut())
  1194. }
  1195. }
  1196. if response.result.isFailure{
  1197. completion(.timeOut())
  1198. }
  1199. if response.response?.statusCode == nil {
  1200. return
  1201. }
  1202. guard (response.response?.statusCode == 201) else {
  1203. if response.response?.statusCode == 401{
  1204. completion(.updateAccessCode())
  1205. } else if response.response?.statusCode == 403 {
  1206. completion(.logOutUser())
  1207. } else{
  1208. completion(.failure(JSON(response.data!)))
  1209. }
  1210. return
  1211. }
  1212. completion(.success(JSON(response.data!)))
  1213. }
  1214. }
  1215. func withdrawBalance(requestDetails: [String: String], completion: @escaping (ApiResult) -> Void) {
  1216. manager.request(
  1217. URL(string: UrlManager.sharedInstance.getWithdrawURL())!,
  1218. method: .post,
  1219. parameters: requestDetails,
  1220. encoding: JSONEncoding.default,
  1221. headers: getContentHeaderAfterLogin()
  1222. ).responseJSON { (response) -> Void in
  1223. if let error = response.result.error {
  1224. if error._code == NSURLErrorTimedOut {
  1225. completion(.timeOut())
  1226. }
  1227. }
  1228. if response.result.isFailure{
  1229. completion(.timeOut())
  1230. }
  1231. if response.response?.statusCode == nil {
  1232. return
  1233. }
  1234. guard (response.response?.statusCode == 200) else {
  1235. if response.response?.statusCode == 401{
  1236. completion(.updateAccessCode())
  1237. } else if response.response?.statusCode == 403 {
  1238. completion(.logOutUser())
  1239. } else {
  1240. completion(.failure(JSON(response.data!)))
  1241. }
  1242. return
  1243. }
  1244. completion(.success(JSON(response.data!)))
  1245. }
  1246. }
  1247. func getBranchDetails(bankId: String, completion: @escaping (ApiResult) -> Void) {
  1248. let sessionManager = Alamofire.SessionManager.default
  1249. sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
  1250. dataTasks.forEach { $0.cancel() }
  1251. uploadTasks.forEach { $0.cancel() }
  1252. downloadTasks.forEach { $0.cancel() }
  1253. }
  1254. manager.request(
  1255. URL(string: UrlManager.sharedInstance.getBranchURL(bankId: bankId))!,
  1256. method: .get,
  1257. parameters: nil,
  1258. encoding: JSONEncoding.default,
  1259. headers: getContentHeaderAfterLogin()
  1260. ).responseJSON { (response) -> Void in
  1261. if let error = response.result.error {
  1262. if error._code == NSURLErrorTimedOut {
  1263. completion(.timeOut())
  1264. }
  1265. }
  1266. if response.result.isFailure{
  1267. completion(.timeOut())
  1268. }
  1269. if response.response?.statusCode == nil {
  1270. return
  1271. }
  1272. guard (response.response?.statusCode == 200) else {
  1273. if response.response?.statusCode == 401{
  1274. completion(.updateAccessCode())
  1275. } else if response.response?.statusCode == 403 {
  1276. completion(.logOutUser())
  1277. } else{
  1278. completion(.failure(JSON(response.data!)))
  1279. }
  1280. return
  1281. }
  1282. completion(.success(JSON(response.data!)))
  1283. }
  1284. }
  1285. func changePassword(userId: String, currentPassword: String, newPassword: String, completion: @escaping (ApiResult) -> Void) {
  1286. manager.request(
  1287. URL(string: UrlManager.sharedInstance.getPasswordChangeURL(userId: userId))!,
  1288. method: .post,
  1289. parameters: ["currentPassword": currentPassword,
  1290. "newPassword": newPassword],
  1291. encoding: JSONEncoding.default,
  1292. headers: getContentHeaderAfterLogin()
  1293. ).responseJSON { (response) -> Void in
  1294. if let error = response.result.error {
  1295. if error._code == NSURLErrorTimedOut {
  1296. completion(.timeOut())
  1297. }
  1298. }
  1299. if response.result.isFailure{
  1300. completion(.timeOut())
  1301. }
  1302. if response.response?.statusCode == nil {
  1303. return
  1304. }
  1305. guard (response.response?.statusCode == 204) else {
  1306. if response.response?.statusCode == 401{
  1307. completion(.updateAccessCode())
  1308. } else if response.response?.statusCode == 403 {
  1309. completion(.logOutUser())
  1310. } else{
  1311. completion(.failure(JSON(response.data!)))
  1312. }
  1313. return
  1314. }
  1315. completion(.success(JSON(response.data!)))
  1316. }
  1317. }
  1318. func performWalletAction(param: [String: String], moneyRequestAccepted: Bool, completion: @escaping (ApiResult) -> Void) {
  1319. let urlString: String!
  1320. if moneyRequestAccepted {
  1321. urlString = UrlManager.sharedInstance.getAcceptMoneyRequestURL()
  1322. } else {
  1323. urlString = UrlManager.sharedInstance.getWalletURL()
  1324. }
  1325. manager.request(
  1326. URL(string: urlString)!,
  1327. method: .post,
  1328. parameters: param,
  1329. encoding: JSONEncoding.default,
  1330. headers: getContentHeaderAfterLogin()
  1331. ).responseJSON { (response) -> Void in
  1332. let error = response.result.error
  1333. if error?._code == NSURLErrorTimedOut {
  1334. completion(.timeOut())
  1335. }
  1336. if response.result.isFailure{
  1337. completion(.timeOut())
  1338. }
  1339. if response.response?.statusCode == nil {
  1340. completion(.timeOut())
  1341. }
  1342. guard (response.response?.statusCode == 200) else {
  1343. if response.response?.statusCode == 401{
  1344. completion(.updateAccessCode())
  1345. } else if response.response?.statusCode == 403 {
  1346. completion(.logOutUser())
  1347. } else{
  1348. completion(.failure(JSON(response.data!)))
  1349. }
  1350. return
  1351. }
  1352. completion(.success(JSON(response.data!)))
  1353. }
  1354. }
  1355. /// Create Invitee
  1356. func createInvitee(param: [String: String], completion: @escaping (ApiResult) -> Void){
  1357. manager.request(
  1358. URL(string: UrlManager.sharedInstance.getNewInviteeURL())!,
  1359. method: .post,
  1360. parameters: param,
  1361. encoding: JSONEncoding.default,
  1362. headers: getContentHeaderAfterLogin()
  1363. ).responseJSON { (response) -> Void in
  1364. if let error = response.result.error {
  1365. if error._code == NSURLErrorTimedOut {
  1366. completion(.timeOut())
  1367. }
  1368. }
  1369. if response.result.isFailure{
  1370. completion(.timeOut())
  1371. }
  1372. if response.response?.statusCode == nil {
  1373. return
  1374. }
  1375. guard (response.response?.statusCode == 201) else {
  1376. if response.response?.statusCode == 401{
  1377. completion(.updateAccessCode())
  1378. } else if response.response?.statusCode == 403 {
  1379. completion(.logOutUser())
  1380. } else {
  1381. completion(.failure(JSON(response.data!)))
  1382. }
  1383. return
  1384. }
  1385. completion(.success(JSON(response.data!)))
  1386. }
  1387. }
  1388. /// GetInvitee
  1389. func getInvitee(userId: String, completion: @escaping (ApiResult) -> Void){
  1390. manager.request(
  1391. URL(string: UrlManager.sharedInstance.getInviteeURL(userId:userId))!,
  1392. method: .get,
  1393. parameters: nil,
  1394. encoding: JSONEncoding.default,
  1395. headers: getContentHeaderAfterLogin()
  1396. ).responseJSON { (response) -> Void in
  1397. if let error = response.result.error {
  1398. if error._code == NSURLErrorTimedOut {
  1399. completion(.timeOut())
  1400. }
  1401. }
  1402. if response.result.isFailure{
  1403. completion(.timeOut())
  1404. }
  1405. if response.response?.statusCode == nil {
  1406. return
  1407. }
  1408. guard (response.response?.statusCode == 200) else {
  1409. if response.response?.statusCode == 401{
  1410. completion(.updateAccessCode())
  1411. } else if response.response?.statusCode == 403 {
  1412. completion(.logOutUser())
  1413. } else {
  1414. completion(.failure(JSON(response.data!)))
  1415. }
  1416. return
  1417. }
  1418. completion(.success(JSON(response.data!)))
  1419. }
  1420. }
  1421. func getcmRegistrationId(userId: String, cmRegistrationId: String, completion: @escaping (ApiResult) -> Void){
  1422. manager.request(
  1423. URL(string: UrlManager.sharedInstance.getcmRegistrationIdURL(userId: userId))!,
  1424. method: .patch,
  1425. parameters: ["cmRegistrationId": cmRegistrationId],
  1426. encoding: JSONEncoding.default,
  1427. headers: getContentHeaderAfterLogin()
  1428. ).responseJSON { (response) -> Void in
  1429. if let error = response.result.error {
  1430. if error._code == NSURLErrorTimedOut {
  1431. completion(.timeOut())
  1432. }
  1433. }
  1434. if response.result.isFailure{
  1435. completion(.timeOut())
  1436. }
  1437. if response.response?.statusCode == nil {
  1438. return
  1439. }
  1440. guard (response.response?.statusCode == 200) else {
  1441. if response.response?.statusCode == 401{
  1442. completion(.updateAccessCode())
  1443. } else if response.response?.statusCode == 403 {
  1444. completion(.logOutUser())
  1445. } else {
  1446. completion(.failure(JSON(response.data!)))
  1447. }
  1448. return
  1449. }
  1450. completion(.success(JSON(response.data!)))
  1451. }
  1452. }
  1453. func getNotification(userId: String, completion: @escaping (ApiResult) -> Void){
  1454. manager.request(
  1455. URL(string: UrlManager.sharedInstance.getNotificationURL(userId: userId))!,
  1456. method: .get,
  1457. parameters: nil,
  1458. encoding: JSONEncoding.default,
  1459. headers: getContentHeaderAfterLogin()
  1460. ).responseJSON { (response) -> Void in
  1461. if let error = response.result.error {
  1462. if error._code == NSURLErrorTimedOut {
  1463. completion(.timeOut())
  1464. }
  1465. }
  1466. if response.result.isFailure{
  1467. completion(.timeOut())
  1468. }
  1469. if response.response?.statusCode == nil {
  1470. return
  1471. }
  1472. guard (response.response?.statusCode == 200) else {
  1473. if response.response?.statusCode == 401{
  1474. completion(.updateAccessCode())
  1475. } else if response.response?.statusCode == 403 {
  1476. completion(.logOutUser())
  1477. } else {
  1478. completion(.failure(JSON(response.data!)))
  1479. }
  1480. return
  1481. }
  1482. completion(.success(JSON(response.data!)))
  1483. }
  1484. }
  1485. func getNotification(userId: String,page:Int,size:Int, completion: @escaping (ApiResult) -> Void){
  1486. manager.request(
  1487. URL(string: UrlManager.sharedInstance.getNotificationURL(userId: userId))!,
  1488. method: .get,
  1489. parameters: ["userId":userId,"size":size,"page":page],
  1490. encoding: URLEncoding.queryString,
  1491. headers: getContentHeaderAfterLogin()
  1492. ).responseJSON { (response) -> Void in
  1493. if let error = response.result.error {
  1494. if error._code == NSURLErrorTimedOut {
  1495. completion(.timeOut())
  1496. }
  1497. }
  1498. if response.result.isFailure{
  1499. completion(.timeOut())
  1500. }
  1501. if response.response?.statusCode == nil {
  1502. return
  1503. }
  1504. guard (response.response?.statusCode == 200) else {
  1505. if response.response?.statusCode == 401{
  1506. completion(.updateAccessCode())
  1507. } else if response.response?.statusCode == 403 {
  1508. completion(.logOutUser())
  1509. } else {
  1510. completion(.failure(JSON(response.data!)))
  1511. }
  1512. return
  1513. }
  1514. completion(.success(JSON(response.data!)))
  1515. }
  1516. }
  1517. func patchNotification(notificationId: String, viewed: String, completion: @escaping (ApiResult) -> Void){
  1518. manager.request(
  1519. URL(string: UrlManager.sharedInstance.patchNotificationURL(notificationId: notificationId))!,
  1520. method: .patch,
  1521. parameters: ["viewed": viewed],
  1522. encoding: JSONEncoding.default,
  1523. headers: getContentHeaderAfterLogin()
  1524. ).responseJSON { (response) -> Void in
  1525. if let error = response.result.error {
  1526. if error._code == NSURLErrorTimedOut {
  1527. completion(.timeOut())
  1528. }
  1529. }
  1530. if response.result.isFailure{
  1531. completion(.timeOut())
  1532. }
  1533. if response.response?.statusCode == nil {
  1534. return
  1535. }
  1536. guard (response.response?.statusCode == 200) else {
  1537. if response.response?.statusCode == 401{
  1538. completion(.updateAccessCode())
  1539. } else if response.response?.statusCode == 403 {
  1540. completion(.logOutUser())
  1541. } else {
  1542. completion(.failure(JSON(response.data!)))
  1543. }
  1544. return
  1545. }
  1546. completion(.success(JSON(response.data!)))
  1547. }
  1548. }
  1549. func fetchCountryList(completion: @escaping (ApiResult) -> Void) {
  1550. manager.request(
  1551. URL(string: UrlManager.sharedInstance.getCountryURL())!,
  1552. method: .get,
  1553. parameters: nil,
  1554. encoding: JSONEncoding.default,
  1555. headers: getContentHeaderAfterLogin()
  1556. ).responseJSON { (response) -> Void in
  1557. let error = response.result.error
  1558. if error?._code == NSURLErrorTimedOut {
  1559. completion(.timeOut())
  1560. }
  1561. if response.response?.statusCode == nil {
  1562. completion(.timeOut())
  1563. }
  1564. guard (response.response?.statusCode == 200) else {
  1565. if response.response?.statusCode == 401{
  1566. completion(.updateAccessCode())
  1567. } else if response.response?.statusCode == 403 {
  1568. completion(.logOutUser())
  1569. } else {
  1570. completion(.failure(JSON(response.data!)))
  1571. }
  1572. return
  1573. }
  1574. if response.result.isFailure{
  1575. completion(.timeOut())
  1576. }
  1577. completion(.success(JSON(response.data!)))
  1578. }
  1579. }
  1580. func getCountryInfo(countryId:String, completion: @escaping (ApiResult) -> Void) {
  1581. manager.request(
  1582. URL(string: UrlManager.sharedInstance.getCountryURL())!,
  1583. method: .get,
  1584. parameters: ["countryId": countryId],
  1585. encoding: URLEncoding.queryString,
  1586. headers: getContentHeaderAfterLogin()
  1587. ).responseJSON { (response) -> Void in
  1588. let error = response.result.error
  1589. if error?._code == NSURLErrorTimedOut {
  1590. completion(.timeOut())
  1591. }
  1592. if response.result.isFailure{
  1593. completion(.timeOut())
  1594. }
  1595. if response.response?.statusCode == nil {
  1596. return
  1597. }
  1598. guard (response.response?.statusCode == 200) else {
  1599. if response.response?.statusCode == 401{
  1600. completion(.updateAccessCode())
  1601. } else if response.response?.statusCode == 403 {
  1602. completion(.logOutUser())
  1603. } else {
  1604. completion(.failure(JSON(response.data!)))
  1605. }
  1606. return
  1607. }
  1608. completion(.success(JSON(response.data!)))
  1609. }
  1610. }
  1611. func getCountryPayoutMode(countryId: String, completion: @escaping (ApiResult) -> Void) {
  1612. manager.request(
  1613. URL(string: UrlManager.sharedInstance.getCountryPayoutModeURL())!,
  1614. method: .get,parameters: ["countryId": countryId],
  1615. encoding: URLEncoding.queryString,
  1616. headers: getContentHeaderAfterLogin()
  1617. ).responseJSON { (response) -> Void in
  1618. let error = response.result.error
  1619. if error?._code == NSURLErrorTimedOut {
  1620. completion(.timeOut())
  1621. }
  1622. if response.result.isFailure{
  1623. completion(.timeOut())
  1624. }
  1625. if response.response?.statusCode == nil {
  1626. completion(.timeOut())
  1627. }
  1628. guard (response.response?.statusCode == 200) else {
  1629. if response.response?.statusCode == 401{
  1630. completion(.updateAccessCode())
  1631. } else if response.response?.statusCode == 403 {
  1632. completion(.logOutUser())
  1633. } else {
  1634. completion(.failure(JSON(response.data!)))
  1635. }
  1636. return
  1637. }
  1638. completion(.success(JSON(response.data!)))
  1639. }
  1640. }
  1641. func fetchAgentLocation(countryId: String,completion: @escaping (ApiResult) -> Void){
  1642. manager.request(
  1643. URL(string: UrlManager.sharedInstance.getPayoutsURL())!,
  1644. method: .get,
  1645. parameters: ["countryId": countryId, "constraint": "default"],
  1646. encoding: URLEncoding.queryString,
  1647. headers: getContentHeaderAfterLogin()
  1648. ).responseJSON { (response) -> Void in
  1649. let error = response.result.error
  1650. if error?._code == NSURLErrorTimedOut {
  1651. completion(.timeOut())
  1652. }
  1653. if response.result.isFailure{
  1654. completion(.timeOut())
  1655. }
  1656. if response.response?.statusCode == nil {
  1657. return
  1658. }
  1659. guard (response.response?.statusCode == 200) else {
  1660. if response.response?.statusCode == 401{
  1661. completion(.updateAccessCode())
  1662. } else if response.response?.statusCode == 403 {
  1663. completion(.logOutUser())
  1664. } else {
  1665. completion(.failure(JSON(response.data!)))
  1666. }
  1667. return
  1668. }
  1669. completion(.success(JSON(response.data!)))
  1670. }
  1671. }
  1672. func getPayoutBankDetail(countryId: String, payoutMethodId: String, completion: @escaping (ApiResult) -> Void){
  1673. manager.request(
  1674. URL(string: UrlManager.sharedInstance.getPayoutsURL())!,
  1675. method: .get,
  1676. parameters: ["countryId": countryId,"payoutMethodId": payoutMethodId, "constraint": "txn"],
  1677. encoding: URLEncoding.queryString,
  1678. headers: getContentHeaderAfterLogin()
  1679. ).responseJSON { (response) -> Void in
  1680. let error = response.result.error
  1681. if error?._code == NSURLErrorTimedOut {
  1682. completion(.timeOut())
  1683. }
  1684. if response.result.isFailure{
  1685. completion(.timeOut())
  1686. }
  1687. if response.response?.statusCode == nil {
  1688. completion(.timeOut())
  1689. }
  1690. guard (response.response?.statusCode == 200) else {
  1691. if response.response?.statusCode == 401 {
  1692. completion(.updateAccessCode())
  1693. } else if response.response?.statusCode == 403 {
  1694. completion(.logOutUser())
  1695. } else {
  1696. completion(.failure(JSON(response.data!)))
  1697. }
  1698. return
  1699. }
  1700. completion(.success(JSON(response.data!)))
  1701. }
  1702. }
  1703. func getPayoutBankBranchDetail(countryId: String, payoutId: String, completion: @escaping (ApiResult) -> Void){
  1704. manager.request(
  1705. URL(string: UrlManager.sharedInstance.getPayoutsBranchURL(payoutId: payoutId))!,
  1706. method: .get,
  1707. parameters: ["countryId": countryId],
  1708. encoding: URLEncoding.queryString,
  1709. headers: getContentHeaderAfterLogin()
  1710. ).responseJSON { (response) -> Void in
  1711. let error = response.result.error
  1712. if error?._code == NSURLErrorTimedOut {
  1713. completion(.timeOut())
  1714. }
  1715. if response.result.isFailure{
  1716. completion(.timeOut())
  1717. }
  1718. if response.response?.statusCode == nil {
  1719. completion(.timeOut())
  1720. }
  1721. guard (response.response?.statusCode == 200) else {
  1722. if response.response?.statusCode == 401{
  1723. completion(.updateAccessCode())
  1724. } else if response.response?.statusCode == 403 {
  1725. completion(.logOutUser())
  1726. } else {
  1727. completion(.failure(JSON(response.data!)))
  1728. }
  1729. return
  1730. }
  1731. completion(.success(JSON(response.data!)))
  1732. }
  1733. }
  1734. //SOCIAL BEGINS HERE
  1735. //CREATE Social Feeds
  1736. func createSocialFeed(param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1737. manager.request(URL(string: UrlManager.sharedInstance.getCRUDFeedURL())!,
  1738. method: .post,
  1739. parameters: param,
  1740. encoding: JSONEncoding.default,
  1741. headers: getContentHeaderAfterLogin())
  1742. .responseJSON { (response) -> Void in
  1743. if let error = response.result.error {
  1744. if error._code == NSURLErrorTimedOut {
  1745. completion(.timeOut())
  1746. }
  1747. }
  1748. if response.result.isFailure{
  1749. completion(.timeOut())
  1750. }
  1751. if response.response?.statusCode == nil {
  1752. return
  1753. }
  1754. guard (response.response?.statusCode == 201) else {
  1755. if response.response?.statusCode == 401 {
  1756. completion(.updateAccessCode())
  1757. } else if response.response?.statusCode == 403 {
  1758. completion(.logOutUser())
  1759. } else {
  1760. completion(.failure(JSON(response.data!)))
  1761. }
  1762. return
  1763. }
  1764. completion(.success(JSON(response.data!)))
  1765. }
  1766. }
  1767. //READ Social Feeds
  1768. func getSocialFeeds(param : [String: String], completion : @escaping (ApiResult) -> Void){
  1769. manager.request(
  1770. URL(string : (UrlManager.sharedInstance.getCRUDFeedURL()))!,
  1771. method: .get,
  1772. parameters: param,
  1773. encoding: URLEncoding.queryString,
  1774. headers: getContentHeaderAfterLogin())
  1775. .responseJSON { (response) -> Void in
  1776. let error = response.result.error
  1777. if error?._code == NSURLErrorTimedOut {
  1778. completion(.timeOut())
  1779. }
  1780. if response.result.isFailure{
  1781. completion(.timeOut())
  1782. }
  1783. if response.response?.statusCode == nil {
  1784. completion(.timeOut())
  1785. }
  1786. guard (response.response?.statusCode == 200) else {
  1787. if response.response?.statusCode == 401 {
  1788. completion(.updateAccessCode())
  1789. } else if response.response?.statusCode == 403 {
  1790. completion(.logOutUser())
  1791. } else {
  1792. completion(.failure(JSON(response.data!)))
  1793. }
  1794. return
  1795. }
  1796. completion(.success(JSON(response.data!)))
  1797. }
  1798. }
  1799. //UPDATE Social Feeds
  1800. func updateSocialFeed(feedId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1801. let url = UrlManager.sharedInstance.getCRUDFeedURL() + "/" + feedId
  1802. manager.request(URL(string: url)!,
  1803. method: .put,
  1804. parameters: param,
  1805. encoding: JSONEncoding.default,
  1806. headers: getContentHeaderAfterLogin())
  1807. .responseJSON { (response) -> Void in
  1808. let error = response.result.error
  1809. if error?._code == NSURLErrorTimedOut {
  1810. completion(.timeOut())
  1811. }
  1812. if response.result.isFailure{
  1813. completion(.timeOut())
  1814. }
  1815. if response.response?.statusCode == nil {
  1816. completion(.timeOut())
  1817. }
  1818. guard (response.response?.statusCode == 200) else {
  1819. if response.response?.statusCode == 401 {
  1820. completion(.updateAccessCode())
  1821. } else if response.response?.statusCode == 403 {
  1822. completion(.logOutUser())
  1823. } else {
  1824. completion(.failure(JSON(response.data!)))
  1825. }
  1826. return
  1827. }
  1828. completion(.success(JSON(response.data!)))
  1829. }
  1830. }
  1831. //DELETE Social Feeds
  1832. func deleteSocialFeed(feedId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1833. let url = UrlManager.sharedInstance.getCRUDFeedURL() + "/" + feedId
  1834. manager.request(URL(string: url)!,
  1835. method: .delete,
  1836. parameters: param,
  1837. encoding: URLEncoding.queryString,
  1838. headers: getContentHeaderAfterLogin())
  1839. .responseJSON { (response) -> Void in
  1840. let error = response.result.error
  1841. if error?._code == NSURLErrorTimedOut {
  1842. completion(.timeOut())
  1843. }
  1844. if response.result.isFailure{
  1845. completion(.timeOut())
  1846. }
  1847. if response.response?.statusCode == nil {
  1848. completion(.timeOut())
  1849. }
  1850. guard (response.response?.statusCode == 204) else {
  1851. if response.response?.statusCode == 401 {
  1852. completion(.updateAccessCode())
  1853. } else if response.response?.statusCode == 403 {
  1854. completion(.logOutUser())
  1855. } else {
  1856. completion(.failure(JSON(response.data!)))
  1857. }
  1858. return
  1859. }
  1860. completion(.success(JSON(response.data!)))
  1861. }
  1862. }
  1863. //DELETE Social Feeds
  1864. func reportSocialFeed(feedId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1865. let url = UrlManager.sharedInstance.getCRUDFeedURL() + "/" + feedId + "/reports?"
  1866. manager.request(URL(string: url)!,
  1867. method: .post,
  1868. parameters: param,
  1869. encoding: JSONEncoding.default,
  1870. headers: getContentHeaderAfterLogin())
  1871. .responseJSON { (response) -> Void in
  1872. let error = response.result.error
  1873. if error?._code == NSURLErrorTimedOut {
  1874. completion(.timeOut())
  1875. }
  1876. if response.result.isFailure{
  1877. completion(.timeOut())
  1878. }
  1879. if response.response?.statusCode == nil {
  1880. completion(.timeOut())
  1881. }
  1882. guard (response.response?.statusCode == 201) else {
  1883. if response.response?.statusCode == 401 {
  1884. completion(.updateAccessCode())
  1885. } else if response.response?.statusCode == 403 {
  1886. completion(.logOutUser())
  1887. } else {
  1888. completion(.failure(JSON(response.data!)))
  1889. }
  1890. return
  1891. }
  1892. completion(.success(JSON(response.data!)))
  1893. }
  1894. }
  1895. //Multipart Image Upload
  1896. func uploadImage(imageData: Any, isGif: Bool, param : [String:String], completion : @escaping (ApiResult) -> Void) {
  1897. var fileName: String!
  1898. var mimeType: String!
  1899. var data: Data!
  1900. if isGif {
  1901. fileName = "test.gif"
  1902. mimeType = "image/gif"
  1903. data = imageData as! Data
  1904. } else {
  1905. fileName = "test.jpg"
  1906. mimeType = "image/jpeg"
  1907. data = UIImageJPEGRepresentation(imageData as! UIImage, 0.7)!
  1908. }
  1909. manager.upload(
  1910. multipartFormData: { multipartFormData in
  1911. multipartFormData.append(data, withName: "file", fileName: fileName, mimeType: mimeType)
  1912. for (key,value) in param {
  1913. multipartFormData.append(value.data(using: .utf8)!, withName: key)
  1914. }
  1915. },
  1916. to: URL(string: UrlManager.sharedInstance.multipartImageUploadURL())!,
  1917. method: .post,
  1918. headers: getContentHeaderAfterLogin(),
  1919. encodingCompletion: { encodingResult in
  1920. switch encodingResult {
  1921. case .success(let upload, _, _):
  1922. upload.responseJSON { response in
  1923. if let error = response.result.error {
  1924. if error._code == NSURLErrorTimedOut {
  1925. completion(.timeOut())
  1926. }
  1927. }
  1928. if response.result.isFailure{
  1929. completion(.timeOut())
  1930. }
  1931. if response.response?.statusCode == nil {
  1932. return
  1933. }
  1934. guard (response.response?.statusCode == 201) else {
  1935. if response.response?.statusCode == 401 {
  1936. completion(.updateAccessCode())
  1937. } else if response.response?.statusCode == 403 {
  1938. completion(.logOutUser())
  1939. } else {
  1940. completion(.failure(JSON(response.data!)))
  1941. }
  1942. return
  1943. }
  1944. completion(.success(JSON(response.data!)))
  1945. }
  1946. case .failure(_):
  1947. return
  1948. }
  1949. })
  1950. }
  1951. //LIKE OR DISLIKE Social Feed
  1952. func likeDislikeSocialFeed(feedId: String, isLiked: Bool, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  1953. var methodType: HTTPMethod!
  1954. if isLiked {
  1955. methodType = .delete
  1956. } else {
  1957. methodType = .post
  1958. }
  1959. manager.request(URL(string: UrlManager.sharedInstance.getLikeDislikeFeedURL(feedId: feedId))!,
  1960. method: methodType,
  1961. parameters: param,
  1962. encoding: URLEncoding.queryString,
  1963. headers: getContentHeaderAfterLogin())
  1964. .responseJSON { (response) -> Void in
  1965. let error = response.result.error
  1966. if error?._code == NSURLErrorTimedOut {
  1967. completion(.timeOut())
  1968. }
  1969. if response.result.isFailure{
  1970. completion(.timeOut())
  1971. }
  1972. guard response.response?.statusCode != nil else {
  1973. completion(.timeOut())
  1974. return
  1975. }
  1976. switch response.response?.statusCode {
  1977. case 204?, 201?:
  1978. completion(.success(JSON(response.data!)))
  1979. case 401?:
  1980. completion(.updateAccessCode())
  1981. case 403?:
  1982. completion(.logOutUser())
  1983. default:
  1984. completion(.failure(JSON(response.data!)))
  1985. }
  1986. }
  1987. }
  1988. //LIKES for Social Feed
  1989. func getAllLikesFor(feedId: String, completion: @escaping (ApiResult) -> Void) {
  1990. manager.request(URL(string: UrlManager.sharedInstance.getLikeDislikeFeedURL(feedId: feedId))!,
  1991. method: .get,
  1992. headers: getContentHeaderAfterLogin())
  1993. .responseJSON { (response) -> Void in
  1994. let error = response.result.error
  1995. if error?._code == NSURLErrorTimedOut {
  1996. completion(.timeOut())
  1997. }
  1998. if response.result.isFailure{
  1999. completion(.timeOut())
  2000. }
  2001. if response.response?.statusCode == nil {
  2002. completion(.timeOut())
  2003. }
  2004. guard (response.response?.statusCode == 200) else {
  2005. if response.response?.statusCode == 401 {
  2006. completion(.updateAccessCode())
  2007. } else if response.response?.statusCode == 403 {
  2008. completion(.logOutUser())
  2009. } else {
  2010. completion(.failure(JSON(response.data!)))
  2011. }
  2012. return
  2013. }
  2014. completion(.success(JSON(response.data!)))
  2015. }
  2016. }
  2017. //COMMENTS for Social Feed
  2018. func getAllCommentsFor(feedId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2019. manager.request(URL(string: UrlManager.sharedInstance.getCommentFeedURL(feedId: feedId))!,
  2020. method: .get,
  2021. parameters: param,
  2022. encoding: URLEncoding.queryString,
  2023. headers: getContentHeaderAfterLogin())
  2024. .responseJSON { (response) -> Void in
  2025. let error = response.result.error
  2026. if error?._code == NSURLErrorTimedOut {
  2027. completion(.timeOut())
  2028. }
  2029. if response.result.isFailure{
  2030. completion(.timeOut())
  2031. }
  2032. if response.response?.statusCode == nil {
  2033. return
  2034. }
  2035. guard (response.response?.statusCode == 200) else {
  2036. if response.response?.statusCode == 401 {
  2037. completion(.updateAccessCode())
  2038. } else if response.response?.statusCode == 403 {
  2039. completion(.logOutUser())
  2040. } else {
  2041. completion(.failure(JSON(response.data!)))
  2042. }
  2043. return
  2044. }
  2045. completion(.success(JSON(response.data!)))
  2046. }
  2047. }
  2048. //CREATE NEW COMMENT
  2049. func createComment(feedId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2050. manager.request(URL(string: UrlManager.sharedInstance.getCreateCommentURL(feedId: feedId))!,
  2051. method: .post,
  2052. parameters: param,
  2053. encoding: JSONEncoding.default,
  2054. headers: getContentHeaderAfterLogin())
  2055. .responseJSON { (response) -> Void in
  2056. let error = response.result.error
  2057. if error?._code == NSURLErrorTimedOut {
  2058. completion(.timeOut())
  2059. }
  2060. if response.result.isFailure{
  2061. completion(.timeOut())
  2062. }
  2063. if response.response?.statusCode == nil {
  2064. return
  2065. }
  2066. guard (response.response?.statusCode == 201) else {
  2067. if response.response?.statusCode == 401 {
  2068. completion(.updateAccessCode())
  2069. } else if response.response?.statusCode == 403 {
  2070. completion(.logOutUser())
  2071. } else {
  2072. completion(.failure(JSON(response.data!)))
  2073. }
  2074. return
  2075. }
  2076. completion(.success(JSON(response.data!)))
  2077. }
  2078. }
  2079. //EDIT COMMENT
  2080. func editComment(feedId: String, commentId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2081. manager.request(URL(string: UrlManager.sharedInstance.getEditDeleteCommentURL(feedId: feedId, commentId: commentId))!,
  2082. method: .put,
  2083. parameters: param,
  2084. encoding: JSONEncoding.default,
  2085. headers: getContentHeaderAfterLogin())
  2086. .responseJSON { (response) -> Void in
  2087. let error = response.result.error
  2088. if error?._code == NSURLErrorTimedOut {
  2089. completion(.timeOut())
  2090. }
  2091. if response.result.isFailure{
  2092. completion(.timeOut())
  2093. }
  2094. if response.response?.statusCode == nil {
  2095. completion(.timeOut())
  2096. }
  2097. guard (response.response?.statusCode == 200) else {
  2098. if response.response?.statusCode == 401 {
  2099. completion(.updateAccessCode())
  2100. } else if response.response?.statusCode == 403 {
  2101. completion(.logOutUser())
  2102. } else {
  2103. completion(.failure(JSON(response.data!)))
  2104. }
  2105. return
  2106. }
  2107. completion(.success(JSON(response.data!)))
  2108. }
  2109. }
  2110. //REMOVE COMMENT
  2111. func deleteComment(feedId: String, commentId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2112. manager.request(URL(string: UrlManager.sharedInstance.getEditDeleteCommentURL(feedId: feedId, commentId: commentId))!,
  2113. method: .delete,
  2114. parameters: param,
  2115. encoding: URLEncoding.queryString,
  2116. headers: getContentHeaderAfterLogin())
  2117. .responseJSON { (response) -> Void in
  2118. let error = response.result.error
  2119. if error?._code == NSURLErrorTimedOut {
  2120. completion(.timeOut())
  2121. }
  2122. if response.result.isFailure{
  2123. completion(.timeOut())
  2124. }
  2125. if response.response?.statusCode == nil {
  2126. return
  2127. }
  2128. guard (response.response?.statusCode == 204) else {
  2129. if response.response?.statusCode == 401 {
  2130. completion(.updateAccessCode())
  2131. } else if response.response?.statusCode == 403 {
  2132. completion(.logOutUser())
  2133. } else {
  2134. completion(.failure(JSON(response.data!)))
  2135. }
  2136. return
  2137. }
  2138. completion(.success(JSON(response.data!)))
  2139. }
  2140. }
  2141. //FETCH REWARDS
  2142. func fetchRewards(completion: @escaping (ApiResult) -> Void) {
  2143. manager.request(URL(string: UrlManager.sharedInstance.getRewardsURL())!,
  2144. method: .get,
  2145. headers: getContentHeaderAfterLogin())
  2146. .responseJSON { (response) -> Void in
  2147. let error = response.result.error
  2148. if error?._code == NSURLErrorTimedOut {
  2149. completion(.timeOut())
  2150. }
  2151. if response.result.isFailure{
  2152. completion(.timeOut())
  2153. }
  2154. if response.response?.statusCode == nil {
  2155. completion(.timeOut())
  2156. }
  2157. guard (response.response?.statusCode == 200) else {
  2158. if response.response?.statusCode == 401 {
  2159. completion(.updateAccessCode())
  2160. } else if response.response?.statusCode == 403 {
  2161. completion(.logOutUser())
  2162. } else {
  2163. completion(.failure(JSON(response.data!)))
  2164. }
  2165. return
  2166. }
  2167. completion(.success(JSON(response.data!)))
  2168. }
  2169. }
  2170. //REDEEM REWARD
  2171. func redeemReward(rewardId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2172. manager.request(URL(string: UrlManager.sharedInstance.getRedeemRewardURL(rewardId: rewardId))!,
  2173. method: .post,
  2174. parameters: param,
  2175. encoding: JSONEncoding.default,
  2176. headers: getContentHeaderAfterLogin())
  2177. .responseJSON { (response) -> Void in
  2178. let error = response.result.error
  2179. if error?._code == NSURLErrorTimedOut {
  2180. completion(.timeOut())
  2181. }
  2182. if response.result.isFailure{
  2183. completion(.timeOut())
  2184. }
  2185. if response.response?.statusCode == nil {
  2186. return
  2187. }
  2188. guard (response.response?.statusCode == 201) else {
  2189. if response.response?.statusCode == 401 {
  2190. completion(.updateAccessCode())
  2191. } else if response.response?.statusCode == 403 {
  2192. completion(.logOutUser())
  2193. } else {
  2194. completion(.failure(JSON(response.data!)))
  2195. }
  2196. return
  2197. }
  2198. completion(.success(JSON(response.data!)))
  2199. }
  2200. }
  2201. /**
  2202. GET CURRENCIES
  2203. */
  2204. func getCurrencies(param: [String: String],completion: @escaping (ApiResult) -> Void) {
  2205. manager.request(
  2206. URL(string: UrlManager.sharedInstance.getCurrencyURL())!,
  2207. method: .get,
  2208. parameters: param,
  2209. encoding: URLEncoding.queryString,
  2210. headers: getContentHeaderAfterLogin()
  2211. ).responseJSON { (response) -> Void in
  2212. let error = response.result.error
  2213. if error?._code == NSURLErrorTimedOut {
  2214. completion(.timeOut())
  2215. }
  2216. if response.result.isFailure{
  2217. completion(.timeOut())
  2218. }
  2219. if response.response?.statusCode == nil {
  2220. completion(.timeOut())
  2221. }
  2222. guard (response.response?.statusCode == 200) else {
  2223. if response.response?.statusCode == 401{
  2224. completion(.updateAccessCode())
  2225. } else if response.response?.statusCode == 403 {
  2226. completion(.logOutUser())
  2227. } else {
  2228. completion(.failure(JSON(response.data!)))
  2229. }
  2230. return
  2231. }
  2232. completion(.success(JSON(response.data!)))
  2233. }
  2234. }
  2235. /**
  2236. GET Exchange Rate
  2237. */
  2238. func getExchangeRates(param: [String: Any], completion: @escaping (ApiResult) -> Void) {
  2239. manager.request(
  2240. URL(string: UrlManager.sharedInstance.getExchangeRateURL())!,
  2241. method: .post,
  2242. parameters: param,
  2243. encoding: JSONEncoding.default,
  2244. headers: getContentHeaderAfterLogin()
  2245. ).responseJSON { (response) -> Void in
  2246. let error = response.result.error
  2247. if error?._code == NSURLErrorTimedOut {
  2248. completion(.timeOut())
  2249. }
  2250. if response.result.isFailure{
  2251. completion(.timeOut())
  2252. }
  2253. if response.response?.statusCode == nil {
  2254. return
  2255. }
  2256. guard (response.response?.statusCode == 200) else {
  2257. if response.response?.statusCode == 401{
  2258. completion(.updateAccessCode())
  2259. } else if response.response?.statusCode == 403 {
  2260. completion(.logOutUser())
  2261. } else {
  2262. completion(.failure(JSON(response.data!)))
  2263. }
  2264. return
  2265. }
  2266. completion(.success(JSON(response.data!)))
  2267. }
  2268. }
  2269. //UPDATE USER DETAIL (NOT KYC)
  2270. //USE THIS FUNCTION TO UPDATE USER PROFILE IMAGE AND CMREGISTRATION CODE
  2271. func updateUserDetail(userId: String, param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2272. manager.request(
  2273. URL(string: UrlManager.sharedInstance.getUserUpdateURL(userId: userId))!,
  2274. method: .patch,
  2275. parameters: param,
  2276. encoding: JSONEncoding.default,
  2277. headers: getContentHeaderAfterLogin()
  2278. ).responseJSON { (response) -> Void in
  2279. let error = response.result.error
  2280. if error?._code == NSURLErrorTimedOut {
  2281. completion(.timeOut())
  2282. }
  2283. if response.result.isFailure{
  2284. completion(.timeOut())
  2285. }
  2286. if response.response?.statusCode == nil {
  2287. completion(.timeOut())
  2288. }
  2289. guard (response.response?.statusCode == 200) else {
  2290. if response.response?.statusCode == 401{
  2291. completion(.updateAccessCode())
  2292. } else if response.response?.statusCode == 403 {
  2293. completion(.logOutUser())
  2294. } else{
  2295. completion(.failure(JSON(response.data!)))
  2296. }
  2297. return
  2298. }
  2299. completion(.success(JSON(response.data!)))
  2300. }
  2301. }
  2302. func validateReferralCode(param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2303. manager.request(
  2304. URL(string: UrlManager.sharedInstance.getReferralCodeValidationURL())!,
  2305. method: .post,
  2306. parameters: param,
  2307. encoding: JSONEncoding.default,
  2308. headers: getContentHeaderAfterLogin()
  2309. ).responseJSON { (response) -> Void in
  2310. if let error = response.result.error {
  2311. if error._code == NSURLErrorTimedOut {
  2312. completion(.timeOut())
  2313. }
  2314. }
  2315. if response.result.isFailure{
  2316. completion(.timeOut())
  2317. }
  2318. if response.response?.statusCode == nil {
  2319. return
  2320. }
  2321. guard (response.response?.statusCode == 200) else {
  2322. if response.response?.statusCode == 401{
  2323. completion(.updateAccessCode())
  2324. } else if response.response?.statusCode == 403 {
  2325. completion(.logOutUser())
  2326. } else {
  2327. completion(.failure(JSON(response.data!)))
  2328. }
  2329. return
  2330. }
  2331. completion(.success(JSON(response.data!)))
  2332. }
  2333. }
  2334. func rejectMoneyRequest(param: [String: String], completion: @escaping (ApiResult) -> Void) {
  2335. manager.request(
  2336. URL(string: UrlManager.sharedInstance.getRejectMoneyRequestURL())!,
  2337. method: .post,
  2338. parameters: param,
  2339. encoding: JSONEncoding.default,
  2340. headers: getContentHeaderAfterLogin()
  2341. ).responseJSON { (response) -> Void in
  2342. if let error = response.result.error {
  2343. if error._code == NSURLErrorTimedOut {
  2344. completion(.timeOut())
  2345. }
  2346. }
  2347. if response.result.isFailure{
  2348. completion(.timeOut())
  2349. }
  2350. if response.response?.statusCode == nil {
  2351. return
  2352. }
  2353. guard (response.response?.statusCode == 200) else {
  2354. if response.response?.statusCode == 401{
  2355. completion(.updateAccessCode())
  2356. } else if response.response?.statusCode == 403 {
  2357. completion(.logOutUser())
  2358. } else {
  2359. completion(.failure(JSON(response.data!)))
  2360. }
  2361. return
  2362. }
  2363. completion(.success(JSON(response.data!)))
  2364. }
  2365. }
  2366. func getParticularSocialFeed(feedId: String, param : [String: String], completion : @escaping (ApiResult) -> Void){
  2367. manager.request(
  2368. URL(string : (UrlManager.sharedInstance.getParticularFeedURL(feedId: feedId)))!,
  2369. method: .get,
  2370. parameters: param,
  2371. encoding: URLEncoding.queryString,
  2372. headers: getContentHeaderAfterLogin())
  2373. .responseJSON { (response) -> Void in
  2374. let error = response.result.error
  2375. if error?._code == NSURLErrorTimedOut {
  2376. completion(.timeOut())
  2377. }
  2378. if response.result.isFailure{
  2379. completion(.timeOut())
  2380. }
  2381. if response.response?.statusCode == nil {
  2382. completion(.timeOut())
  2383. }
  2384. guard (response.response?.statusCode == 200) else {
  2385. if response.response?.statusCode == 401 {
  2386. completion(.updateAccessCode())
  2387. } else if response.response?.statusCode == 403 {
  2388. completion(.logOutUser())
  2389. } else {
  2390. completion(.failure(JSON(response.data!)))
  2391. }
  2392. return
  2393. }
  2394. completion(.success(JSON(response.data!)))
  2395. }
  2396. }
  2397. func cancelExistingNetworkCalls() {
  2398. let sessionManager = Alamofire.SessionManager.default
  2399. sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
  2400. dataTasks.forEach { $0.cancel() }
  2401. uploadTasks.forEach { $0.cancel() }
  2402. downloadTasks.forEach { $0.cancel() }
  2403. }
  2404. }
  2405. }