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.

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