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.

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