Browse Source

notice updated

pull/1/head
Dibya Malla 4 years ago
parent
commit
6735514e52
  1. 12
      GME Remit.xcodeproj/project.pbxproj
  2. 36
      GME Remit/Extensions/UIView+Ext.swift
  3. 51
      GME Remit/Models/Response/NotificationFetch.swift
  4. 2
      GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift
  5. 4
      GME Remit/Modules/Home/User Interface/View/HomeViewController.swift
  6. 2
      GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift
  7. 8
      GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard
  8. 4
      GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift
  9. 135
      GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift
  10. 4
      GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard
  11. 62
      GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift
  12. 8
      GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift
  13. 2
      GME Remit/Modules/Profile/Profile.storyboard
  14. 2
      GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard
  15. 28
      GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift
  16. 2
      GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard
  17. 24
      GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift
  18. 4
      GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift
  19. 1
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard
  20. 10
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift
  21. 10
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard
  22. 531
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift
  23. 150
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift
  24. 1030
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard
  25. 5
      GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift
  26. 12
      GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Contents.json
  27. 1
      GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf
  28. 20
      GME Remit/Utilities/CustomUI/GradientView.swift

12
GME Remit.xcodeproj/project.pbxproj

@ -55,6 +55,7 @@
405718F324D93EB40022CDDE /* VerifyIDNumberViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E824D93EB40022CDDE /* VerifyIDNumberViewController.swift */; }; 405718F324D93EB40022CDDE /* VerifyIDNumberViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E824D93EB40022CDDE /* VerifyIDNumberViewController.swift */; };
405718F424D93EB40022CDDE /* VerifyIDNumberViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */; }; 405718F424D93EB40022CDDE /* VerifyIDNumberViewInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */; };
405718F524D93EB40022CDDE /* VerifyIDNumber.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 405718EA24D93EB40022CDDE /* VerifyIDNumber.storyboard */; }; 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 */; }; 4060B97224DBBA0300E90F8C /* KYCVerifyStep1Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96124DBBA0200E90F8C /* KYCVerifyStep1Service.swift */; };
4060B97324DBBA0300E90F8C /* KYCVerifyStep1ServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */; }; 4060B97324DBBA0300E90F8C /* KYCVerifyStep1ServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */; };
4060B97424DBBA0300E90F8C /* KYCVerifyStep1Interactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B96424DBBA0200E90F8C /* KYCVerifyStep1Interactor.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 */; }; 4060B98124DBD22C00E90F8C /* PersonalInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4060B98024DBD22C00E90F8C /* PersonalInfoModel.swift */; };
406F2D8124DBE28400EF31FB /* PictureInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */; }; 406F2D8124DBE28400EF31FB /* PictureInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */; };
406F2D8324DBE43400EF31FB /* KYCSaveInformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406F2D8224DBE43400EF31FB /* KYCSaveInformation.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 */; }; 4099AF0125235C45003FA012 /* CircleBorderedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4099AF0025235C45003FA012 /* CircleBorderedView.swift */; };
40AE56352512DD8A00412B87 /* ChangePinAndPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */; }; 40AE56352512DD8A00412B87 /* ChangePinAndPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */; };
40B33AA324CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B33A9024CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.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 = "<group>"; }; 405718E824D93EB40022CDDE /* VerifyIDNumberViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyIDNumberViewController.swift; sourceTree = "<group>"; };
405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyIDNumberViewInterface.swift; sourceTree = "<group>"; }; 405718E924D93EB40022CDDE /* VerifyIDNumberViewInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyIDNumberViewInterface.swift; sourceTree = "<group>"; };
405718EA24D93EB40022CDDE /* VerifyIDNumber.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = VerifyIDNumber.storyboard; sourceTree = "<group>"; }; 405718EA24D93EB40022CDDE /* VerifyIDNumber.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = VerifyIDNumber.storyboard; sourceTree = "<group>"; };
405E708C252BE2E50018F708 /* NotificationFetch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationFetch.swift; sourceTree = "<group>"; };
4060B96124DBBA0200E90F8C /* KYCVerifyStep1Service.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Service.swift; sourceTree = "<group>"; }; 4060B96124DBBA0200E90F8C /* KYCVerifyStep1Service.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Service.swift; sourceTree = "<group>"; };
4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1ServiceType.swift; sourceTree = "<group>"; }; 4060B96224DBBA0200E90F8C /* KYCVerifyStep1ServiceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1ServiceType.swift; sourceTree = "<group>"; };
4060B96424DBBA0200E90F8C /* KYCVerifyStep1Interactor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Interactor.swift; sourceTree = "<group>"; }; 4060B96424DBBA0200E90F8C /* KYCVerifyStep1Interactor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KYCVerifyStep1Interactor.swift; sourceTree = "<group>"; };
@ -783,6 +786,7 @@
4060B98024DBD22C00E90F8C /* PersonalInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersonalInfoModel.swift; sourceTree = "<group>"; }; 4060B98024DBD22C00E90F8C /* PersonalInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersonalInfoModel.swift; sourceTree = "<group>"; };
406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PictureInfoModel.swift; sourceTree = "<group>"; }; 406F2D8024DBE28400EF31FB /* PictureInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PictureInfoModel.swift; sourceTree = "<group>"; };
406F2D8224DBE43400EF31FB /* KYCSaveInformation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KYCSaveInformation.swift; sourceTree = "<group>"; }; 406F2D8224DBE43400EF31FB /* KYCSaveInformation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KYCSaveInformation.swift; sourceTree = "<group>"; };
4073BA9125295F5B0043258E /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = "<group>"; };
4099AF0025235C45003FA012 /* CircleBorderedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleBorderedView.swift; sourceTree = "<group>"; }; 4099AF0025235C45003FA012 /* CircleBorderedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleBorderedView.swift; sourceTree = "<group>"; };
40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangePinAndPasswordViewController.swift; sourceTree = "<group>"; }; 40AE56342512DD8A00412B87 /* ChangePinAndPasswordViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangePinAndPasswordViewController.swift; sourceTree = "<group>"; };
40B33A9024CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExistingUserRegistrationModuleInterface.swift; sourceTree = "<group>"; }; 40B33A9024CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExistingUserRegistrationModuleInterface.swift; sourceTree = "<group>"; };
@ -2688,6 +2692,7 @@
733A3BA3235557E600E6B87E /* CreditCardView */, 733A3BA3235557E600E6B87E /* CreditCardView */,
7384B27F22CB375400DD04D9 /* GMEAlert */, 7384B27F22CB375400DD04D9 /* GMEAlert */,
4099AF0025235C45003FA012 /* CircleBorderedView.swift */, 4099AF0025235C45003FA012 /* CircleBorderedView.swift */,
4073BA9125295F5B0043258E /* GradientView.swift */,
); );
path = CustomUI; path = CustomUI;
sourceTree = "<group>"; sourceTree = "<group>";
@ -3207,6 +3212,7 @@
7318532C230EACA300BA9AE3 /* SendMoneyDistrictViewModel.swift */, 7318532C230EACA300BA9AE3 /* SendMoneyDistrictViewModel.swift */,
7318532D230EACA300BA9AE3 /* SendMoneyProvinceViewModel.swift */, 7318532D230EACA300BA9AE3 /* SendMoneyProvinceViewModel.swift */,
7367FF5D237401860005F644 /* PushNotificationParam.swift */, 7367FF5D237401860005F644 /* PushNotificationParam.swift */,
405E708C252BE2E50018F708 /* NotificationFetch.swift */,
); );
path = Response; path = Response;
sourceTree = "<group>"; sourceTree = "<group>";
@ -6856,6 +6862,7 @@
89EA0D7E243EC1C5003ACCC8 /* PersonalInformationViewInterface.swift in Sources */, 89EA0D7E243EC1C5003ACCC8 /* PersonalInformationViewInterface.swift in Sources */,
73210DAA22FBE73100715D6C /* RecipientsViewModelInterface.swift in Sources */, 73210DAA22FBE73100715D6C /* RecipientsViewModelInterface.swift in Sources */,
40B33AA324CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift in Sources */, 40B33AA324CAF87A00AFE2AB /* ExistingUserRegistrationModuleInterface.swift in Sources */,
405E708D252BE2E50018F708 /* NotificationFetch.swift in Sources */,
40218EFD24D2B1950047FBF5 /* UserRegistrationWireframeInput.swift in Sources */, 40218EFD24D2B1950047FBF5 /* UserRegistrationWireframeInput.swift in Sources */,
7E692A5224AF091600F10D62 /* MobileVerificationPresenter.swift in Sources */, 7E692A5224AF091600F10D62 /* MobileVerificationPresenter.swift in Sources */,
73157B9D22DC1EEC009B836F /* PopupNotificationService.swift in Sources */, 73157B9D22DC1EEC009B836F /* PopupNotificationService.swift in Sources */,
@ -7175,6 +7182,7 @@
7E692A7024AF190B00F10D62 /* OTPSubmitServiceType.swift in Sources */, 7E692A7024AF190B00F10D62 /* OTPSubmitServiceType.swift in Sources */,
D92B80272140C3CB00A25B26 /* MainServiceType.swift in Sources */, D92B80272140C3CB00A25B26 /* MainServiceType.swift in Sources */,
7318534F230EACA400BA9AE3 /* SendMoneyRelationViewModel.swift in Sources */, 7318534F230EACA400BA9AE3 /* SendMoneyRelationViewModel.swift in Sources */,
4073BA9225295F5B0043258E /* GradientView.swift in Sources */,
73FBBF3423F243FA009D7627 /* NoticeModel.swift in Sources */, 73FBBF3423F243FA009D7627 /* NoticeModel.swift in Sources */,
4060B97A24DBBA0300E90F8C /* KYCVerifyStep1ViewController.swift in Sources */, 4060B97A24DBBA0300E90F8C /* KYCVerifyStep1ViewController.swift in Sources */,
4060B97524DBBA0300E90F8C /* KYCVerifyStep1InteractorIO.swift in Sources */, 4060B97524DBBA0300E90F8C /* KYCVerifyStep1InteractorIO.swift in Sources */,
@ -7488,7 +7496,7 @@
CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements"; CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
CURRENT_PROJECT_VERSION = 10;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = XQRV22K6DC; DEVELOPMENT_TEAM = XQRV22K6DC;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
@ -7527,7 +7535,7 @@
CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements"; CODE_SIGN_ENTITLEMENTS = "GME Remit.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
CURRENT_PROJECT_VERSION = 10;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = XQRV22K6DC; DEVELOPMENT_TEAM = XQRV22K6DC;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;

36
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
}
}

51
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"]
}
}

2
GME Remit/Modules/Home/User Interface/View/Cell/HomeCollectionTableViewCell.swift

@ -118,7 +118,7 @@ class HomeCollectionTableViewCell: UITableViewCell, UICollectionViewDelegateFlow
let noticeMenu = HomeCollectionModel() let noticeMenu = HomeCollectionModel()
noticeMenu.index = 6 noticeMenu.index = 6
noticeMenu.title = "Notice" noticeMenu.title = "Notice"
noticeMenu.icon = UIImage.init(named: "jme_wallet")
noticeMenu.icon = UIImage.init(named: "ic_notice")
// FIXME: Check Menues. // FIXME: Check Menues.

4
GME Remit/Modules/Home/User Interface/View/HomeViewController.swift

@ -139,7 +139,7 @@ class HomeViewController: UIViewController {
return scrollView return scrollView
}() }()
private func addDimView(){
private func addDimView() {
self.bgView.tag = 999 self.bgView.tag = 999
self.tabBarController?.view.addSubview(self.bgView) self.tabBarController?.view.addSubview(self.bgView)
self.bgView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true 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{ if let views = self.tabBarController?.view.subviews{
for each in views{ for each in views{
if each.tag == 999{ if each.tag == 999{

2
GME Remit/Modules/Notice/DetailNotification/Application Logic/Model/DetailNoticeModel.swift

@ -22,6 +22,6 @@ struct DetailNoticeModel: Mappable {
title <- map["title"] title <- map["title"]
body <- map["body"] body <- map["body"]
date <- map["createDate"] date <- map["createDate"]
imageURL <- map["url"]
imageURL <- map["imageURL"]
} }
} }

8
GME Remit/Modules/Notice/DetailNotification/User Interface/View/DetailNotification.storyboard

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="gPa-I4-mGd">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="HSb-ou-7T5">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
@ -20,7 +20,7 @@
<!--DetailNotification--> <!--DetailNotification-->
<scene sceneID="R60-Pu-Hpy"> <scene sceneID="R60-Pu-Hpy">
<objects> <objects>
<viewController storyboardIdentifier="DetailNotificationViewController" title="DetailNotification" id="HSb-ou-7T5" customClass="DetailNotificationViewController" customModule="GME_Remit" sceneMemberID="viewController">
<viewController storyboardIdentifier="DetailNotificationViewController" title="DetailNotification" id="HSb-ou-7T5" customClass="DetailNotificationViewController" customModule="JME_Remit" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO"> <view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@ -176,10 +176,10 @@
<color red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
<namedColor name="ThemeSeparate"> <namedColor name="ThemeSeparate">
<color red="0.82400000095367432" green="0.82400000095367432" blue="0.82400000095367432" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

4
GME Remit/Modules/Notice/NotificationHistory/Application Logic/Service/NotificationHistoryService.swift

@ -13,7 +13,9 @@ class NotificationHistoryService: NotificationHistoryServiceType {
success: @escaping ([NoticeModel]) -> Void, success: @escaping ([NoticeModel]) -> Void,
failure: @escaping (Error) -> Void failure: @escaping (Error) -> Void
) { ) {
APIRouter.getNotifyInfo.json(success: success, failure: failure)
APIRouter
.getNotifyInfo
.json(success: success, failure: failure)
} }
} }

135
GME Remit/Modules/Notice/NotificationHistory/User Interface/Presenter/NotificationHistoryPresenter.swift

@ -10,78 +10,83 @@ import RxSwift
import RxCocoa import RxCocoa
class NotificationHistoryPresenter: ViewModelType { class NotificationHistoryPresenter: ViewModelType {
var interactor: NotificationHistoryInteractorInput?
var wireframe: NotificationHistoryWireframeInput?
struct Input {
let viewWillAppear: Driver<Void>
let selectNoticeIndex: Driver<Int>
}
struct Output {
let isError: Driver<Error>
let isProgress: Driver<Bool>
let models: Driver<[NoticeModel]>
}
private let disposeBag = DisposeBag()
private let progressLinker = PublishSubject<Bool>()
private let errorLinker = PublishSubject<Error>()
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<Void>
let selectNoticeIndex: Driver<Int>
}
input.selectNoticeIndex
.withLatestFrom(model.asDriverOnErrorJustComplete()) { (indexPath, notices) -> NoticeModel in
return notices[indexPath]
struct Output {
let isError: Driver<Error>
let isProgress: Driver<Bool>
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<Bool>()
private let errorLinker = PublishSubject<Error>()
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 // MARK: NotificationHistory interactor output interface
extension NotificationHistoryPresenter: NotificationHistoryInteractorOutput { 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)
}
} }

4
GME Remit/Modules/Notice/NotificationHistory/User Interface/View/NotificationHistory.storyboard

@ -169,10 +169,10 @@
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</namedColor> </namedColor>
<namedColor name="ThemeSeparate"> <namedColor name="ThemeSeparate">
<color red="0.82400000095367432" green="0.82400000095367432" blue="0.82400000095367432" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

62
GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframe.swift

@ -9,36 +9,46 @@
import UIKit import UIKit
class NotificationHistoryWireframe { class NotificationHistoryWireframe {
weak var view: UIViewController!
weak var view: UIViewController!
} }
extension NotificationHistoryWireframe: NotificationHistoryWireframeInput { 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)
}
} }

8
GME Remit/Modules/Notice/NotificationHistory/User Interface/Wireframe/NotificationHistoryWireframeInput.swift

@ -9,5 +9,11 @@
import Foundation import Foundation
protocol NotificationHistoryWireframeInput: WireframeInput { protocol NotificationHistoryWireframeInput: WireframeInput {
func detail(index: String)
func detail(index: String)
func openReceipt(
transactionId: String,
shouldShowCancelAmmendButton: Bool,
control: String
)
} }

2
GME Remit/Modules/Profile/Profile.storyboard

@ -1148,7 +1148,7 @@
<color red="0.93300002813339233" green="0.93300002813339233" blue="0.93300002813339233" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> <color red="0.93300002813339233" green="0.93300002813339233" blue="0.93300002813339233" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
</document> </document>

2
GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKyc.storyboard

@ -735,7 +735,7 @@
<color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

28
GME Remit/Modules/RegisterModules/UserAuthentication/ExistingUserKyc/User Interface/View/ExistingUserKycViewController.swift

@ -185,17 +185,9 @@ class ExistingUserKycViewController: UIViewController {
pictureSaveBttn.layer.cornerRadius = 5 pictureSaveBttn.layer.cornerRadius = 5
frontIdButton.layer.cornerRadius = 5 frontIdButton.layer.cornerRadius = 5
frontIdButton.layer.borderWidth = 1
frontIdButton.layer.borderColor = UIColor.themeText.cgColor
backIdButton.layer.cornerRadius = 5 backIdButton.layer.cornerRadius = 5
backIdButton.layer.borderWidth = 1
backIdButton.layer.borderColor = UIColor.themeText.cgColor
sideIdButton.layer.cornerRadius = 5 sideIdButton.layer.cornerRadius = 5
sideIdButton.layer.borderWidth = 1
sideIdButton.layer.borderColor = UIColor.themeText.cgColor
frontIDContainer.layer.cornerRadius = 12 frontIDContainer.layer.cornerRadius = 12
frontIDContainer.layer.borderWidth = 1 frontIDContainer.layer.borderWidth = 1
frontIDContainer.layer.borderColor = UIColor.themeSeparate.cgColor frontIDContainer.layer.borderColor = UIColor.themeSeparate.cgColor
@ -241,20 +233,20 @@ class ExistingUserKycViewController: UIViewController {
private func setUIBinding() { private func setUIBinding() {
frontIdButton.rx.tap.bind {[weak self] in frontIdButton.rx.tap.bind {[weak self] in
self?.photoType = .frontID 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) }.disposed(by: disposeBag)
backIdButton.rx.tap.bind {[weak self] in backIdButton.rx.tap.bind {[weak self] in
self?.photoType = .backID 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) }.disposed(by: disposeBag)
sideIdButton.rx.tap.bind {[weak self] in sideIdButton.rx.tap.bind {[weak self] in
self?.photoType = .sideID 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) }.disposed(by: disposeBag)
frontIDImageTrigger frontIDImageTrigger
@ -286,7 +278,7 @@ class ExistingUserKycViewController: UIViewController {
} }
} else { } else {
self?.frontImageBase64.onNext(nil) 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) }).disposed(by: disposeBag)
@ -320,7 +312,7 @@ class ExistingUserKycViewController: UIViewController {
} }
} else { } else {
self?.backIDImageBase64.onNext(nil) 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) }).disposed(by: disposeBag)
@ -354,7 +346,7 @@ class ExistingUserKycViewController: UIViewController {
} }
} else { } else {
self?.sideIDImageBase64.onNext(nil) 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) }).disposed(by: disposeBag)

2
GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1.storyboard

@ -1108,7 +1108,7 @@
<color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color red="0.82352941176470584" green="0.82352941176470584" blue="0.82352941176470584" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

24
GME Remit/Modules/RegisterModules/UserAuthentication/KYCVerifyStep1/User Interface/View/KYCVerifyStep1ViewController.swift

@ -271,38 +271,38 @@ extension KYCVerifyStep1ViewController {
frontIDImageButton.rx.tap.bind {[weak self] in frontIDImageButton.rx.tap.bind {[weak self] in
self?.photoType = .frontID 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) }.disposed(by: disposeBag)
anotherIDImageButton.rx.tap.bind {[weak self] in anotherIDImageButton.rx.tap.bind {[weak self] in
self?.photoType = .anotherID 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) }.disposed(by: disposeBag)
anotherIDBackImageButton.rx.tap.bind {[weak self] in anotherIDBackImageButton.rx.tap.bind {[weak self] in
self?.photoType = .anotherIdBack 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) }.disposed(by: disposeBag)
backIDImageButton.rx.tap.bind {[weak self] in backIDImageButton.rx.tap.bind {[weak self] in
self?.photoType = .backID 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) }.disposed(by: disposeBag)
sideIDImageButton.rx.tap.bind {[weak self] in sideIDImageButton.rx.tap.bind {[weak self] in
self?.photoType = .sideID 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) }.disposed(by: disposeBag)
facePictureImageButton.rx.tap.bind {[weak self] in facePictureImageButton.rx.tap.bind {[weak self] in
self?.photoType = .facePicture 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) }.disposed(by: disposeBag)
frontIDImageTrigger frontIDImageTrigger

4
GME Remit/Modules/RegisterModules/UserAuthentication/NewRegister/User Interface/Wireframe/NewRegisterWireframe.swift

@ -30,7 +30,7 @@ extension NewRegisterWireframe: NewRegisterWireframeInput {
if selectedWireframe == "ExistingUser" { if selectedWireframe == "ExistingUser" {
step1VC = ExistingUserKycWireframe().getMainView(with: self, step: .first) step1VC = ExistingUserKycWireframe().getMainView(with: self, step: .first)
step2VC = ExistingUserKycWireframe().getMainView(with: self, step: .upload) step2VC = ExistingUserKycWireframe().getMainView(with: self, step: .upload)
}else {
} else {
step1VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .first) step1VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .first)
step2VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .upload) step2VC = KYCVerifyStep1Wireframe().getMainView(with: self, step: .upload)
} }
@ -197,7 +197,7 @@ extension NewRegisterWireframe: NewRegisterWireframeInput {
} }
func selectedView(in source: UINavigationController, viewName: String) { func selectedView(in source: UINavigationController, viewName: String) {
selectedWireframe = viewName
selectedWireframe = viewName
let mainView = self.getMainView() let mainView = self.getMainView()
source.pushViewController(mainView, animated: true) source.pushViewController(mainView, animated: true)
} }

1
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRate.storyboard

@ -506,6 +506,7 @@
<viewLayoutGuide key="safeArea" id="N0v-fL-JiI"/> <viewLayoutGuide key="safeArea" id="N0v-fL-JiI"/>
</view> </view>
<connections> <connections>
<outlet property="backgroundView" destination="Lzg-G5-Ik0" id="tMW-Vo-1b9"/>
<outlet property="backgroundViewCountryLabel1" destination="45f-a8-tno" id="74c-NJ-HjT"/> <outlet property="backgroundViewCountryLabel1" destination="45f-a8-tno" id="74c-NJ-HjT"/>
<outlet property="backgroundViewCountryLabel2" destination="5QW-kB-UfW" id="lme-EJ-hZH"/> <outlet property="backgroundViewCountryLabel2" destination="5QW-kB-UfW" id="lme-EJ-hZH"/>
<outlet property="calculatedInfoView" destination="HD3-3z-Nkp" id="nWf-Qh-Dbh"/> <outlet property="calculatedInfoView" destination="HD3-3z-Nkp" id="nWf-Qh-Dbh"/>

10
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 calculatedInfoView: UIView!
@IBOutlet weak var serviceChargeView: UIStackView! @IBOutlet weak var serviceChargeView: UIStackView!
@IBOutlet weak var exchangeRateView: 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 couponListFetch: UIView!
@IBOutlet weak var couponListShow: UIStackView! @IBOutlet weak var couponListShow: UIStackView!

10
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyParent/User Interface/View/SendMoneyParent.storyboard

@ -106,19 +106,19 @@
</constraints> </constraints>
</view> </view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TTM-k8-r9y"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TTM-k8-r9y">
<rect key="frame" x="8" y="95" width="359" height="564"/>
<rect key="frame" x="0.0" y="92" width="375" height="567"/>
<color key="backgroundColor" name="ThemeMainBackground"/> <color key="backgroundColor" name="ThemeMainBackground"/>
</view> </view>
</subviews> </subviews>
<color key="backgroundColor" name="ThemeSubBackground"/> <color key="backgroundColor" name="ThemeSubBackground"/>
<constraints> <constraints>
<constraint firstItem="TTM-k8-r9y" firstAttribute="top" secondItem="USr-Wi-jgh" secondAttribute="bottom" constant="5" id="1sz-dL-Cei"/>
<constraint firstItem="TTM-k8-r9y" firstAttribute="top" secondItem="USr-Wi-jgh" secondAttribute="bottom" constant="2" id="1sz-dL-Cei"/>
<constraint firstItem="USr-Wi-jgh" firstAttribute="top" secondItem="5dt-lf-O77" secondAttribute="top" id="FD7-wJ-EdF"/> <constraint firstItem="USr-Wi-jgh" firstAttribute="top" secondItem="5dt-lf-O77" secondAttribute="top" id="FD7-wJ-EdF"/>
<constraint firstItem="5dt-lf-O77" firstAttribute="bottom" secondItem="TTM-k8-r9y" secondAttribute="bottom" constant="8" id="KU9-zd-NQ5"/> <constraint firstItem="5dt-lf-O77" firstAttribute="bottom" secondItem="TTM-k8-r9y" secondAttribute="bottom" constant="8" id="KU9-zd-NQ5"/>
<constraint firstItem="5dt-lf-O77" firstAttribute="trailing" secondItem="USr-Wi-jgh" secondAttribute="trailing" id="M6x-tC-ENT"/> <constraint firstItem="5dt-lf-O77" firstAttribute="trailing" secondItem="USr-Wi-jgh" secondAttribute="trailing" id="M6x-tC-ENT"/>
<constraint firstItem="USr-Wi-jgh" firstAttribute="leading" secondItem="5dt-lf-O77" secondAttribute="leading" id="d65-ol-LG5"/> <constraint firstItem="USr-Wi-jgh" firstAttribute="leading" secondItem="5dt-lf-O77" secondAttribute="leading" id="d65-ol-LG5"/>
<constraint firstItem="5dt-lf-O77" firstAttribute="trailing" secondItem="TTM-k8-r9y" secondAttribute="trailing" constant="8" id="mM5-vC-vb6"/>
<constraint firstItem="TTM-k8-r9y" firstAttribute="leading" secondItem="5dt-lf-O77" secondAttribute="leading" constant="8" id="x8x-1L-uBa"/>
<constraint firstItem="5dt-lf-O77" firstAttribute="trailing" secondItem="TTM-k8-r9y" secondAttribute="trailing" id="mM5-vC-vb6"/>
<constraint firstItem="TTM-k8-r9y" firstAttribute="leading" secondItem="5dt-lf-O77" secondAttribute="leading" id="x8x-1L-uBa"/>
</constraints> </constraints>
<viewLayoutGuide key="safeArea" id="5dt-lf-O77"/> <viewLayoutGuide key="safeArea" id="5dt-lf-O77"/>
</view> </view>
@ -144,7 +144,7 @@
<color red="0.93300002813339233" green="0.93300002813339233" blue="0.93300002813339233" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> <color red="0.93300002813339233" green="0.93300002813339233" blue="0.93300002813339233" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
</namedColor> </namedColor>
<namedColor name="ThemeText"> <namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.5490196078431373" green="0.58823529411764708" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor> </namedColor>
</resources> </resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

531
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/View/SendMoneyReceiptViewController.swift

@ -10,294 +10,299 @@ import UIKit
import Kingfisher import Kingfisher
enum MailBoxType { enum MailBoxType {
case cancel
case edit
case cancel
case edit
} }
enum ReceiptType { enum ReceiptType {
case overseas
case overseas
} }
class SendMoneyReceiptViewController: UIViewController { 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 // MARK: SendMoneyReceiptViewInterface
extension SendMoneyReceiptViewController: 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
}
} }

150
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyReceipt/User Interface/Wireframe/SendMoneyReceiptWireframe.swift

@ -9,81 +9,93 @@
import UIKit import UIKit
class SendMoneyReceiptWireframe { 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 { 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
)
}
}
} }

1030
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerification.storyboard
File diff suppressed because it is too large
View File

5
GME Remit/Modules/RemittanceModules/OverseasModules/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift

@ -22,11 +22,13 @@ class SendMoneyVerificationViewController: UITableViewController {
// MARK: IBOutlets // MARK: IBOutlets
// Recievers Details // Recievers Details
@IBOutlet weak var detailBgView: UIView!
@IBOutlet weak var detailView: UIView!
@IBOutlet weak var fullNameLabel: UILabel! @IBOutlet weak var fullNameLabel: UILabel!
@IBOutlet weak var addressLabel: UILabel! @IBOutlet weak var addressLabel: UILabel!
@IBOutlet weak var countryLabel: UILabel! @IBOutlet weak var countryLabel: UILabel!
@IBOutlet weak var mobileLabel: UILabel! @IBOutlet weak var mobileLabel: UILabel!
@IBOutlet weak var fullNameTitleLabel: UILabel! @IBOutlet weak var fullNameTitleLabel: UILabel!
@IBOutlet weak var addressTitleLabel: UILabel! @IBOutlet weak var addressTitleLabel: UILabel!
@IBOutlet weak var countryTitleLabel: UILabel! @IBOutlet weak var countryTitleLabel: UILabel!
@ -104,6 +106,7 @@ class SendMoneyVerificationViewController: UITableViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
self.setup() self.setup()
self.detailBgView.layer.applyCornerRadiusShadow(alpha: 0.5, x: -2, y: 25, blur: 20, spread: 0, cornerRadiusValue: 10)
self.configureLanguage() self.configureLanguage()
} }

12
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"
}
}

1
GME Remit/Supported Files/Assets.xcassets/ic_notice.imageset/Notice.pdf

@ -0,0 +1 @@

20
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()
}
}
Loading…
Cancel
Save