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.

3108 lines
122 KiB

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