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.

2964 lines
109 KiB

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