Browse Source

add agreement

pull/1/head
InKwon James Kim 5 years ago
parent
commit
7028ea35b4
  1. 30
      GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift
  2. 15
      GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift
  3. 13
      GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift
  4. 11
      GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift
  5. 39
      GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift
  6. 226
      GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreement.storyboard
  7. 73
      GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift
  8. 47
      GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframe.swift
  9. 13
      GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframeInput.swift
  10. 6
      GME Remit/MultiLanguages/uz.lproj/Localizable.strings
  11. 42
      GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.swift
  12. 38
      GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.xib

30
GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractor.swift

@ -0,0 +1,30 @@
//
// ManageAgreementInteractor.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ManageAgreementInteractor {
// MARK: Properties
weak var output: ManageAgreementInteractorOutput?
private let service: ManageAgreementServiceType
// MARK: Initialization
init(service: ManageAgreementServiceType) {
self.service = service
}
}
// MARK: ManageAgreement interactor input interface
extension ManageAgreementInteractor: ManageAgreementInteractorInput {
}

15
GME Remit/Modules/ManageAgreement/Application Logic/Interactor/ManageAgreementInteractorIO.swift

@ -0,0 +1,15 @@
//
// ManageAgreementInteractorIO.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ManageAgreementInteractorInput: class {
}
protocol ManageAgreementInteractorOutput: class {
}

13
GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementService.swift

@ -0,0 +1,13 @@
//
// ManageAgreementService.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class ManageAgreementService: ManageAgreementServiceType {
}

11
GME Remit/Modules/ManageAgreement/Application Logic/Service/ManageAgreementServiceType.swift

@ -0,0 +1,11 @@
//
// ManageAgreementServiceType.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
protocol ManageAgreementServiceType: class {
}

39
GME Remit/Modules/ManageAgreement/User Interface/Presenter/ManageAgreementPresenter.swift

@ -0,0 +1,39 @@
//
// ManageAgreementPresenter.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import RxSwift
import RxCocoa
class ManageAgreementPresenter: ViewModelType {
var interactor: ManageAgreementInteractorInput?
var wireframe: ManageAgreementWireframeInput?
struct Input {}
struct Output {
let isError: Driver<Error>
let isProgress: Driver<Bool>
}
private let disposeBag = DisposeBag()
private let progressLinker = PublishSubject<Bool>()
private let errorLinker = PublishSubject<Error>()
func transform(input: Input) -> Output {
return Output(
isError: errorLinker.asDriverOnErrorJustComplete(),
isProgress: progressLinker.asDriverOnErrorJustComplete()
)
}
}
// MARK: ManageAgreement interactor output interface
extension ManageAgreementPresenter: ManageAgreementInteractorOutput {
}

226
GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreement.storyboard

@ -0,0 +1,226 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ytk-Td-pWB">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="SanFranciscoDisplay-Bold.otf">
<string>SanFranciscoDisplay-Bold</string>
</array>
<array key="SanFranciscoDisplay-Medium.otf">
<string>SanFranciscoDisplay-Medium</string>
</array>
<array key="SanFranciscoDisplay-Regular.otf">
<string>SanFranciscoDisplay-Regular</string>
</array>
</customFonts>
<scenes>
<!--ManageAgreement-->
<scene sceneID="R60-Pu-Hpy">
<objects>
<viewController storyboardIdentifier="ManageAgreementViewController" title="ManageAgreement" id="HSb-ou-7T5" customClass="ManageAgreementViewController" customModule="GME_Remit" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QCm-8w-GYq">
<rect key="frame" x="10" y="54" width="355" height="543"/>
<subviews>
<view contentMode="scaleToFill" placeholderIntrinsicWidth="319" placeholderIntrinsicHeight="543" translatesAutoresizingMaskIntoConstraints="NO" id="QNE-oF-Dg2">
<rect key="frame" x="0.0" y="0.0" width="355" height="543"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="이용약관에 동의해 주세요." textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GOO-es-RZU">
<rect key="frame" x="20" y="20" width="315" height="23.5"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Bold" family="San Francisco Display" pointSize="20"/>
<color key="textColor" name="ThemeBlack"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wU8-B5-6aq">
<rect key="frame" x="20" y="73.5" width="315" height="119"/>
<string key="text">GME의 해외 송금 및 국내 송금 등의 서비스를 원활하게 이용하기 위하여 고객님의 계좌에 대한 출금이체 동의가 필요합니다. 해외 송금, 국내 송금 등의 서비스 이용시 출금에 동의 하신 계좌에서 오픈뱅킹 또는 펌뱅킹을 통하여 출금이체가 진행됩니다.</string>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="17"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="K4B-9a-ffc">
<rect key="frame" x="20" y="363" width="239" height="160"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="j2J-RS-Yev">
<rect key="frame" x="0.0" y="0.0" width="239" height="48"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LHu-RV-7ir">
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="spN-XR-6lB"/>
</constraints>
<color key="tintColor" name="ThemeRed"/>
<state key="normal" image="checkBlue">
<color key="titleColor" name="ThemeRed"/>
</state>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="금융기관 출금이체 약관" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aey-Kb-6WL">
<rect key="frame" x="49" y="0.0" width="138.5" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NZU-mJ-HT0">
<rect key="frame" x="196.5" y="0.0" width="42.5" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="&gt;">
<color key="titleColor" name="ThemeText"/>
</state>
</button>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="M4y-4H-eAi">
<rect key="frame" x="0.0" y="56" width="239" height="48"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XdN-dl-bM9">
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="9f3-wM-yfM"/>
</constraints>
<color key="tintColor" name="ThemeRed"/>
<state key="normal" image="checkBlue">
<color key="titleColor" name="ThemeRed"/>
</state>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="개인정보 제 3자 제공동의" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAc-eR-jd8">
<rect key="frame" x="49" y="0.0" width="151" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s3z-no-DTR">
<rect key="frame" x="209" y="0.0" width="30" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="&gt;">
<color key="titleColor" name="ThemeText"/>
</state>
</button>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" spacing="9" translatesAutoresizingMaskIntoConstraints="NO" id="l5s-kr-JwG">
<rect key="frame" x="0.0" y="112" width="239" height="48"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DWq-Dh-iW4">
<rect key="frame" x="0.0" y="0.0" width="40" height="48"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="97o-fa-Yvy"/>
</constraints>
<color key="tintColor" name="ThemeRed"/>
<state key="normal" image="checkBlue">
<color key="titleColor" name="ThemeRed"/>
</state>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="은행 출금이체 약관" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XNJ-Na-jCR">
<rect key="frame" x="49" y="0.0" width="112.5" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yo1-TL-zyc">
<rect key="frame" x="170.5" y="0.0" width="68.5" height="48"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="&gt;">
<color key="titleColor" name="ThemeText"/>
</state>
</button>
</subviews>
</stackView>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="K4B-9a-ffc" secondAttribute="trailing" constant="20" id="0fh-vD-5wK"/>
<constraint firstAttribute="bottom" secondItem="K4B-9a-ffc" secondAttribute="bottom" constant="20" id="9dL-JT-XGc"/>
<constraint firstItem="wU8-B5-6aq" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="JvY-oF-2Kx"/>
<constraint firstItem="wU8-B5-6aq" firstAttribute="top" secondItem="GOO-es-RZU" secondAttribute="bottom" constant="30" id="RvU-Ni-A6S"/>
<constraint firstItem="GOO-es-RZU" firstAttribute="top" secondItem="QNE-oF-Dg2" secondAttribute="top" constant="20" id="YBm-hE-Pe0"/>
<constraint firstItem="K4B-9a-ffc" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="Yma-EY-VgS"/>
<constraint firstAttribute="trailing" secondItem="GOO-es-RZU" secondAttribute="trailing" constant="20" id="bAh-C5-7e3"/>
<constraint firstItem="K4B-9a-ffc" firstAttribute="top" relation="greaterThanOrEqual" secondItem="wU8-B5-6aq" secondAttribute="bottom" constant="30" id="gDu-2h-6rr"/>
<constraint firstItem="GOO-es-RZU" firstAttribute="leading" secondItem="QNE-oF-Dg2" secondAttribute="leading" constant="20" id="jPv-T7-sD2"/>
<constraint firstAttribute="trailing" secondItem="wU8-B5-6aq" secondAttribute="trailing" constant="20" id="oNl-Si-92c"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="QNE-oF-Dg2" firstAttribute="leading" secondItem="QCm-8w-GYq" secondAttribute="leading" id="2Fg-oZ-X5Y"/>
<constraint firstItem="QNE-oF-Dg2" firstAttribute="width" secondItem="QCm-8w-GYq" secondAttribute="width" id="7cL-nR-FIF"/>
<constraint firstAttribute="trailing" secondItem="QNE-oF-Dg2" secondAttribute="trailing" id="NUL-7k-oe6"/>
<constraint firstAttribute="bottom" secondItem="QNE-oF-Dg2" secondAttribute="bottom" id="io9-3y-PhT"/>
<constraint firstItem="QNE-oF-Dg2" firstAttribute="top" secondItem="QCm-8w-GYq" secondAttribute="top" id="rEX-UP-wtm"/>
</constraints>
</scrollView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YxY-tL-LNp">
<rect key="frame" x="10" y="607" width="355" height="50"/>
<color key="backgroundColor" name="ThemeRed"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="ovz-hv-tiz"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="동의">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="O1T-1R-Sun" firstAttribute="trailing" secondItem="YxY-tL-LNp" secondAttribute="trailing" constant="10" id="0d1-Ha-rwv"/>
<constraint firstAttribute="trailing" secondItem="QCm-8w-GYq" secondAttribute="trailing" constant="10" id="6AJ-KL-uF2"/>
<constraint firstItem="O1T-1R-Sun" firstAttribute="bottom" secondItem="YxY-tL-LNp" secondAttribute="bottom" constant="10" id="Edp-5g-SCB"/>
<constraint firstItem="QCm-8w-GYq" firstAttribute="top" secondItem="O1T-1R-Sun" secondAttribute="top" constant="10" id="YIO-Ur-ddb"/>
<constraint firstItem="YxY-tL-LNp" firstAttribute="leading" secondItem="O1T-1R-Sun" secondAttribute="leading" constant="10" id="hOf-Vv-NH1"/>
<constraint firstItem="QCm-8w-GYq" firstAttribute="leading" secondItem="9Uc-9s-KgO" secondAttribute="leading" constant="10" id="irW-Ts-6hU"/>
<constraint firstItem="YxY-tL-LNp" firstAttribute="top" secondItem="QCm-8w-GYq" secondAttribute="bottom" constant="10" id="uSg-Rk-SHK"/>
</constraints>
<viewLayoutGuide key="safeArea" id="O1T-1R-Sun"/>
</view>
<navigationItem key="navigationItem" id="GWB-QQ-gob"/>
<size key="freeformSize" width="375" height="667"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="847.20000000000005" y="232.53373313343329"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="4hD-IF-Ole">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="ytk-Td-pWB" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="3Rq-r7-gWU">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="HSb-ou-7T5" kind="relationship" relationship="rootViewController" id="cBk-nq-fPm"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="amX-JA-cxe" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-92" y="232.53373313343329"/>
</scene>
</scenes>
<resources>
<image name="checkBlue" width="24" height="24"/>
<namedColor name="ThemeBlack">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</namedColor>
<namedColor name="ThemeRed">
<color red="0.92941176470588238" green="0.10588235294117647" blue="0.14117647058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<namedColor name="ThemeText">
<color red="0.28999999165534973" green="0.28999999165534973" blue="0.28999999165534973" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
</resources>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>

73
GME Remit/Modules/ManageAgreement/User Interface/View/ManageAgreementViewController.swift

@ -0,0 +1,73 @@
//
// ManageAgreementViewController.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
import RxSwift
import RxCocoa
class ManageAgreementViewController: UIViewController {
// MARK: Properties
var presenter: ManageAgreementPresenter!
private let disposeBag = DisposeBag()
// MARK: Computed Properties
// MARK: IBOutlets
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}
// MARK: IBActions
}
// MARK: Other Functions
extension ManageAgreementViewController {
private func setup() {
setUI()
setBinding()
setUIBinding()
}
private func setUI() {
}
private func setUIBinding() {
}
private func setBinding() {
let input = ManageAgreementPresenter.Input()
let output = presenter.transform(input: input)
output.isError
.drive(
onNext: { self.alert(type: .error, message: $0.localizedDescription) }
).disposed(by: disposeBag)
output.isProgress
.drive(
onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() }
).disposed(by: disposeBag)
}
}

47
GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframe.swift

@ -0,0 +1,47 @@
//
// ManageAgreementWireframe.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
enum PDFType {
case test1
}
class ManageAgreementWireframe {
weak var view: UIViewController!
}
extension ManageAgreementWireframe: ManageAgreementWireframeInput {
var storyboardName: String {return "ManageAgreement"}
func getMainView() -> UIViewController {
let service = ManageAgreementService()
let interactor = ManageAgreementInteractor(service: service)
let presenter = ManageAgreementPresenter()
let viewController = viewControllerFromStoryboard(of: ManageAgreementViewController.self)
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
presenter.wireframe = self
view = viewController
return viewController
}
func pushWithNavigation(on source: UIViewController) {
let vc = getMainView()
source.navigationController?.pushViewController(vc, animated: true)
}
func goAgreementPDF(type: PDFType) {
let pdfVC = PDFViewController(nibName: "PDFViewController", bundle: nil)
view.navigationController?.pushViewController(pdfVC, animated: true)
}
}

13
GME Remit/Modules/ManageAgreement/User Interface/Wireframe/ManageAgreementWireframeInput.swift

@ -0,0 +1,13 @@
//
// ManageAgreementWireframeInput.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
protocol ManageAgreementWireframeInput: WireframeInput {
func goAgreementPDF(type: PDFType)
}

6
GME Remit/MultiLanguages/uz.lproj/Localizable.strings

@ -579,9 +579,9 @@
"bank_placeholder_text" = "Bankni yoki Karta Turini Tanlang"; "bank_placeholder_text" = "Bankni yoki Karta Turini Tanlang";
"branch_placeholder_text" = "Filialni tanlang"; "branch_placeholder_text" = "Filialni tanlang";
"account_placeholder_text" = "Bank Karta Raqami"; "account_placeholder_text" = "Bank Karta Raqami";
"first_name_placeholder_text" = "Ismingizni kiriting";
"middle_name_placeholder_text" = "Otangiz ismini kiriting";
"last_name_placeholder_text" = "Familiyani kiriting";
"first_name_placeholder_text" = "Ismini kiriting (Oluvchining)";
"middle_name_placeholder_text" = "Otasining ismini kiriting";
"last_name_placeholder_text" = "Familya kiriting";
"full_name_placeholder_text" = "To‘liq ism-sharifni kiriting"; "full_name_placeholder_text" = "To‘liq ism-sharifni kiriting";
"first_name_local_placeholder_text" = "Ismingizni o'z tilingizda kiriting"; "first_name_local_placeholder_text" = "Ismingizni o'z tilingizda kiriting";
"middle_name_local_placeholder_text" = "Otangizning ismini o'z tilingizda kiriting"; "middle_name_local_placeholder_text" = "Otangizning ismini o'z tilingizda kiriting";

42
GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.swift

@ -0,0 +1,42 @@
//
// PDFViewController.swift
// GME Remit
//
// Created by InKwon James Kim on 2019/12/23.
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
import PDFKit
struct PDFConfiguration {
var title = "PDF TITLE"
var autoScales = true
}
class PDFViewController: UIViewController {
@IBOutlet private weak var pdfView: PDFView!
var url: String?
private var configure = PDFConfiguration()
override func viewDidLoad() {
super.viewDidLoad()
pdfView.autoScales = configure.autoScales
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setupNormalNavigation()
title = configure.title
guard let urlString = url, let url = URL(string: urlString) else { return }
let document = PDFDocument(url: url)
pdfView.document = document
}
}

38
GME Remit/Utilities/CustomUI/PDFVIewer/PDFViewController.xib

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PDFViewController" customModule="GME_Remit" customModuleProvider="target">
<connections>
<outlet property="pdfView" destination="CRQ-0d-l3v" id="i3w-94-zHh"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CRQ-0d-l3v">
<rect key="frame" x="10" y="10" width="394" height="842"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
</view>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="CRQ-0d-l3v" secondAttribute="trailing" constant="10" id="Ide-77-053"/>
<constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="CRQ-0d-l3v" secondAttribute="bottom" constant="10" id="Mt1-RF-CWC"/>
<constraint firstItem="CRQ-0d-l3v" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="10" id="Y5r-8D-MlU"/>
<constraint firstItem="CRQ-0d-l3v" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="10" id="cM1-Fo-AB8"/>
</constraints>
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
<point key="canvasLocation" x="171" y="161"/>
</view>
</objects>
</document>
Loading…
Cancel
Save