diff --git a/GME Remit.xcodeproj/project.pbxproj b/GME Remit.xcodeproj/project.pbxproj index 1caf472f..cfd42b8d 100644 --- a/GME Remit.xcodeproj/project.pbxproj +++ b/GME Remit.xcodeproj/project.pbxproj @@ -83,6 +83,8 @@ 04CAEC2D1FEBAEB400C819D4 /* KYCViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CAEC2C1FEBAEB400C819D4 /* KYCViewModel.swift */; }; 04CD5395208F0765008F0971 /* UploadImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CD5394208F0765008F0971 /* UploadImageViewModel.swift */; }; 04CDC57E20809DCE0081BE50 /* Reward.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04CDC57D20809DCE0081BE50 /* Reward.swift */; }; + 04DC27EC21A51E29003714F5 /* AutoRefund.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DC27EB21A51E29003714F5 /* AutoRefund.swift */; }; + 04DC27EE21A51E83003714F5 /* autoRefundService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DC27ED21A51E83003714F5 /* autoRefundService.swift */; }; 04DD3AC02004A6980021A366 /* ForgetPasswordDOBViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DD3ABF2004A6980021A366 /* ForgetPasswordDOBViewController.swift */; }; 04E1032C2007A88600AE24A2 /* ScrollableProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E1032B2007A88600AE24A2 /* ScrollableProtocol.swift */; }; 04EA4DB12026CD0E00BF6BED /* TrackTransfer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 04EA4DB02026CD0E00BF6BED /* TrackTransfer.storyboard */; }; @@ -623,6 +625,8 @@ 04CAEC2C1FEBAEB400C819D4 /* KYCViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCViewModel.swift; sourceTree = ""; }; 04CD5394208F0765008F0971 /* UploadImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadImageViewModel.swift; sourceTree = ""; }; 04CDC57D20809DCE0081BE50 /* Reward.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Reward.swift; sourceTree = ""; }; + 04DC27EB21A51E29003714F5 /* AutoRefund.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoRefund.swift; sourceTree = ""; }; + 04DC27ED21A51E83003714F5 /* autoRefundService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = autoRefundService.swift; sourceTree = ""; }; 04DD3ABF2004A6980021A366 /* ForgetPasswordDOBViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgetPasswordDOBViewController.swift; sourceTree = ""; }; 04E1032B2007A88600AE24A2 /* ScrollableProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollableProtocol.swift; sourceTree = ""; }; 04EA4DB02026CD0E00BF6BED /* TrackTransfer.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TrackTransfer.storyboard; sourceTree = ""; }; @@ -1169,6 +1173,7 @@ children = ( 045976B121A3D8F30001E92A /* AutoRefundsViewController.swift */, 045976B321A3D90A0001E92A /* autoRefund.storyboard */, + 04DC27ED21A51E83003714F5 /* autoRefundService.swift */, ); path = "Auto refund"; sourceTree = ""; @@ -3189,6 +3194,7 @@ D97785AB215DD23400754079 /* TransactionModel.swift */, D9DC108321639E56008F3C51 /* SuccessMessage.swift */, D96BD1202164828D00DFE7D8 /* WalletStatement.swift */, + 04DC27EB21A51E29003714F5 /* AutoRefund.swift */, ); path = Model; sourceTree = ""; @@ -4530,6 +4536,7 @@ D937037121490C3800D93077 /* KycForm2ModuleInterface.swift in Sources */, D946719521426DFB003924DB /* LoginModuleInterface.swift in Sources */, D96BD1262164875800DFE7D8 /* WalletStatementTableViewCell.swift in Sources */, + 04DC27EC21A51E29003714F5 /* AutoRefund.swift in Sources */, D96BD11A216479E200DFE7D8 /* WalletStatementPresenter.swift in Sources */, A255A907206A14220002905D /* SSBadgeButton.swift in Sources */, D922D9232134DCF000D43053 /* EditReciepientWireframe.swift in Sources */, @@ -4627,6 +4634,7 @@ D922D98D21351AAE00D43053 /* SendMoneyExchangeRateViewInterface.swift in Sources */, 9F2E45A2204E8A3F00D0B28C /* CalendarViewController.swift in Sources */, D90A9D66213696E400A96E45 /* BankPickerViewController.swift in Sources */, + 04DC27EE21A51E83003714F5 /* autoRefundService.swift in Sources */, 0428DC6A204910F9008355D7 /* WalletTransactionListViewController.swift in Sources */, 049E61A51FF0AE9D00817C76 /* UrlManager.swift in Sources */, D9AFE856215C7166005F3A25 /* HomeCollectionTableViewCell.swift in Sources */, diff --git a/GMERemittance/AppDelegate.swift b/GMERemittance/AppDelegate.swift index c68a705a..0973d48f 100644 --- a/GMERemittance/AppDelegate.swift +++ b/GMERemittance/AppDelegate.swift @@ -19,7 +19,7 @@ import AlamofireNetworkActivityLogger import IQKeyboardManagerSwift import LGSideMenuController -let server: Server = .live +let server: Server = .stagging @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate { diff --git a/GMERemittance/Model/AutoRefund.swift b/GMERemittance/Model/AutoRefund.swift new file mode 100644 index 00000000..c505b253 --- /dev/null +++ b/GMERemittance/Model/AutoRefund.swift @@ -0,0 +1,47 @@ +// +// AutoRefund.swift +// GME Remit +// +// Created by Mac on 11/21/18. +// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. +// + +import Foundation +import ObjectMapper + +class AutoRefund: Mappable { + var currentBalance: String? + var minAmount: String? + var chargeAmount: String? + + required init?(map: Map) { + + } + + func mapping(map: Map) { + chargeAmount <- map["RefundCharge"] + minAmount <- map["MinimumAmount"] + currentBalance <- map["CurrentBalance"] + } +} + + + + +class AutoRefundContainer: Mappable { + var errorCode: String? + var message: String? + var id: String? + var data: AutoRefund? + + required init?(map: Map) { + + } + + func mapping(map: Map) { + errorCode <- map["ErrorCode"] + message <- map["Msg"] + id <- map["Id"] + data <- map["Data"] + } +} diff --git a/GMERemittance/Module/Auto refund/AutoRefundsViewController.swift b/GMERemittance/Module/Auto refund/AutoRefundsViewController.swift index 926a184b..de01de96 100644 --- a/GMERemittance/Module/Auto refund/AutoRefundsViewController.swift +++ b/GMERemittance/Module/Auto refund/AutoRefundsViewController.swift @@ -12,6 +12,19 @@ class AutoRefundsViewController: UIViewController { @IBOutlet weak var backgroundView: UIView! @IBOutlet weak var countryBackgroundView: UIView! + @IBOutlet weak var availableBalanceLabel: UILabel! + @IBOutlet weak var refundChargeLabel: UILabel! + @IBOutlet weak var amountTextfield: UITextField! + + var autorefund: AutoRefund? { + didSet { + let availableBalance = (autorefund?.currentBalance ?? "0") + "(KRW)" + let refundCharge = (autorefund?.minAmount ?? "10,000") + "(KRW)" + self.availableBalanceLabel.text = availableBalance + self.refundChargeLabel.text = refundCharge + } + } + override func viewDidLoad() { super.viewDidLoad() setup() @@ -30,80 +43,64 @@ class AutoRefundsViewController: UIViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationItem.title = "Auto Refund " + fetchInfo() } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ - -} - - -import Alamofire - - -protocol FetchAutoRefundInfo: ApiServiceType { - func fetchAutoRefundInfo(username: String?, success: @escaping (AutoRefund) -> (), failure: @escaping (Error) -> ()) -} - - -extension FetchAutoRefundInfo { - func fetchAutoRefundInfo(username: String?, success: @escaping (AutoRefund) -> (), failure: @escaping (Error) -> ()) { - let url = baseUrl + "refund/\(username)" - auth.request(method: .post, url: url, params: nil, encoding: URLEncoding.default, success: { (response: AutoRefundContainer) in - if let model = response.data { - success(model) - }else { - let error = NSError.init(domain: "FetchAutoRefundInfo", code: 0, userInfo: [NSLocalizedDescriptionKey : "Could not parse json"]) - } + + private func fetchInfo() { + self.showProgressHud() + let username = Utility.getMyUserName() ?? "" + self.fetchAutoRefundInfo(username: username, success: { (autorefund) in + + self.autorefund = autorefund + self.hideProgressHud() }) { (error) in - failure(error) + self.hideProgressHud() + self.show(error: error.localizedDescription) } } -} - - -import ObjectMapper - -class AutoRefund: Mappable { - var username: String? - var amount: String? - var chargeAmount: String? - required init?(map: Map) { + @IBAction func refund(_ sender: Any) { + let amount = self.amountTextfield.text! + let minAmnt = self.autorefund?.minAmount ?? "0" + if amount.isEmpty {self.show(error: "add refund amount"); return} + if !isValidRefundable(amount: amount) { + self.show(error: "refund amount should be greator than \(minAmnt) KRW") + return + } + let chargeAmt = self.autorefund?.chargeAmount ?? "" + let userName = Utility.getMyUserName() + let id = Utility.getMyId() + + self.showProgressHud() + self.refund(amount: amount, userName: userName, chargeAmount: chargeAmt, userId: id, success: { (message) in + self.hideProgressHud() + print(message) + }) { (error) in + self.hideProgressHud() + self.show(error: error.localizedDescription) + } + + } + + private func isValidRefundable(amount: String) -> Bool { + let minRefundAmount = self.autorefund?.minAmount ?? "0" + guard let amt = Double(amount), let minRefundAmt = Double(minRefundAmount) else {return false} + let result = amt >= minRefundAmt + return result } - func mapping(map: Map) { - username <- map["Username"] - amount <- map["Amount"] - chargeAmount <- map["ChargeAmount"] + func show(error: String) { + self.alert(message: error) } } - - -class AutoRefundContainer: Mappable { - var errorCode: String? - var message: String? - var id: String? - var data: AutoRefund? +extension AutoRefundsViewController: FetchAutoRefundInfo { - required init?(map: Map) { - - } +} + +extension AutoRefundsViewController: RefundService { - func mapping(map: Map) { - errorCode <- map["ErrorCode"] - message <- map["Msg"] - id <- map["Id"] - data <- map["Data"] - } } + diff --git a/GMERemittance/Module/Auto refund/autoRefund.storyboard b/GMERemittance/Module/Auto refund/autoRefund.storyboard index e2d2f62c..3cdc4f8a 100644 --- a/GMERemittance/Module/Auto refund/autoRefund.storyboard +++ b/GMERemittance/Module/Auto refund/autoRefund.storyboard @@ -51,6 +51,9 @@ + + + @@ -229,8 +232,11 @@ + + + diff --git a/GMERemittance/Module/Auto refund/autoRefundService.swift b/GMERemittance/Module/Auto refund/autoRefundService.swift new file mode 100644 index 00000000..1d200ec3 --- /dev/null +++ b/GMERemittance/Module/Auto refund/autoRefundService.swift @@ -0,0 +1,68 @@ +// +// autoRefundService.swift +// GME Remit +// +// Created by Mac on 11/21/18. +// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. +// + +import Foundation + + +import Alamofire + + +protocol FetchAutoRefundInfo: ApiServiceType { + func fetchAutoRefundInfo(username: String, success: @escaping (AutoRefund) -> (), failure: @escaping (Error) -> ()) +} + + +extension FetchAutoRefundInfo { + func fetchAutoRefundInfo(username: String, success: @escaping (AutoRefund) -> (), failure: @escaping (Error) -> ()) { + let url = baseUrl + "refund/\(username)" + auth.request(method: .get, url: url, params: nil, encoding: URLEncoding.default, success: { (response: AutoRefundContainer) in + if let model = response.data { + success(model) + }else { + let error = NSError.init(domain: "FetchAutoRefundInfo", code: 0, userInfo: [NSLocalizedDescriptionKey : "Could not parse json"]) + } + }) { (error) in + failure(error) + } + } +} + + +protocol RefundService: ApiServiceType { + func refund(amount: String, userName: String, chargeAmount: String, userId: String, success: @escaping (String) -> (), failure: @escaping (Error) -> ()) +} + +extension RefundService { + func refund(amount: String, userName: String, chargeAmount: String, userId: String, success: @escaping (String) -> (), failure: @escaping (Error) -> ()) { + let url = baseUrl + "refund/proceed" + let params = [ + "Username": userName, + "Amount": amount, + "ChargeAmount": chargeAmount, + "UserId": userId + ] + auth.request(method: .post, url: url, params: params, success: { (response: SuccessMessageContainer) in + if (response.errorCode ?? "") == "1" { + let error = NSError.init(domain: "Network", code: 0, userInfo: [NSLocalizedDescriptionKey : response.message ?? ""]) + failure(error) + }else { + success(response.data?.message ?? "") + } + }) { (error) in + failure(error) + } + } +} + + +//{ +// "Username":"demo.gme@gmeremit.com", +// "Amount":"11000", +// "ChargeAmount":"1000", +// "UserId":"39442" +//} diff --git a/GMERemittance/Utility/AppConstants.swift b/GMERemittance/Utility/AppConstants.swift index da6ce138..2dc5f354 100644 --- a/GMERemittance/Utility/AppConstants.swift +++ b/GMERemittance/Utility/AppConstants.swift @@ -70,6 +70,12 @@ class Utility { return myUsername } + static func getMyId() -> String { + let defaults = UserDefaults.standard + let myId = defaults.string(forKey: UserKeys.senderId) ?? "" + return myId + } + static func isValidEmail(email: String) -> Bool { let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}" let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegex) diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist index 30ca7e8b..e9edbbb7 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist @@ -17,7 +17,7 @@ AlamofireNetworkActivityLogger.xcscheme orderHint - 8 + 9 BRYXBanner.xcscheme