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.

2960 lines
110 KiB

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