Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.95 KB | None | 0 0
  1. //
  2. // CommonPaymentListVC.swift
  3. // CreatedApp
  4. //
  5. // Created by Tushar on 21/01/20.
  6. //
  7.  
  8. import UIKit
  9.  
  10. class CommonPaymentListVC: PAGEMainViewController,HeaderDelegate {
  11.  
  12. var paymentSettingList:Array<Dictionary<String,Any>> = []
  13. var userPaymentDetails : UserPaymentDetails?
  14. weak var paymentDelegate: CommonPaymentDelegate? = nil
  15.  
  16. @IBOutlet weak var parentView: UIView!
  17. @IBOutlet weak var headView: UIView!
  18. @IBOutlet weak var lbl_Amounttxt: UILabel!
  19. @IBOutlet weak var lbl_Amount: UILabel!
  20. @IBOutlet weak var subHeadView: UIView!
  21. @IBOutlet weak var lbl_Subhead: UILabel!
  22. @IBOutlet weak var paymentTableViewController: UITableView!
  23.  
  24. override func viewDidLoad() {
  25. self.addHeader(type: AppManager.shared.getheaderBarType(), disableheaderImage_forinnerpages: AppManager.shared.getinnerNavbarImage())
  26. super.viewDidLoad()
  27. self.header?.delegate = self
  28. navigationPageuiSetup()
  29. setupStyleNavigationSetup()
  30.  
  31. }
  32.  
  33. override func viewWillAppear(_ animated: Bool) {
  34. makeNavbarHidden()
  35. super.viewWillAppear(animated)
  36. }
  37. }
  38.  
  39. extension CommonPaymentListVC {
  40.  
  41. func setupStyleNavigationSetup() {
  42.  
  43. // Setup ParentView
  44. self.getContainerView().addSubview(parentView)
  45. LayoutEngine.shared.addViewConstraints(withVw: parentView)
  46. self.paymentTableViewController.tableFooterView = UIView()
  47. }
  48. }
  49.  
  50. //MARK: NAVIGATION SETUP
  51. extension CommonPaymentListVC {
  52. func navigationPageuiSetup() {
  53. self.setHeadersubviews(settings: [:])
  54. }
  55.  
  56. private func setHeadersubviews(settings:NSDictionary) {
  57. do {
  58. try self.addHeaderSubviews(avail_leftBtn1:true , urlStr_leftBtn1:nil, avail_leftBtn2:false, urlStr_leftBtn2:nil, avail_rightBtn1:false, urlStr_rightBtn1:nil, avail_rightBtn2: false, urlStr_rightBtn2:nil, titleViewType:.LABEL)
  59. }catch {
  60. debugPrint("Header Error \(error.localizedDescription)")
  61. }
  62.  
  63. self.setTitleColor(colorStr: AppManager.shared.getheaderBarTextColor(), colorType: .Hex)
  64. self.setTitle(font: AppManager.shared.getheaderBarFont(), fontSize: "medium", textStr:"Payment", titleType: .LABEL)
  65. self.header?.rightBtn1?.isHidden = true
  66.  
  67. //Setup Amount
  68. lbl_Amount.text = userPaymentDetails?.amount.converIntoCurrencey() ?? ""
  69. }
  70. }
  71.  
  72. //Handle Events and Setup View
  73. extension CommonPaymentListVC {
  74. func clickOn_leftbtn1(sender: UIButton) {
  75. DispatchQueue.main.async {
  76. self.dismiss(animated: true)
  77. }
  78. }
  79. }
  80.  
  81. //Table View Controller
  82.  
  83. extension CommonPaymentListVC :UITableViewDataSource,UITableViewDelegate
  84. {
  85. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  86.  
  87. if(self.paymentSettingList.count > 0){
  88. return self.paymentSettingList.count
  89. }
  90.  
  91. var imageView : UIImageView
  92. imageView = UIImageView(frame:CGRect(x: 0,
  93. y: 0,
  94. width: paymentTableViewController.bounds.size.width,
  95. height: paymentTableViewController.bounds.size.height));
  96. imageView.image = UIImage(named: "NoData_icon")?.tint(with: ("#a9a9a9").setColorFromString());
  97. imageView.contentMode = .center;
  98.  
  99. paymentTableViewController.backgroundView = imageView
  100. paymentTableViewController.separatorStyle = .none
  101. return 0
  102. }
  103.  
  104. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  105. let cell = tableView.dequeueReusableCell(withIdentifier:"PaymentListCell") as! PaymentListCell;
  106. cell.selectionStyle = UITableViewCell.SelectionStyle.none;
  107. cell.separatorInset = UIEdgeInsets.zero;
  108. if let payment = self.paymentSettingList[safe : indexPath.row] {
  109. cell.setValueInCell(cellData : payment)
  110. }
  111. return cell
  112. }
  113.  
  114. //TableView DelegateMethod
  115. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  116. if let paymentData = paymentSettingList[indexPath.row] as? Dictionary<String,Any> {
  117. didClickPaymentMethod(withPaymentData: paymentData)
  118. }
  119. }
  120.  
  121. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  122. return 60
  123. }
  124. }
  125.  
  126. extension CommonPaymentListVC {
  127.  
  128. func getPaymentDetails(withFlag:String,withPaymentData:Dictionary<String,Any>)->String{
  129.  
  130. let paymentKey = withPaymentData["key"] as? String
  131. let paymentCredentials = withPaymentData["credentials"] as? Dictionary<String,Any>
  132. var apiURL = ""
  133. var paymentMethod = ""
  134.  
  135. switch paymentKey {
  136.  
  137. case "cod":
  138. apiURL = paymentCredentials?["cod_api_url"] as? String ?? ""
  139. paymentMethod = "getCodForm"
  140. break;
  141.  
  142. case "pu":
  143. apiURL = paymentCredentials?["pu_api_url"] as? String ?? ""
  144. paymentMethod = "getPuForm"
  145. break;
  146.  
  147. case "cc_phone":
  148. apiURL = paymentCredentials?["cc_phone_api_url"] as? String ?? ""
  149. paymentMethod = "getCcPhoneForm"
  150. break;
  151.  
  152. case "mercado":
  153. apiURL = paymentCredentials?["mercado_api_url"] as? String ?? ""
  154. paymentMethod = "getMercadoForm"
  155. break;
  156.  
  157. case "paypal":
  158. apiURL = paymentCredentials?["paypal_api_url"] as? String ?? ""
  159. paymentMethod = "getPaypalExpressForm"
  160. break;
  161.  
  162. case "stripe":
  163. apiURL = paymentCredentials?["stripe_api_url"] as? String ?? ""
  164. paymentMethod = "getStripeForm"
  165. break;
  166.  
  167. case "velocity":
  168. apiURL = paymentCredentials?["velocity_api_url"] as? String ?? ""
  169. paymentMethod = "velocityForm"
  170. break;
  171.  
  172. case "payu_money":
  173. apiURL = paymentCredentials?["payu_money_api_url"] as? String ?? ""
  174. paymentMethod = "getPayuForm"
  175. break;
  176.  
  177. case "braintree":
  178. apiURL = paymentCredentials?["braintree_api_url"] as? String ?? ""
  179. paymentMethod = "braintreeDirectForm"
  180. break;
  181.  
  182. case "payfast":
  183. apiURL = paymentCredentials?["velocity_api_url"] as? String ?? ""
  184. paymentMethod = "getPayfastForm"
  185. break;
  186.  
  187. case "pesapal":
  188. apiURL = paymentCredentials?["pesapal_api_url"] as? String ?? ""
  189. paymentMethod = "getPesapalForm"
  190. break;
  191.  
  192. case "authorize":
  193. apiURL = paymentCredentials?["authorize_api_url"] as? String ?? ""
  194. paymentMethod = "getAuthorizeForm"
  195. break;
  196.  
  197. case "boleto":
  198. apiURL = paymentCredentials?["boleto_api_url"] as? String ?? ""
  199. paymentMethod = "getBoletoForm"
  200. break;
  201.  
  202. case "hubtel":
  203. apiURL = paymentCredentials?["hubtel_api_url"] as? String ?? ""
  204. paymentMethod = "getHubtelForm"
  205. break;
  206.  
  207. default:
  208. break;
  209. }
  210.  
  211. if(withFlag == "apiurl"){
  212. return apiURL
  213. }
  214. return paymentMethod
  215. }
  216.  
  217.  
  218. func didClickPaymentMethod(withPaymentData:Dictionary<String,Any>){
  219.  
  220. let query = GetCommonPaymentFormQuery(
  221. api_url: getPaymentDetails(withFlag: "apiurl", withPaymentData: withPaymentData) ,
  222. method: getPaymentDetails(withFlag: "method", withPaymentData: withPaymentData),
  223. appId: userPaymentDetails?.appId,
  224. pageId: userPaymentDetails?.pageId,
  225. pagename: userPaymentDetails?.pagename,
  226. orderDesc: userPaymentDetails?.orderDesc,
  227. amount: userPaymentDetails?.amount,
  228. orderId: userPaymentDetails?.orderId,
  229. fName: userPaymentDetails?.fName,
  230. mobile: userPaymentDetails?.mobile,
  231. currency: userPaymentDetails?.currency,
  232. email: userPaymentDetails?.email,
  233. pname: userPaymentDetails?.pname,
  234. quantity: userPaymentDetails?.quantity,
  235. pinfo: userPaymentDetails?.pinfo,
  236. itemName: userPaymentDetails?.itemName,
  237. userId: userPaymentDetails?.userId
  238. )
  239.  
  240. MBProgressHUD.showAdded(to: self.view, animated: true)
  241. AWSAPIManager.shared.awsApiRequest(queryRequest: query) { (result) in
  242. DispatchQueue.main.async {[unowned self] in
  243. MBProgressHUD.hide(for: self.view, animated: true)
  244. if let dictionary = (result?.getCommonPaymentForm?.jsonObject) , let error_message = dictionary["error_message"] as? String , let error_code = dictionary["error_code"] as? String{
  245. if(error_code != "0" && error_message != "Success"){
  246. self.dismiss(animated: true, completion: {[] in
  247. self.paymentDelegate?.paymentFailure?(responseData: dictionary)
  248. })
  249. return;
  250. }
  251.  
  252. //Success Method
  253. self.getPaymentFormSuccess(withPaymentData:withPaymentData , withResponseData:dictionary)
  254. }
  255. }
  256. }
  257. }
  258.  
  259.  
  260. func getPaymentFormSuccess(withPaymentData:Dictionary<String,Any>,withResponseData:Dictionary<String,Any>){
  261.  
  262. let paymentKey = withPaymentData["key"] as? String;
  263. switch paymentKey{
  264.  
  265. case "pu","cod","cc_phone":
  266. self.dismiss(animated: true, completion: {[] in
  267. self.paymentDelegate?.paymentSuccess?(responseData: withResponseData)
  268. })
  269. break;
  270.  
  271. default:
  272. self.navigateToWebView(withPaymentData:withPaymentData,withResponseData:withResponseData)
  273. break;
  274. }
  275. }
  276.  
  277. func navigateToWebView(withPaymentData:Dictionary<String,Any>,withResponseData:Dictionary<String,Any>){
  278. let story = UIStoryboard.init(name: "HyperStore", bundle: nil)
  279. let viewcontroller : PaymentWebviewVC = story.instantiateViewController(withIdentifier: "PaymentWebviewVC") as! PaymentWebviewVC
  280. viewcontroller.paymentDelegate = paymentDelegate
  281. viewcontroller.userPaymentDetails = userPaymentDetails
  282. viewcontroller.paymentData = withPaymentData
  283. viewcontroller.responseData = withResponseData
  284. viewcontroller.modalPresentationStyle = .fullScreen
  285. self.navigationController?.present(viewcontroller, animated: true, completion: nil)
  286. }
  287.  
  288. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement