From 6735514e52ef64a88bec557de90aca1701e61884 Mon Sep 17 00:00:00 2001 From: Dibya Malla Date: Thu, 8 Oct 2020 10:56:52 +0545 Subject: [PATCH] notice updated --- GME Remit.xcodeproj/project.pbxproj | 12 +- GME Remit/Extensions/UIView+Ext.swift | 36 + .../Models/Response/NotificationFetch.swift | 51 + .../Cell/HomeCollectionTableViewCell.swift | 2 +- .../View/HomeViewController.swift | 4 +- .../Model/DetailNoticeModel.swift | 2 +- .../View/DetailNotification.storyboard | 8 +- .../Service/NotificationHistoryService.swift | 4 +- .../NotificationHistoryPresenter.swift | 135 +-- .../View/NotificationHistory.storyboard | 4 +- .../NotificationHistoryWireframe.swift | 62 +- .../NotificationHistoryWireframeInput.swift | 8 +- GME Remit/Modules/Profile/Profile.storyboard | 2 +- .../View/ExistingUserKyc.storyboard | 2 +- .../View/ExistingUserKycViewController.swift | 28 +- .../View/KYCVerifyStep1.storyboard | 2 +- .../View/KYCVerifyStep1ViewController.swift | 24 +- .../Wireframe/NewRegisterWireframe.swift | 4 +- .../View/SendMoneyExchangeRate.storyboard | 1 + .../SendMoneyExchangeRateViewController.swift | 10 +- .../View/SendMoneyParent.storyboard | 10 +- .../View/SendMoneyReceiptViewController.swift | 531 ++++----- .../Wireframe/SendMoneyReceiptWireframe.swift | 150 +-- .../View/SendMoneyVerification.storyboard | 1030 +++++++++-------- .../SendMoneyVerificationViewController.swift | 5 +- .../ic_notice.imageset/Contents.json | 12 + .../ic_notice.imageset/Notice.pdf | 157 +++ .../Utilities/CustomUI/GradientView.swift | 20 + 28 files changed, 1341 insertions(+), 975 deletions(-) create mode 100644 GME Remit/Models/Response/NotificationFetch.swift create mode 100644 GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Contents.json create mode 100644 GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf create mode 100644 GME Remit/Utilities/CustomUI/GradientView.swift diff --git a/GME Remit.xcodeproj/project.pbxproj b/GME Remit.xcodeproj/project.pbxproj index 815d9d56..39fc99fc 100644 --- a/GME Remit.xcodeproj/project.pbxproj +++ b/GME Remit.xcodeproj/project.pbxproj @@ -55,6 +55,7 @@ 405718F324D93EB40022CDDE /* VerifyIDNumberViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E824D93EB40022CDDE /* VerifyIDNumberViewController.swift */; }; 405718F424D93EB40022CDDE /* VerifyIDNumberViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */; }; 405718F524D93EB40022CDDE /* VerifyIDNumber.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 405718EA24D93EB40022CDDE /* VerifyIDNumber.storyboard */; }; + 405E708D252BE2E50018F708 /* NotificationFetch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405E708C252BE2E50018F708 /* NotificationFetch.swift */; }; 4060B97224DBBA0300E90F8C /* KYCVerifyStep1Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96124DBBA0200E90F8C /* KYCVerifyStep1Service.swift */; }; 4060B97324DBBA0300E90F8C /* KYCVerifyStep1ServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */; }; 4060B97424DBBA0300E90F8C /* KYCVerifyStep1Interactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96424DBBA0200E90F8C /* KYCVerifyStep1Interactor.swift */; }; @@ -68,6 +69,7 @@ 4060B98124DBD22C00E90F8C /* PersonalInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B98024DBD22C00E90F8C /* PersonalInfoModel.swift */; }; 406F2D8124DBE28400EF31FB /* PictureInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */; }; 406F2D8324DBE43400EF31FB /* KYCSaveInformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406F2D8224DBE43400EF31FB /* KYCSaveInformation.swift */; }; + 4073BA9225295F5B0043258E /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4073BA9125295F5B0043258E /* GradientView.swift */; }; 4099AF0125235C45003FA012 /* CircleBorderedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4099AF0025235C45003FA012 /* CircleBorderedView.swift */; }; 40AE56352512DD8A00412B87 /* ChangePinAndPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */; }; 40B33AA324CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B33A9024CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift */; }; @@ -770,6 +772,7 @@ 405718E824D93EB40022CDDE /* VerifyIDNumberViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyIDNumberViewController.swift; sourceTree = ""; }; 405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyIDNumberViewInterface.swift; sourceTree = ""; }; 405718EA24D93EB40022CDDE /* VerifyIDNumber.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = VerifyIDNumber.storyboard; sourceTree = ""; }; + 405E708C252BE2E50018F708 /* NotificationFetch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationFetch.swift; sourceTree = ""; }; 4060B96124DBBA0200E90F8C /* KYCVerifyStep1Service.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Service.swift; sourceTree = ""; }; 4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1ServiceType.swift; sourceTree = ""; }; 4060B96424DBBA0200E90F8C /* KYCVerifyStep1Interactor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Interactor.swift; sourceTree = ""; }; @@ -783,6 +786,7 @@ 4060B98024DBD22C00E90F8C /* PersonalInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersonalInfoModel.swift; sourceTree = ""; }; 406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PictureInfoModel.swift; sourceTree = ""; }; 406F2D8224DBE43400EF31FB /* KYCSaveInformation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KYCSaveInformation.swift; sourceTree = ""; }; + 4073BA9125295F5B0043258E /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = ""; }; 4099AF0025235C45003FA012 /* CircleBorderedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleBorderedView.swift; sourceTree = ""; }; 40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangePinAndPasswordViewController.swift; sourceTree = ""; }; 40B33A9024CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExistingUserRegistrationModuleInterface.swift; sourceTree = ""; }; @@ -2688,6 +2692,7 @@ 733A3BA3235557E600E6B87E /* CreditCardView */, 7384B27F22CB375400DD04D9 /* GMEAlert */, 4099AF0025235C45003FA012 /* CircleBorderedView.swift */, + 4073BA9125295F5B0043258E /* GradientView.swift */, ); path = CustomUI; sourceTree = ""; @@ -3207,6 +3212,7 @@ 7318532C230EACA300BA9AE3 /* SendMoneyDistrictViewModel.swift */, 7318532D230EACA300BA9AE3 /* SendMoneyProvinceViewModel.swift */, 7367FF5D237401860005F644 /* PushNotificationParam.swift */, + 405E708C252BE2E50018F708 /* NotificationFetch.swift */, ); path = Response; sourceTree = ""; @@ -6856,6 +6862,7 @@ 89EA0D7E243EC1C5003ACCC8 /* PersonalInformationViewInterface.swift in Sources */, 73210DAA22FBE73100715D6C /* RecipientsViewModelInterface.swift in Sources */, 40B33AA324CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift in Sources */, + 405E708D252BE2E50018F708 /* NotificationFetch.swift in Sources */, 40218EFD24D2B1950047FBF5 /* UserRegistrationWireframeInput.swift in Sources */, 7E692A5224AF091600F10D62 /* MobileVerificationPresenter.swift in Sources */, 73157B9D22DC1EEC009B836F /* PopupNotificationService.swift in Sources */, @@ -7175,6 +7182,7 @@ 7E692A7024AF190B00F10D62 /* OTPSubmitServiceType.swift in Sources */, D92B80272140C3CB00A25B26 /* MainServiceType.swift in Sources */, 7318534F230EACA400BA9AE3 /* SendMoneyRelationViewModel.swift in Sources */, + 4073BA9225295F5B0043258E /* GradientView.swift in Sources */, 73FBBF3423F243FA009D7627 /* NoticeModel.swift in Sources */, 4060B97A24DBBA0300E90F8C /* KYCVerifyStep1ViewController.swift in Sources */, 4060B97524DBBA0300E90F8C /* KYCVerifyStep1InteractorIO.swift in Sources */, @@ -7488,7 +7496,7 @@ CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = XQRV22K6DC; ENABLE_BITCODE = NO; @@ -7527,7 +7535,7 @@ CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = XQRV22K6DC; ENABLE_BITCODE = NO; diff --git a/GME Remit/Extensions/UIView+Ext.swift b/GME Remit/Extensions/UIView+Ext.swift index 5d052180..1d61179c 100644 --- a/GME Remit/Extensions/UIView+Ext.swift +++ b/GME Remit/Extensions/UIView+Ext.swift @@ -433,4 +433,40 @@ extension Reactive where Base: UIView { } } +extension UIView{ + func addArc(path: UIBezierPath, offset: CGFloat, radius: CGFloat){ + var offsets: CGFloat = offset + path.addArc(withCenter: CGPoint(x: (offset + radius), y: self.frame.height), + radius: radius, + startAngle: CGFloat(180.0).toRadians(), + endAngle: CGFloat(0.0).toRadians(), + clockwise: true) + offsets += (15*2 + radius) + if offset < self.frame.width{ + addArc(path: path, offset: offsets, radius: radius) + } + } + + func bottomArc(){ + let path = UIBezierPath() + path.move(to: CGPoint(x: 0.0, y: 0.0)) + path.addLine(to: CGPoint(x: 0, y: self.frame.height)) + path.addLine(to: CGPoint(x: 15, y: self.frame.height)) + addArc(path: path, offset: 15.0, radius: 15) + path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height)) + path.addLine(to: CGPoint(x: self.frame.size.width, y: 0)) + path.close() + + let shapeLayer = CAShapeLayer() + shapeLayer.path = path.cgPath + self.layer.mask = shapeLayer + } + +} + +extension CGFloat { + func toRadians() -> CGFloat { + return self * CGFloat(Double.pi) / 180.0 + } +} diff --git a/GME Remit/Models/Response/NotificationFetch.swift b/GME Remit/Models/Response/NotificationFetch.swift new file mode 100644 index 00000000..9971b560 --- /dev/null +++ b/GME Remit/Models/Response/NotificationFetch.swift @@ -0,0 +1,51 @@ +// +// NotificationFetch.swift +// GME Remit +// +// Created by Shiran on 10/6/20. +// Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved. +// + +import Foundation +import ObjectMapper + +class NotificationFetch: Mappable { + var errorCode: String? + var message: String? + var id: String? + var extra: String? + var data: [ResponseData]? + + required init?(map: Map) { + + } + + func mapping(map: Map) { + errorCode <- map["ErrorCode"] + message <- map["Msg"] + id <- map["Id"] + extra <- map["Extra"] + data <- map["Data"] + } +} + +class ResponseData: Mappable { + var rowId: String? + var isRead: String? + var title: String? + var createDate: String? + var type: String? + var extra: String? + required init?(map: Map) { + + } + + func mapping(map: Map) { + rowId <- map["rowId"] + isRead <- map["isRead"] + title <- map["title"] + createDate <- map["createDate"] + type <- map["type"] + extra <- map["extra"] + } +} diff --git a/GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift b/GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift index f2e06aea..bf86270c 100644 --- a/GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift +++ b/GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift @@ -118,7 +118,7 @@ class HomeCollectionTableViewCell: UITableViewCell, UICollectionViewDelegateFlow let noticeMenu = HomeCollectionModel() noticeMenu.index = 6 noticeMenu.title = "Notice" - noticeMenu.icon = UIImage.init(named: "jme_wallet") + noticeMenu.icon = UIImage.init(named: "ic_notice") // FIXME: Check Menues. diff --git a/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift b/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift index bb2076a0..715f610e 100644 --- a/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift +++ b/GME Remit/Modules/Home/User Interface/View/HomeViewController.swift @@ -139,7 +139,7 @@ class HomeViewController: UIViewController { return scrollView }() - private func addDimView(){ + private func addDimView() { self.bgView.tag = 999 self.tabBarController?.view.addSubview(self.bgView) self.bgView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true @@ -153,7 +153,7 @@ class HomeViewController: UIViewController { } } - private func removeDimView(){ + private func removeDimView() { if let views = self.tabBarController?.view.subviews{ for each in views{ if each.tag == 999{ diff --git a/GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift b/GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift index 847a37bc..b59a3434 100644 --- a/GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift +++ b/GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift @@ -22,6 +22,6 @@ struct DetailNoticeModel: Mappable { title <- map["title"] body <- map["body"] date <- map["createDate"] - imageURL <- map["url"] + imageURL <- map["imageURL"] } } diff --git a/GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard b/GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard index 88120480..850d385b 100644 --- a/GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard +++ b/GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard @@ -1,5 +1,5 @@ - + @@ -20,7 +20,7 @@ - + @@ -176,10 +176,10 @@ - + - + diff --git a/GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift b/GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift index 03812a3f..1343d322 100644 --- a/GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift +++ b/GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift @@ -13,7 +13,9 @@ class NotificationHistoryService: NotificationHistoryServiceType { success: @escaping ([NoticeModel]) -> Void, failure: @escaping (Error) -> Void ) { - APIRouter.getNotifyInfo.json(success: success, failure: failure) + APIRouter + .getNotifyInfo + .json(success: success, failure: failure) } } diff --git a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift index 02dc78cc..c3a405e1 100644 --- a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift +++ b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift @@ -10,78 +10,83 @@ import RxSwift import RxCocoa class NotificationHistoryPresenter: ViewModelType { - var interactor: NotificationHistoryInteractorInput? - var wireframe: NotificationHistoryWireframeInput? - - struct Input { - let viewWillAppear: Driver - let selectNoticeIndex: Driver - } - - struct Output { - let isError: Driver - let isProgress: Driver - let models: Driver<[NoticeModel]> - } - - private let disposeBag = DisposeBag() - - private let progressLinker = PublishSubject() - private let errorLinker = PublishSubject() - - private let model = PublishSubject<[NoticeModel]>() - - func transform(input: Input) -> Output { + var interactor: NotificationHistoryInteractorInput? + var wireframe: NotificationHistoryWireframeInput? - input.viewWillAppear.drive(onNext: {[weak self] in - self?.progressLinker.onNext(true) - self?.interactor?.fetchNotices() - }).disposed(by: disposeBag) + struct Input { + let viewWillAppear: Driver + let selectNoticeIndex: Driver + } - input.selectNoticeIndex - .withLatestFrom(model.asDriverOnErrorJustComplete()) { (indexPath, notices) -> NoticeModel in - return notices[indexPath] + struct Output { + let isError: Driver + let isProgress: Driver + let models: Driver<[NoticeModel]> } - .drive(onNext: {[weak self] in - self?.wireframe?.detail(index: $0.key ?? "") - }).disposed(by: disposeBag) - return Output( - isError: errorLinker.asDriverOnErrorJustComplete(), - isProgress: progressLinker.asDriverOnErrorJustComplete(), - models: model.asDriverOnErrorJustComplete() - ) - } + private let disposeBag = DisposeBag() + + private let progressLinker = PublishSubject() + private let errorLinker = PublishSubject() + + private let model = PublishSubject<[NoticeModel]>() + + func transform(input: Input) -> Output { + + input.viewWillAppear.drive(onNext: {[weak self] in + self?.progressLinker.onNext(true) + self?.interactor?.fetchNotices() + }).disposed(by: disposeBag) + + input.selectNoticeIndex + .withLatestFrom(model.asDriverOnErrorJustComplete()) { (indexPath, notices) -> NoticeModel in + return notices[indexPath] + } + .drive(onNext: {[weak self] in + if $0.type == "0" { + self?.wireframe?.detail(index: $0.key ?? "") + } else { + self?.wireframe?.openReceipt(transactionId: $0.extra ?? "", shouldShowCancelAmmendButton: true, control: "1111111") + } + + }).disposed(by: disposeBag) + + return Output( + isError: errorLinker.asDriverOnErrorJustComplete(), + isProgress: progressLinker.asDriverOnErrorJustComplete(), + models: model.asDriverOnErrorJustComplete() + ) + } } // MARK: NotificationHistory interactor output interface extension NotificationHistoryPresenter: NotificationHistoryInteractorOutput { - func setNotices(with model: [NoticeModel]) { - progressLinker.onNext(false) - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "MM/dd/yyyy HH:mm" - - let dates = model.compactMap { dateFormatter.date(from: $0.date ?? "") } - - let sortedDates = dates.sorted { $0 > $1 } - - print("123123123 \(sortedDates)") - - let dateStrings = sortedDates.compactMap { dateFormatter.string(from: $0)} - - print("123123123 \(dateStrings)") - - let filteredDate = model.sorted(by: { (noticeModel1, noticeModel2) -> Bool in - guard let date1 = noticeModel1.date else { return true } - guard let date2 = noticeModel2.date else { return false } - return date1 > date2 - }) + func setNotices(with model: [NoticeModel]) { + progressLinker.onNext(false) + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "MM/dd/yyyy HH:mm" + + let dates = model.compactMap { dateFormatter.date(from: $0.date ?? "") } + + let sortedDates = dates.sorted { $0 > $1 } + + print("123123123 \(sortedDates)") + + let dateStrings = sortedDates.compactMap { dateFormatter.string(from: $0)} + + print("123123123 \(dateStrings)") + + let filteredDate = model.sorted(by: { (noticeModel1, noticeModel2) -> Bool in + guard let date1 = noticeModel1.date else { return true } + guard let date2 = noticeModel2.date else { return false } + return date1 > date2 + }) + + self.model.onNext(filteredDate) + } - self.model.onNext(filteredDate) - } - - func setError(with error: Error) { - progressLinker.onNext(false) - errorLinker.onNext(error) - } + func setError(with error: Error) { + progressLinker.onNext(false) + errorLinker.onNext(error) + } } diff --git a/GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard b/GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard index c3052c41..e3c8d4ec 100644 --- a/GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard +++ b/GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard @@ -169,10 +169,10 @@ - + - + diff --git a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift index 6547b30b..3139d644 100644 --- a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift +++ b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift @@ -9,36 +9,46 @@ import UIKit class NotificationHistoryWireframe { - weak var view: UIViewController! + weak var view: UIViewController! } extension NotificationHistoryWireframe: NotificationHistoryWireframeInput { - - var storyboardName: String {return "NotificationHistory"} - - func getMainView() -> UIViewController { - let service = NotificationHistoryService() - let interactor = NotificationHistoryInteractor(service: service) - let presenter = NotificationHistoryPresenter() - let viewController = viewControllerFromStoryboard(of: NotificationHistoryViewController.self) + var storyboardName: String {return "NotificationHistory"} - viewController.presenter = presenter - interactor.output = presenter - presenter.interactor = interactor - presenter.wireframe = self + func getMainView() -> UIViewController { + let service = NotificationHistoryService() + let interactor = NotificationHistoryInteractor(service: service) + let presenter = NotificationHistoryPresenter() + let viewController = viewControllerFromStoryboard(of: NotificationHistoryViewController.self) + + viewController.presenter = presenter + interactor.output = presenter + presenter.interactor = interactor + presenter.wireframe = self + + view = viewController + return viewController + } - view = viewController - return viewController - } - - func detail(index: String) { - DetailNotificationWireframe().push(with: index, at: view) - } - - func open(on viewController: UIViewController?) { - let vc = getMainView() - let naviVC = UINavigationController(rootViewController: vc) + func openReceipt(transactionId: String, shouldShowCancelAmmendButton: Bool, control: String) { + if let navigation = self.view.navigationController { + SendMoneyReceiptWireframe().openReceiptFromNotice( + controlNo: control, + transactionId: transactionId, + shouldShowCancelAmmendButton: shouldShowCancelAmmendButton, + source: navigation + ) + } + } - viewController?.present(naviVC, animated: true) - } + func detail(index: String) { + DetailNotificationWireframe().push(with: index, at: view) + } + + func open(on viewController: UIViewController?) { + let vc = getMainView() + let naviVC = UINavigationController(rootViewController: vc) + + viewController?.present(naviVC, animated: true) + } } diff --git a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift index ca382d56..2d84460a 100644 --- a/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift +++ b/GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift @@ -9,5 +9,11 @@ import Foundation protocol NotificationHistoryWireframeInput: WireframeInput { - func detail(index: String) + func detail(index: String) + + func openReceipt( + transactionId: String, + shouldShowCancelAmmendButton: Bool, + control: String + ) } diff --git a/GME Remit/Modules/Profile/Profile.storyboard b/GME Remit/Modules/Profile/Profile.storyboard index 1afcaa06..343ec50b 100644 --- a/GME Remit/Modules/Profile/Profile.storyboard +++ b/GME Remit/Modules/Profile/Profile.storyboard @@ -1148,7 +1148,7 @@ - + diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard b/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard index 38f9afb5..5aa14035 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard @@ -735,7 +735,7 @@ - + diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift index f0020880..89458526 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift @@ -185,17 +185,9 @@ class ExistingUserKycViewController: UIViewController { pictureSaveBttn.layer.cornerRadius = 5 frontIdButton.layer.cornerRadius = 5 - frontIdButton.layer.borderWidth = 1 - frontIdButton.layer.borderColor = UIColor.themeText.cgColor - backIdButton.layer.cornerRadius = 5 - backIdButton.layer.borderWidth = 1 - backIdButton.layer.borderColor = UIColor.themeText.cgColor - sideIdButton.layer.cornerRadius = 5 - sideIdButton.layer.borderWidth = 1 - sideIdButton.layer.borderColor = UIColor.themeText.cgColor - + frontIDContainer.layer.cornerRadius = 12 frontIDContainer.layer.borderWidth = 1 frontIDContainer.layer.borderColor = UIColor.themeSeparate.cgColor @@ -241,20 +233,20 @@ class ExistingUserKycViewController: UIViewController { private func setUIBinding() { frontIdButton.rx.tap.bind {[weak self] in self?.photoType = .frontID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) backIdButton.rx.tap.bind {[weak self] in self?.photoType = .backID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) sideIdButton.rx.tap.bind {[weak self] in self?.photoType = .sideID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) frontIDImageTrigger @@ -286,7 +278,7 @@ class ExistingUserKycViewController: UIViewController { } } else { self?.frontImageBase64.onNext(nil) - self?.frontIdButton.setImage(UIImage(named: "ic_passport_picture"), for: .normal) + self?.frontIdButton.setImage(UIImage(named: "passport_new"), for: .normal) } }).disposed(by: disposeBag) @@ -320,7 +312,7 @@ class ExistingUserKycViewController: UIViewController { } } else { self?.backIDImageBase64.onNext(nil) - self?.backIdButton.setImage(UIImage(named: "ic_passport_picture"), for: .normal) + self?.backIdButton.setImage(UIImage(named: "passport_new"), for: .normal) } }).disposed(by: disposeBag) @@ -354,7 +346,7 @@ class ExistingUserKycViewController: UIViewController { } } else { self?.sideIDImageBase64.onNext(nil) - self?.sideIdButton.setImage(UIImage(named: "ic_passport_picture"), for: .normal) + self?.sideIdButton.setImage(UIImage(named: "passport_new"), for: .normal) } }).disposed(by: disposeBag) diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard b/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard index 0816a761..791cdd27 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard @@ -1108,7 +1108,7 @@ - + diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift index e1c81a73..8cbd1388 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift @@ -271,38 +271,38 @@ extension KYCVerifyStep1ViewController { frontIDImageButton.rx.tap.bind {[weak self] in self?.photoType = .frontID - // self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) anotherIDImageButton.rx.tap.bind {[weak self] in self?.photoType = .anotherID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) anotherIDBackImageButton.rx.tap.bind {[weak self] in self?.photoType = .anotherIdBack -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) backIDImageButton.rx.tap.bind {[weak self] in self?.photoType = .backID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) sideIDImageButton.rx.tap.bind {[weak self] in self?.photoType = .sideID -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) facePictureImageButton.rx.tap.bind {[weak self] in self?.photoType = .facePicture -// self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) - self?.multiMediaManager?.openCameraPicker() + self?.multiMediaManager?.openPicker(mode: UIImagePickerController.CameraCaptureMode.photo) +// self?.multiMediaManager?.openCameraPicker() }.disposed(by: disposeBag) frontIDImageTrigger diff --git a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift index ad98e4c6..2b4bf9df 100644 --- a/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift +++ b/GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift @@ -30,7 +30,7 @@ extension NewRegisterWireframe: NewRegisterWireframeInput { if selectedWireframe == "ExistingUser" { step1VC = ExistingUserKycWireframe().getMainView(with: self, step: .first) step2VC = ExistingUserKycWireframe().getMainView(with: self, step: .upload) - }else { + } else { step1VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .first) step2VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .upload) } @@ -197,7 +197,7 @@ extension NewRegisterWireframe: NewRegisterWireframeInput { } func selectedView(in source: UINavigationController, viewName: String) { - selectedWireframe = viewName + selectedWireframe = viewName let mainView = self.getMainView() source.pushViewController(mainView, animated: true) } diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard index 1dec5c85..d6a380ab 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard @@ -506,6 +506,7 @@ + diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift index b6f0172c..8e570e50 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift @@ -58,7 +58,15 @@ class SendMoneyExchangeRateViewController: UIViewController { @IBOutlet weak var calculatedInfoView: UIView! @IBOutlet weak var serviceChargeView: UIStackView! @IBOutlet weak var exchangeRateView: UIStackView! - + @IBOutlet weak var backgroundView: UIView!{ + didSet{ + backgroundView.layer.cornerRadius = 12 + backgroundView.layer.borderWidth = 0.3 + backgroundView.layer.borderColor = UIColor.themeText.cgColor + backgroundView.layer.addShadow(with: UIColor.themeText) + } + } + @IBOutlet weak var couponListFetch: UIView! @IBOutlet weak var couponListShow: UIStackView! diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard index be438d7d..c11243f7 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard @@ -106,19 +106,19 @@ - + - + - - + + @@ -144,7 +144,7 @@ - + diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift index 3af6d022..6dec5d78 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift @@ -10,294 +10,299 @@ import UIKit import Kingfisher enum MailBoxType { - case cancel - case edit + case cancel + case edit } enum ReceiptType { - case overseas + case overseas } class SendMoneyReceiptViewController: UIViewController { - - // MARK: IBOutlets - - struct StringConstants { - let transferSuccessText = "transfer_success_text".localized() - let transactionDateText = "transaction_date_text".localized() - let recieverText = "receiver_text".localized() - let addressText = "email_address_text".localized() - let mobileNoText = "mobile_number_text".localized() - let payoutAgentText = "payout_agent_text".localized() - let totalSentAmountText = "total_sent_amount_text".localized() - let branchText = "branch_text".localized() - let accountNumberText = "account_number_text".localized() - let totalPayoutAmountText = "total_payout_amount_text".localized() - let serviceFeeText = "service_fee_text".localized() - let exRateText = "ex_rate_text".localized() - let payoutAmountText = "total_amount_text".localized() - let gmeControlNumberText = "gme_control_no_text".localized() - let doneText = "done_text".localized() - } - - @IBOutlet weak var fullnameLabel: UILabel! - @IBOutlet weak var transactionDateLabel: UILabel! - - @IBOutlet weak var exchangeRateLabel: UILabel! - @IBOutlet weak var relationLabel: UILabel! - @IBOutlet weak var addressLabel: UILabel! - @IBOutlet weak var mobileNoLabel: UILabel! - @IBOutlet weak var recieverNameLabelLabel: UILabel! - @IBOutlet weak var agentBankLabel: UILabel! - @IBOutlet weak var branchLabel: UILabel! - @IBOutlet weak var accountNoLabel: UILabel! - @IBOutlet weak var transferFeeLabel: UILabel! - @IBOutlet weak var totalAmountLabel: UILabel! - @IBOutlet weak var gmeControlNumberLabel: UILabel! - @IBOutlet weak var totalAmountHeaderLabel: UILabel! - @IBOutlet weak var doneButton: UIButton! - @IBOutlet weak var requestToChangeButton: UIButton! - @IBOutlet weak var requestToCancelButton: UIButton! - @IBOutlet weak var transactionReportButtonStackView: UIStackView! - - @IBOutlet weak var accountNoView: UIView! - @IBOutlet weak var branchView: UIView! - - // title labels - @IBOutlet weak var transferSuccessfullTitleLabel: UILabel! - @IBOutlet weak var moneygramImageView: UIImageView! - @IBOutlet weak var moneygramLogoLabel: UILabel! - @IBOutlet weak var warningLabel: UILabel! - @IBOutlet weak var moneygramStackView: UIStackView! - - // Body labels - @IBOutlet weak var tansactionDateTitleLabel: UILabel! - @IBOutlet weak var recieverTitleLabel: UILabel! - @IBOutlet weak var addressTitleLabel: UILabel! - @IBOutlet weak var mobileTitleLabel: UILabel! - @IBOutlet weak var payoutAgentTitleLabel: UILabel! - @IBOutlet weak var sentAmountTitleLabel: UILabel! - @IBOutlet weak var branchTitleLabel: UILabel! - @IBOutlet weak var accountNumberTitleLabel: UILabel! - @IBOutlet weak var serviceTitleLabel: UILabel! - @IBOutlet weak var exRateTitleLabel: UILabel! - @IBOutlet weak var totalPayoutAmountTitleLabel: UILabel! - - - @IBOutlet private weak var transactionDateContainerView: UIView! - @IBOutlet private weak var receiverNameContainerView: UIView! - @IBOutlet private weak var addressContainerView: UIView! - @IBOutlet private weak var mobileContainerView: UIView! - @IBOutlet private weak var bankContainerView: UIView! - @IBOutlet private weak var totalSentAmountContainerView: UIView! - @IBOutlet private weak var serviceFeeContainerView: UIView! - @IBOutlet private weak var exchangeRateContainerView: UIView! - @IBOutlet private weak var totalPayoutAmountContainerView: UIView! - - // MARK: Properties - - var presenter: SendMoneyReceiptModuleInterface? - weak var hudDelegate: HUDStatusDelegate? - var shouldShowCancelAmmendButton = false - var isFromTransactionHistory = false - var controlNo: String? - var transactionId: String? - var type: MailBoxType? - - var receiptType: ReceiptType = .overseas - - var reciept: SendMoneyReciept? { - didSet { - self.showRecipt() + + // MARK: IBOutlets + + struct StringConstants { + let transferSuccessText = "transfer_success_text".localized() + let transactionDateText = "transaction_date_text".localized() + let recieverText = "receiver_text".localized() + let addressText = "email_address_text".localized() + let mobileNoText = "mobile_number_text".localized() + let payoutAgentText = "payout_agent_text".localized() + let totalSentAmountText = "total_sent_amount_text".localized() + let branchText = "branch_text".localized() + let accountNumberText = "account_number_text".localized() + let totalPayoutAmountText = "total_payout_amount_text".localized() + let serviceFeeText = "service_fee_text".localized() + let exRateText = "ex_rate_text".localized() + let payoutAmountText = "total_amount_text".localized() + let gmeControlNumberText = "gme_control_no_text".localized() + let doneText = "done_text".localized() } - } - - // MARK: VC's Life cycle - - override func viewDidLoad() { - super.viewDidLoad() - self.setup() - self.presenter?.viewIsReady(type: receiptType) - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationItem.title = "Receipt" - self.setupBackButton() - switch receiptType { - case .overseas: - transactionDateContainerView.isHidden = false - receiverNameContainerView.isHidden = false - mobileContainerView.isHidden = false - bankContainerView.isHidden = false - totalSentAmountContainerView.isHidden = false - accountNoView.isHidden = false - serviceFeeContainerView.isHidden = false - - addressContainerView.isHidden = false - branchView.isHidden = false - exchangeRateContainerView.isHidden = false - totalPayoutAmountContainerView.isHidden = false + @IBOutlet weak var fullnameLabel: UILabel! + @IBOutlet weak var transactionDateLabel: UILabel! + + @IBOutlet weak var exchangeRateLabel: UILabel! + @IBOutlet weak var relationLabel: UILabel! + @IBOutlet weak var addressLabel: UILabel! + @IBOutlet weak var mobileNoLabel: UILabel! + @IBOutlet weak var recieverNameLabelLabel: UILabel! + @IBOutlet weak var agentBankLabel: UILabel! + @IBOutlet weak var branchLabel: UILabel! + @IBOutlet weak var accountNoLabel: UILabel! + @IBOutlet weak var transferFeeLabel: UILabel! + @IBOutlet weak var totalAmountLabel: UILabel! + @IBOutlet weak var gmeControlNumberLabel: UILabel! + @IBOutlet weak var totalAmountHeaderLabel: UILabel! + @IBOutlet weak var doneButton: UIButton! + @IBOutlet weak var requestToChangeButton: UIButton! + @IBOutlet weak var requestToCancelButton: UIButton! + @IBOutlet weak var transactionReportButtonStackView: UIStackView! + + @IBOutlet weak var accountNoView: UIView! + @IBOutlet weak var branchView: UIView! + + // title labels + @IBOutlet weak var transferSuccessfullTitleLabel: UILabel! + @IBOutlet weak var moneygramImageView: UIImageView! + @IBOutlet weak var moneygramLogoLabel: UILabel! + @IBOutlet weak var warningLabel: UILabel! + @IBOutlet weak var moneygramStackView: UIStackView! + + // Body labels + @IBOutlet weak var tansactionDateTitleLabel: UILabel! + @IBOutlet weak var recieverTitleLabel: UILabel! + @IBOutlet weak var addressTitleLabel: UILabel! + @IBOutlet weak var mobileTitleLabel: UILabel! + @IBOutlet weak var payoutAgentTitleLabel: UILabel! + @IBOutlet weak var sentAmountTitleLabel: UILabel! + @IBOutlet weak var branchTitleLabel: UILabel! + @IBOutlet weak var accountNumberTitleLabel: UILabel! + @IBOutlet weak var serviceTitleLabel: UILabel! + @IBOutlet weak var exRateTitleLabel: UILabel! + @IBOutlet weak var totalPayoutAmountTitleLabel: UILabel! + + @IBOutlet private weak var transactionDateContainerView: UIView! + @IBOutlet private weak var receiverNameContainerView: UIView! + @IBOutlet private weak var addressContainerView: UIView! + @IBOutlet private weak var mobileContainerView: UIView! + @IBOutlet private weak var bankContainerView: UIView! + @IBOutlet private weak var totalSentAmountContainerView: UIView! + @IBOutlet private weak var serviceFeeContainerView: UIView! + @IBOutlet private weak var exchangeRateContainerView: UIView! + @IBOutlet private weak var totalPayoutAmountContainerView: UIView! + + // MARK: Properties + + var presenter: SendMoneyReceiptModuleInterface? + weak var hudDelegate: HUDStatusDelegate? + var shouldShowCancelAmmendButton = false + var isFromTransactionHistory = false + var controlNo: String? + var transactionId: String? + var type: MailBoxType? + var isfromNotice = false + + var receiptType: ReceiptType = .overseas + + var reciept: SendMoneyReciept? { + didSet { + self.showRecipt() + } } - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationItem.title = "" - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - if !isFromTransactionHistory { - StoreReviewHelper.shared.checkAndAskForReview() + // MARK: VC's Life cycle + + override func viewDidLoad() { + super.viewDidLoad() + self.setup() + self.presenter?.viewIsReady(type: receiptType) } - } - - // MARK: IBActions - @IBAction func done(_ sender: UIButton) { - if (isFromTransactionHistory) { - self.navigationController?.popViewController(animated: true) - } else { - self.navigationController?.popToRootViewController(animated: true) + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationItem.title = "Receipt" + self.setupBackButton() + + switch receiptType { + case .overseas: + transactionDateContainerView.isHidden = false + receiverNameContainerView.isHidden = false + mobileContainerView.isHidden = false + bankContainerView.isHidden = false + totalSentAmountContainerView.isHidden = false + accountNoView.isHidden = false + serviceFeeContainerView.isHidden = false + + addressContainerView.isHidden = false + branchView.isHidden = false + exchangeRateContainerView.isHidden = false + totalPayoutAmountContainerView.isHidden = false + } } - } - // MARK: Other Functions - - @IBAction func requestToCancel(_ sender: UIButton) { - self.sendMail(type: .cancel) - } - - @IBAction func requestToChange(_ sender: UIButton) { - self.sendMail(type: .edit) - } - - func sendMail(type: MailBoxType) { - self.presenter?.openMail( - controlNO: self.controlNo ?? "", - transactionId: self.transactionId ?? "", - type: type - ) - } - - private func setup() { - // all setup should be done here - setupBackButton() - configureLanguage() - } - - func configureLanguage() { - self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText - self.tansactionDateTitleLabel.text = StringConstants().transactionDateText - self.recieverTitleLabel.text = StringConstants().recieverText - self.addressTitleLabel.text = StringConstants().addressText - self.mobileTitleLabel.text = StringConstants().mobileNoText - self.payoutAgentTitleLabel.text = StringConstants().payoutAgentText - self.totalPayoutAmountTitleLabel.text = StringConstants().totalSentAmountText - self.branchTitleLabel.text = StringConstants().branchText - self.accountNumberTitleLabel.text = StringConstants().accountNumberText - self.serviceTitleLabel.text = StringConstants().serviceFeeText - self.exRateTitleLabel.text = StringConstants().exRateText - self.totalPayoutAmountTitleLabel.text = StringConstants().payoutAmountText - self.sentAmountTitleLabel.text = StringConstants().totalSentAmountText - self.doneButton.setTitle(StringConstants().doneText, for: UIControl.State.normal) - self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControl.State.normal) - self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControl.State.normal) - } - - func setupBackButton() { - if shouldShowCancelAmmendButton { - self.navigationController?.navigationItem.hidesBackButton = false - let button = UIBarButtonItem.init( - image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItem.Style.plain, - target: self, - action: #selector(self.back) - ) - self.navigationItem.backBarButtonItem = button - self.doneButton.isHidden = true - self.transactionReportButtonStackView.isHidden = false - } else { - self.doneButton.isHidden = false - self.doneButton.backgroundColor = .themeRed - self.doneButton.layer.cornerRadius = 5 - - self.transactionReportButtonStackView.isHidden = true - self.navigationController?.navigationItem.hidesBackButton = true - let button = UIBarButtonItem.init( - title: nil, - style: UIBarButtonItem.Style.plain, - target: nil, - action: nil - ) - self.navigationItem.leftBarButtonItem = button + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationItem.title = "" } - } - - @objc private func back() { - self.presenter?.dismiss() - } - - private func showRecipt() { - let firstName = self.reciept?.rFirstName ?? "" - let lastName = self.reciept?.rLastName ?? "" - let middleName = self.reciept?.rMiddleName ?? "" - let fullName = firstName + " " + middleName + " " + lastName + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + if !isFromTransactionHistory { + StoreReviewHelper.shared.checkAndAskForReview() + } + } - self.recieverNameLabelLabel.text = fullName.uppercased() - self.fullnameLabel.text = "To: \(fullName.uppercased())" + // MARK: IBActions + @IBAction func done(_ sender: UIButton) { + if (isFromTransactionHistory) { + self.navigationController?.popViewController(animated: true) + } else { + self.navigationController?.popToRootViewController(animated: true) + } + } + // MARK: Other Functions - self.transactionDateLabel.text = reciept?.transactionDate + @IBAction func requestToCancel(_ sender: UIButton) { + self.sendMail(type: .cancel) + } - self.addressLabel.text = self.reciept?.rAddress - self.mobileNoLabel.text = self.reciept?.rContactNo ?? "N/A" - self.agentBankLabel.text = self.reciept?.agentBank - let branch = self.reciept?.payoutBankBranch ?? "" - self.branchLabel.text = branch - self.branchView.isHidden = branch == "" - let accountNo = self.reciept?.accountNo ?? "" - self.accountNoView.isHidden = accountNo == "" - self.accountNoLabel.text = self.reciept?.accountNo - self.relationLabel.text = self.reciept?.collAmount?.decimalToCurrency(as: .krw) - self.transferFeeLabel.text = self.reciept?.serviceCharge?.decimalToCurrency(as: .krw) - self.exchangeRateLabel.text = self.reciept?.exRate + @IBAction func requestToChange(_ sender: UIButton) { + self.sendMail(type: .edit) + } + + func sendMail(type: MailBoxType) { + self.presenter?.openMail( + controlNO: self.controlNo ?? "", + transactionId: self.transactionId ?? "", + type: type + ) + } + + private func setup() { + // all setup should be done here + setupBackButton() + configureLanguage() + noticeReceipt() + } - let controlNo = self.reciept?.controNo ?? "" - self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ": " + controlNo + func noticeReceipt() { + + } - let totalAmount = (receiptType == .overseas) ? (self.reciept?.payoutAmount ?? "") : - (self.reciept?.payoutAmount ?? "").decimalToCurrency(as: .krw) + func configureLanguage() { + self.transferSuccessfullTitleLabel.text = StringConstants().transferSuccessText + self.tansactionDateTitleLabel.text = StringConstants().transactionDateText + self.recieverTitleLabel.text = StringConstants().recieverText + self.addressTitleLabel.text = StringConstants().addressText + self.mobileTitleLabel.text = StringConstants().mobileNoText + self.payoutAgentTitleLabel.text = StringConstants().payoutAgentText + self.totalPayoutAmountTitleLabel.text = StringConstants().totalSentAmountText + self.branchTitleLabel.text = StringConstants().branchText + self.accountNumberTitleLabel.text = StringConstants().accountNumberText + self.serviceTitleLabel.text = StringConstants().serviceFeeText + self.exRateTitleLabel.text = StringConstants().exRateText + self.totalPayoutAmountTitleLabel.text = StringConstants().payoutAmountText + self.sentAmountTitleLabel.text = StringConstants().totalSentAmountText + self.doneButton.setTitle(StringConstants().doneText, for: UIControl.State.normal) + self.requestToCancelButton.setTitle("request_to_cancel_text".localized(), for: UIControl.State.normal) + self.requestToChangeButton.setTitle("request_to_change_text".localized(), for: UIControl.State.normal) + } - self.totalAmountLabel.text = totalAmount - self.totalAmountHeaderLabel.text = StringConstants().totalPayoutAmountText + ": \(totalAmount)" + func setupBackButton() { + if shouldShowCancelAmmendButton { + self.navigationController?.navigationItem.hidesBackButton = false + let button = UIBarButtonItem.init( + image: #imageLiteral(resourceName: "backIconBlack"), style: UIBarButtonItem.Style.plain, + target: self, + action: #selector(self.back) + ) + self.navigationItem.backBarButtonItem = button + self.doneButton.isHidden = true + self.transactionReportButtonStackView.isHidden = false + } else { + self.doneButton.isHidden = false + self.doneButton.backgroundColor = .themeRed + self.doneButton.layer.cornerRadius = 5 + + self.transactionReportButtonStackView.isHidden = true + self.navigationController?.navigationItem.hidesBackButton = true + let button = UIBarButtonItem.init( + title: nil, + style: UIBarButtonItem.Style.plain, + target: nil, + action: nil + ) + self.navigationItem.leftBarButtonItem = button + } + } + @objc private func back() { + self.presenter?.dismiss() + } - if reciept?.showPartnerLogo == "Y" { - - moneygramLogoLabel.text = reciept?.logoText - } else { - moneygramStackView.isHidden = true + private func showRecipt() { + let firstName = self.reciept?.rFirstName ?? "" + let lastName = self.reciept?.rLastName ?? "" + let middleName = self.reciept?.rMiddleName ?? "" + + let fullName = firstName + " " + middleName + " " + lastName + + self.recieverNameLabelLabel.text = fullName.uppercased() + self.fullnameLabel.text = "To: \(fullName.uppercased())" + + self.transactionDateLabel.text = reciept?.transactionDate + + self.addressLabel.text = self.reciept?.rAddress + self.mobileNoLabel.text = self.reciept?.rContactNo ?? "N/A" + self.agentBankLabel.text = self.reciept?.agentBank + let branch = self.reciept?.payoutBankBranch ?? "" + self.branchLabel.text = branch + self.branchView.isHidden = branch == "" + let accountNo = self.reciept?.accountNo ?? "" + self.accountNoView.isHidden = accountNo == "" + self.accountNoLabel.text = self.reciept?.accountNo + self.relationLabel.text = self.reciept?.collAmount?.decimalToCurrency(as: .krw) + self.transferFeeLabel.text = self.reciept?.serviceCharge?.decimalToCurrency(as: .krw) + self.exchangeRateLabel.text = self.reciept?.exRate + + let controlNo = self.reciept?.controNo ?? "" + self.gmeControlNumberLabel.text = StringConstants().gmeControlNumberText + ": " + controlNo + + let totalAmount = (receiptType == .overseas) ? (self.reciept?.payoutAmount ?? "") : + (self.reciept?.payoutAmount ?? "").decimalToCurrency(as: .krw) + + self.totalAmountLabel.text = totalAmount + self.totalAmountHeaderLabel.text = StringConstants().totalPayoutAmountText + ": \(totalAmount)" + + + if reciept?.showPartnerLogo == "Y" { + + moneygramLogoLabel.text = reciept?.logoText + } else { + moneygramStackView.isHidden = true + } + warningLabel.text = reciept?.note } - warningLabel.text = reciept?.note - } } // MARK: SendMoneyReceiptViewInterface extension SendMoneyReceiptViewController: SendMoneyReceiptViewInterface { - func showLoading() { - self.hudDelegate?.showLoading() - } - - func hideLoading() { - self.hudDelegate?.hideLoading() - } - - func show(error: String) { - self.alert(type: .error, message: error) - } - - func show(model: SendMoneyReciept) { - self.reciept = model - } + func showLoading() { + self.hudDelegate?.showLoading() + } + + func hideLoading() { + self.hudDelegate?.hideLoading() + } + + func show(error: String) { + self.alert(type: .error, message: error) + } + + func show(model: SendMoneyReciept) { + self.reciept = model + } } diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift index 310275c9..e24c6a47 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift @@ -9,81 +9,93 @@ import UIKit class SendMoneyReceiptWireframe { - weak var view: UIViewController! - var transactionId: String? - var controlNo: String? - var isFromTransactionReport = false - var shouldShowCancelAmmendButton = false - let mailboxwireFrame = MessageComposeWireframe() - - var receiptType: ReceiptType = .overseas + weak var view: UIViewController! + var transactionId: String? + var controlNo: String? + var isFromTransactionReport = false + var shouldShowCancelAmmendButton = false + let mailboxwireFrame = MessageComposeWireframe() + + var receiptType: ReceiptType = .overseas } extension SendMoneyReceiptWireframe: SendMoneyReceiptWireframeInput { - - var storyboardName: String {return "SendMoneyReceipt"} - - func getMainView() -> UIViewController { - let service = SendMoneyReceiptService() - let interactor = SendMoneyReceiptInteractor(service: service, transactionId: self.transactionId ?? "") - let presenter = SendMoneyReceiptPresenter() - let viewController = viewControllerFromStoryboard(of: SendMoneyReceiptViewController.self) - viewController.controlNo = self.controlNo // todo: refractor later - viewController.transactionId = self.transactionId // todo: refractor later - viewController.shouldShowCancelAmmendButton = self.shouldShowCancelAmmendButton - viewController.isFromTransactionHistory = self.isFromTransactionReport - viewController.receiptType = receiptType - viewController.presenter = presenter - interactor.output = presenter - presenter.interactor = interactor - presenter.wireframe = self - presenter.view = viewController - self.view = viewController - return viewController - } - - func openReciept( - type: ReceiptType = ReceiptType.overseas, - transactionId: String, - source: UINavigationController - ) { - receiptType = type - isFromTransactionReport = false + var storyboardName: String {return "SendMoneyReceipt"} + + func getMainView() -> UIViewController { + let service = SendMoneyReceiptService() + let interactor = SendMoneyReceiptInteractor(service: service, transactionId: self.transactionId ?? "") + let presenter = SendMoneyReceiptPresenter() + let viewController = viewControllerFromStoryboard(of: SendMoneyReceiptViewController.self) + viewController.controlNo = self.controlNo // todo: refractor later + viewController.transactionId = self.transactionId // todo: refractor later + viewController.shouldShowCancelAmmendButton = self.shouldShowCancelAmmendButton + viewController.isFromTransactionHistory = self.isFromTransactionReport + viewController.receiptType = receiptType + viewController.presenter = presenter + interactor.output = presenter + presenter.interactor = interactor + presenter.wireframe = self + presenter.view = viewController + + self.view = viewController + return viewController + } - self.transactionId = transactionId - self.pushMainView(in: source) - } - - func openRecieptFromTransactionReport( - type: ReceiptType = ReceiptType.overseas, - controlNo: String, - transactionId: String, - shouldShowCancelAmmendButton: Bool, - source: UINavigationController + func openReciept( + type: ReceiptType = ReceiptType.overseas, + transactionId: String, + source: UINavigationController ) { - receiptType = type - isFromTransactionReport = true + receiptType = type + isFromTransactionReport = false + + self.transactionId = transactionId + self.pushMainView(in: source) + } - self.transactionId = transactionId - self.shouldShowCancelAmmendButton = shouldShowCancelAmmendButton - self.controlNo = controlNo - self.pushMainView(in: source) - } - - func dismiss() { - self.view.navigationController?.popViewController(animated: true) - } - - func openMail(controlNO: String, transactionId: String, type: MailBoxType) { - if let navigation = self.view.navigationController { - mailboxwireFrame.openMail( - controlNO: controlNO, - transactionId: transactionId, - type: type, - source: navigation - ) + func openRecieptFromTransactionReport( + type: ReceiptType = ReceiptType.overseas, + controlNo: String, + transactionId: String, + shouldShowCancelAmmendButton: Bool, + source: UINavigationController + ) { + receiptType = type + isFromTransactionReport = true + + self.transactionId = transactionId + self.shouldShowCancelAmmendButton = shouldShowCancelAmmendButton + self.controlNo = controlNo + self.pushMainView(in: source) } - } - + + func openReceiptFromNotice( + controlNo: String, + transactionId: String, + shouldShowCancelAmmendButton: Bool, + source: UINavigationController + ) { + self.transactionId = transactionId + self.shouldShowCancelAmmendButton = shouldShowCancelAmmendButton + self.controlNo = controlNo + self.pushMainView(in: source) + } + + func dismiss() { + self.view.navigationController?.popViewController(animated: true) + } + + func openMail(controlNO: String, transactionId: String, type: MailBoxType) { + if let navigation = self.view.navigationController { + mailboxwireFrame.openMail( + controlNO: controlNO, + transactionId: transactionId, + type: type, + source: navigation + ) + } + } + } diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard index 863e4007..d56ba66e 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard @@ -20,538 +20,570 @@ - + - - + + - + - + - - + + - - + + - - + + + + + + - - - + + - - + + - - + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + - - - + + - + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + - - - - + + + + + + + + - + - + - - + + - + - - + + - + - + + - + + + - - - - - - - - + + - - - - - - + + + + + + @@ -560,55 +592,61 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + - - - diff --git a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift index 5bc53df3..0097333c 100644 --- a/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift +++ b/GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift @@ -22,11 +22,13 @@ class SendMoneyVerificationViewController: UITableViewController { // MARK: IBOutlets // Recievers Details + @IBOutlet weak var detailBgView: UIView! + @IBOutlet weak var detailView: UIView! @IBOutlet weak var fullNameLabel: UILabel! @IBOutlet weak var addressLabel: UILabel! @IBOutlet weak var countryLabel: UILabel! @IBOutlet weak var mobileLabel: UILabel! - + @IBOutlet weak var fullNameTitleLabel: UILabel! @IBOutlet weak var addressTitleLabel: UILabel! @IBOutlet weak var countryTitleLabel: UILabel! @@ -104,6 +106,7 @@ class SendMoneyVerificationViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() self.setup() + self.detailBgView.layer.applyCornerRadiusShadow(alpha: 0.5, x: -2, y: 25, blur: 20, spread: 0, cornerRadiusValue: 10) self.configureLanguage() } diff --git a/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Contents.json b/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Contents.json new file mode 100644 index 00000000..42376a78 --- /dev/null +++ b/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Notice.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf b/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf new file mode 100644 index 00000000..fc689608 --- /dev/null +++ b/GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf @@ -0,0 +1,157 @@ +%PDF-1.5 +% +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +x}AN0 E9/c'NNX"h3BcMZ Zk uC +sYZL`ٜT2ܾE8~?!½ݟ2"$pv5r7K }QEz,v~Oy^5S>8b–l*ZSG/{ +ĘMX&SgBK`S(H6QJs48a +k~Me),)yHBMAQd›BCj:3dW ʝhS| +C VlT} [&_@y;PQ˭ Gx ) +endstream +endobj +5 0 obj + 311 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 48 48 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.15.10 (http://cairographics.org)) + /CreationDate (D:20201007231056-05'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000713 00000 n +0000000497 00000 n +0000000425 00000 n +0000000015 00000 n +0000000403 00000 n +0000000778 00000 n +0000000894 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +946 +%%EOF +%BeginExifToolUpdate +6 0 obj +<< +/Creator (Zamzar) +/Producer (Zamzar) +>> +endobj +7 0 obj +<< +/Type /Catalog +/Pages 1 0 R +/Metadata 8 0 R +>> +endobj +8 0 obj +<< +/Type /Metadata +/Subtype /XML +/Length 2943 +>> +stream + + + + + + + + Zamzar + + + + + + Zamzar + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +xref +0 1 +0000000000 65535 f +6 3 +0000001208 00000 n +0000001266 00000 n +0000001331 00000 n +trailer +<< +/Size 9 +/Root 7 0 R +/Info 6 0 R +/Prev 946 +>> +%EndExifToolUpdate 1187 +startxref +4357 +%%EOF diff --git a/GME Remit/Utilities/CustomUI/GradientView.swift b/GME Remit/Utilities/CustomUI/GradientView.swift new file mode 100644 index 00000000..7ece61fb --- /dev/null +++ b/GME Remit/Utilities/CustomUI/GradientView.swift @@ -0,0 +1,20 @@ +// +// GradientView.swift +// GME Remit +// +// Created by Shiran on 10/4/20. +// Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved. +// + +import UIKit + +@IBDesignable +class ArcView: UIView { + + override func layoutSubviews() { + self.bottomArc() + } +} + + +