Browse Source

reciepient converted to viewmodelc

pull/1/head
gme_2 6 years ago
parent
commit
21240092d7
  1. 23
      GMERemittance/Module/EditReciepient/Application Logic/Interactor/EditReciepientInteractor.swift
  2. 8
      GMERemittance/Module/EditReciepient/Application Logic/Interactor/EditReciepientInteractorIO.swift
  3. 2
      GMERemittance/Module/EditReciepient/Application Logic/Service/EditReciepientServiceType.swift
  4. 3
      GMERemittance/Module/EditReciepient/Module Interface/EditReciepientModuleInterface.swift
  5. 125
      GMERemittance/Module/EditReciepient/User Interface/Presenter/EditReciepientPresenter.swift
  6. 371
      GMERemittance/Module/EditReciepient/User Interface/View/EditReciepient.storyboard
  7. 250
      GMERemittance/Module/EditReciepient/User Interface/View/EditReciepientViewController.swift
  8. 8
      GMERemittance/Module/EditReciepient/User Interface/View/EditReciepientViewInterface.swift
  9. 10
      GMERemittance/Module/EditReciepient/User Interface/Wireframe/EditReciepientWireframe.swift
  10. 1
      GMERemittance/Recipient/RecipientListViewController.swift

23
GMERemittance/Module/EditReciepient/Application Logic/Interactor/EditReciepientInteractor.swift

@ -14,18 +14,37 @@ class EditReciepientInteractor {
weak var output: EditReciepientInteractorOutput?
private let service: EditReciepientServiceType
var reciepient: Recipient
// MARK: Initialization
init(service: EditReciepientServiceType) {
init(service: EditReciepientServiceType, reciepient: Recipient) {
self.service = service
self.reciepient = reciepient
}
// MARK: Converting entities
}
// MARK: EditReciepient interactor input interface
extension EditReciepientInteractor: EditReciepientInteractorInput {
func viewIsReady() {
self.output?.show(recipient: self.reciepient)
self.service.fetch(success: { (model) in
self.output?.show(model: model)
}) { (error) in
self.output?.show(error: error)
}
}
func save(reciepient: Recipient) {
let defaults = UserDefaults.standard
let myUsername = defaults.string(forKey: "com.gmeremit.username") ?? ""
self.service.save(model: reciepient.serialize(), username: myUsername, success: { (reciepient) in
self.output?.success()
}) { (error) in
self.output?.show(error: error)
}
}
}

8
GMERemittance/Module/EditReciepient/Application Logic/Interactor/EditReciepientInteractorIO.swift

@ -7,9 +7,13 @@
//
protocol EditReciepientInteractorInput: class {
func viewIsReady()
func save(reciepient: Recipient)
}
protocol EditReciepientInteractorOutput: class {
func show(error: Error)
func show(model: SendMoneyModel?)
func success()
func show(recipient: Recipient)
}

2
GMERemittance/Module/EditReciepient/Application Logic/Service/EditReciepientServiceType.swift

@ -8,6 +8,6 @@
import Foundation
protocol EditReciepientServiceType: class {
protocol EditReciepientServiceType: class, FetchSendMoneyInformation, SaveReciepientService {
}

3
GMERemittance/Module/EditReciepient/Module Interface/EditReciepientModuleInterface.swift

@ -7,5 +7,6 @@
//
protocol EditReciepientModuleInterface: class {
func viewIsReady()
func save(model: ReceipientViewModel)
}

125
GMERemittance/Module/EditReciepient/User Interface/Presenter/EditReciepientPresenter.swift

@ -10,23 +10,146 @@ import Foundation
class EditReciepientPresenter {
// MARK: Properties
// MARK: Properties
var transferReasons: [TransferReason] = []
var relations: [Relation] = []
var countries: [CountryModel] = []
weak var view: EditReciepientViewInterface?
var interactor: EditReciepientInteractorInput?
var wireframe: EditReciepientWireframeInput?
// MARK: Converting entities
func convert(models: [CountryModel]) {
let viewmodels: [SendMoneyCountryViewModel] = models.map({
let viewmodel = SendMoneyCountryViewModel()
viewmodel.name = $0.name
viewmodel.code = $0.code
viewmodel.id = $0.id
viewmodel.proviencesRequired = $0.provienceRequired
viewmodel.proviences = self.convert(models: $0.proviences ?? [])
return viewmodel
})
self.view?.show(countries: viewmodels)
}
func convert(models: [Provience]) -> [SendMoneyProvienceViewModel] {
return models.map({
var viewmodel = SendMoneyProvienceViewModel()
viewmodel.name = $0.name
viewmodel.id = $0.id
viewmodel.districts = self.convert(models: $0.districts ?? [])
return viewmodel
})
}
func convert(models: [District]) -> [SendMoneyDistrictViewModel] {
let viewmodels: [SendMoneyDistrictViewModel] = models.map({
let viewmodel = SendMoneyDistrictViewModel()
viewmodel.name = $0.name
viewmodel.id = $0.id
return viewmodel
})
return viewmodels
}
func convert(models: [TransferReason]) {
let viewmodels: [SendMoneyTransferReasonViewModel] = models.map({
var viewmodel = SendMoneyTransferReasonViewModel()
viewmodel.title = $0.title
viewmodel.id = $0.id
return viewmodel
})
self.view?.show(transferReasons: viewmodels)
}
func convert(models: [Relation]) {
let viewmodels: [SendMoneyRelationViewModel] = models.map({
var viemodel = SendMoneyRelationViewModel()
viemodel.title = $0.title
viemodel.id = $0.id
return viemodel
})
self.view?.show(relations: viewmodels)
}
func convert(model: ReceipientViewModel) {
var reciepient = Recipient()
reciepient.firstName = model.firstName
reciepient.middleName = model.middleName
reciepient.lastName = model.lastName
reciepient.countryId = model.countryId
reciepient.stateId = model.stateId
reciepient.districtId = model.districtId
reciepient.address = model.address
reciepient.relationId = model.relationId
reciepient.reasonId = model.reasonId
reciepient.mobileNumber = model.mobileNumber
reciepient.email = model.email
self.interactor?.save(reciepient: reciepient)
}
func convert(model: Recipient) {
let reciepient = ReceipientViewModel()
reciepient.id = model.recipientId
reciepient.firstName = model.firstName
reciepient.middleName = model.middleName
reciepient.lastName = model.lastName
reciepient.countryId = model.countryId
reciepient.stateId = model.stateId
reciepient.districtId = model.districtId
reciepient.address = model.address
reciepient.relationId = model.relationId
reciepient.reasonId = model.reasonId
reciepient.mobileNumber = model.mobileNumber
reciepient.email = model.email
self.view?.show(recipient: reciepient)
}
}
// MARK: EditReciepient module interface
extension EditReciepientPresenter: EditReciepientModuleInterface {
func viewIsReady() {
self.view?.showLoading()
self.interactor?.viewIsReady()
}
func save(model: ReceipientViewModel) {
self.convert(model: model)
}
}
// MARK: EditReciepient interactor output interface
extension EditReciepientPresenter: EditReciepientInteractorOutput {
func show(model: SendMoneyModel?) {
self.transferReasons = model?.transferReasons ?? []
self.relations = model?.relations ?? []
self.countries = model?.countries ?? []
self.view?.hideLoading()
self.convert(models: self.countries)
self.convert(models: self.transferReasons)
self.convert(models: self.relations)
}
func show(error: Error) {
self.view?.hideLoading()
self.view?.show(error: error.localizedDescription)
}
func success() {
print("successfully added")
// self.wireframe?.dismiss()
}
func show(recipient: Recipient) {
}
}

371
GMERemittance/Module/EditReciepient/User Interface/View/EditReciepient.storyboard

@ -1,30 +1,373 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="HSb-ou-7T5">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<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-Regular.otf">
<string>SanFranciscoDisplay-Regular</string>
</array>
<array key="SanFranciscoText-Regular.otf">
<string>SanFranciscoText-Regular</string>
</array>
</customFonts>
<scenes>
<!--EditReciepient-->
<scene sceneID="R60-Pu-Hpy">
<!--Edit Reciepient View Controller-->
<scene sceneID="lea-Vo-MFn">
<objects>
<viewController storyboardIdentifier="EditReciepientViewController" title="EditReciepient" id="HSb-ou-7T5" customClass="EditReciepientViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y1H-iV-BwG"/>
<viewControllerLayoutGuide type="bottom" id="PYB-Kq-ghm"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="9Uc-9s-KgO">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<viewController storyboardIdentifier="EditReciepientViewController" id="kMF-hK-7F1" customClass="EditReciepientViewController" customModule="GMERemittance" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="yoy-Sr-xLN">
<rect key="frame" x="0.0" y="0.0" width="375" height="1143"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3nW-iI-E46">
<rect key="frame" x="0.0" y="20" width="375" height="1123"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M1b-5m-MXH">
<rect key="frame" x="0.0" y="0.0" width="375" height="1000"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="z9e-FF-DG8">
<rect key="frame" x="10" y="0.0" width="355" height="828"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="pjd-YW-ZnH">
<rect key="frame" x="0.0" y="0.0" width="355" height="63"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Who are you sending money to?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gt4-fi-XBm">
<rect key="frame" x="0.0" y="0.0" width="355" height="63"/>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="63" id="JEL-6w-EYR"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="18"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="e9s-tP-DdN">
<rect key="frame" x="0.0" y="68" width="355" height="760"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="a7v-9T-Kcl">
<rect key="frame" x="0.0" y="0.0" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="First Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uA5-jW-mEK">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's first name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9Hx-oK-GHi">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="BFc-f4-Df9"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="XxH-Jy-JZG">
<rect key="frame" x="0.0" y="70" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Middle Name (Optional)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K3e-7G-CJy">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's middle name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Eej-kG-wrd">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="hyU-Gu-CK0"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="5rx-Wn-cUa">
<rect key="frame" x="0.0" y="140" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tkw-bR-Oy9">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's last name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Wd8-zG-klN">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="uAd-ed-1fn"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="QCh-a4-Tx8">
<rect key="frame" x="0.0" y="210" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Country" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="alw-ys-yay">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Select" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DdO-f1-13k">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="dF5-bD-WvK"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="Ju9-Yd-QNB">
<rect key="frame" x="0.0" y="280" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="State/Province" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Ta-4K-fuz">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Select" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3aF-XI-LRm">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="L5Y-xb-hga"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="3v6-GM-odc">
<rect key="frame" x="0.0" y="350" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="District" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Oh-OJ-MbF">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Select" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="c9l-2n-RJY">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="7dg-OF-1iL"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView hidden="YES" opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="bzY-A3-FCG">
<rect key="frame" x="0.0" y="415" width="355" height="43"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="City" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qfo-M5-t8w">
<rect key="frame" x="0.0" y="0.0" width="355" height="0.0"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's City" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="N3C-4L-Ki7">
<rect key="frame" x="0.0" y="0.0" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="ZJj-ea-FF9"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="18"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="9F3-Xx-a4b">
<rect key="frame" x="0.0" y="420" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LNf-pd-Eek">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's Address" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="vGP-fz-jbt">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="aT8-I4-gb5"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="gkA-0g-al0">
<rect key="frame" x="0.0" y="490" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Relation" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cpR-Ig-Yjj">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Select" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="cpV-EL-0Z1">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="4Mm-K7-RVg"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="tiu-zQ-uyv">
<rect key="frame" x="0.0" y="560" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mobile No." textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0EU-CA-Xqg">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's mobile number" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="I91-DE-eBH">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="foA-9z-yu9"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="phonePad"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="0Pw-sK-dSz">
<rect key="frame" x="0.0" y="630" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Email (Optional)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VuB-gh-lpj">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter receiver's email address" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9ed-NF-4Bh">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="gjZ-nr-ohs"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
</textField>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="LKF-1o-Pqq">
<rect key="frame" x="0.0" y="700" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Transfer Reason" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lea-V1-U7a">
<rect key="frame" x="0.0" y="0.0" width="355" height="17"/>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="14"/>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Select" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mXe-ay-5tu">
<rect key="frame" x="0.0" y="17" width="355" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="TWh-Sv-GdZ"/>
</constraints>
<color key="textColor" red="0.2901960784" green="0.2901960784" blue="0.2901960784" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
</subviews>
</stackView>
</subviews>
</stackView>
</subviews>
</stackView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hBn-N7-WLX">
<rect key="frame" x="87.5" y="858" width="200" height="50"/>
<color key="backgroundColor" red="0.92941176469999998" green="0.10980392160000001" blue="0.14117647059999999" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="Pf2-eV-pfK"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="Vvb-MP-l4m"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoText-Regular" family="San Francisco Text" pointSize="18"/>
<state key="normal" title="Save ">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="save:" destination="kMF-hK-7F1" eventType="touchUpInside" id="D6V-Ym-MO4"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="z9e-FF-DG8" firstAttribute="top" secondItem="M1b-5m-MXH" secondAttribute="top" id="FYq-VE-C5d"/>
<constraint firstItem="z9e-FF-DG8" firstAttribute="leading" secondItem="M1b-5m-MXH" secondAttribute="leading" constant="10" id="OJF-Bw-1BS"/>
<constraint firstAttribute="height" constant="1000" id="bXx-uw-JtG"/>
<constraint firstItem="hBn-N7-WLX" firstAttribute="centerX" secondItem="M1b-5m-MXH" secondAttribute="centerX" id="khL-fq-Fte"/>
<constraint firstItem="hBn-N7-WLX" firstAttribute="top" secondItem="z9e-FF-DG8" secondAttribute="bottom" constant="30" id="r2C-BU-ta5"/>
<constraint firstAttribute="trailing" secondItem="z9e-FF-DG8" secondAttribute="trailing" constant="10" id="z5t-F7-IIu"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="M1b-5m-MXH" firstAttribute="leading" secondItem="3nW-iI-E46" secondAttribute="leading" id="A4m-Y7-BVn"/>
<constraint firstAttribute="trailing" secondItem="M1b-5m-MXH" secondAttribute="trailing" id="FSN-Py-5JX"/>
<constraint firstItem="M1b-5m-MXH" firstAttribute="top" secondItem="3nW-iI-E46" secondAttribute="top" id="dbb-ca-Hyc"/>
<constraint firstAttribute="bottom" secondItem="M1b-5m-MXH" secondAttribute="bottom" id="gB9-Bh-n4C"/>
</constraints>
</scrollView>
</subviews>
<color key="backgroundColor" red="0.90588235289999997" green="0.92941176469999998" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="3nW-iI-E46" firstAttribute="trailing" secondItem="3Iv-qS-bw4" secondAttribute="trailing" id="1sh-CD-PKD"/>
<constraint firstItem="3nW-iI-E46" firstAttribute="top" secondItem="3Iv-qS-bw4" secondAttribute="top" id="7wY-aP-mdQ"/>
<constraint firstItem="3nW-iI-E46" firstAttribute="leading" secondItem="3Iv-qS-bw4" secondAttribute="leading" id="Hmp-Uc-oOq"/>
<constraint firstItem="3nW-iI-E46" firstAttribute="bottom" secondItem="3Iv-qS-bw4" secondAttribute="bottom" id="Kxi-YZ-jlI"/>
<constraint firstItem="M1b-5m-MXH" firstAttribute="width" secondItem="yoy-Sr-xLN" secondAttribute="width" id="fiY-Q8-keR"/>
</constraints>
<viewLayoutGuide key="safeArea" id="3Iv-qS-bw4"/>
</view>
<size key="freeformSize" width="375" height="1143"/>
<connections>
<outlet property="addressTextField" destination="vGP-fz-jbt" id="1pN-zR-qH8"/>
<outlet property="countryTextField" destination="DdO-f1-13k" id="wBn-TT-uSg"/>
<outlet property="districtStackView" destination="3v6-GM-odc" id="cOf-hf-cya"/>
<outlet property="districtTextField" destination="c9l-2n-RJY" id="fro-Am-Qzk"/>
<outlet property="emailTextField" destination="9ed-NF-4Bh" id="JKY-4a-kGk"/>
<outlet property="firstNameTextField" destination="9Hx-oK-GHi" id="p0R-9y-ddA"/>
<outlet property="lastNameTextField" destination="Wd8-zG-klN" id="SwR-Rv-7au"/>
<outlet property="middleNameTextField" destination="Eej-kG-wrd" id="qZZ-WV-0Fb"/>
<outlet property="mobileTextField" destination="I91-DE-eBH" id="lCt-uX-rjw"/>
<outlet property="provienceStackView" destination="Ju9-Yd-QNB" id="YnN-ze-HYG"/>
<outlet property="relationTextField" destination="cpV-EL-0Z1" id="GlD-vw-GUi"/>
<outlet property="saveButton" destination="hBn-N7-WLX" id="d0E-Jg-y6d"/>
<outlet property="stateProvinceTextField" destination="3aF-XI-LRm" id="HeN-hq-hZ8"/>
<outlet property="transferReasonTextField" destination="mXe-ay-5tu" id="49A-we-hRd"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="8je-5K-XuW" userLabel="First Responder" sceneMemberID="firstResponder"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="L82-2L-Rzd" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-91" y="233"/>
<point key="canvasLocation" x="5229.6000000000004" y="98.50074962518741"/>
</scene>
</scenes>
<color key="tintColor" red="0.78177064659999995" green="0.55228364470000002" blue="0.018981300289999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

250
GMERemittance/Module/EditReciepient/User Interface/View/EditReciepientViewController.swift

@ -10,29 +10,277 @@ import UIKit
class EditReciepientViewController: UIViewController {
// MARK: IBOutlets
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var middleNameTextField: UITextField!
@IBOutlet weak var lastNameTextField: UITextField!
@IBOutlet weak var countryTextField: UITextField!
@IBOutlet weak var stateProvinceTextField: UITextField!
@IBOutlet weak var districtTextField: UITextField!
@IBOutlet weak var addressTextField: UITextField!
@IBOutlet weak var relationTextField: UITextField!
@IBOutlet weak var mobileTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var transferReasonTextField: UITextField!
@IBOutlet weak var saveButton: UIButton!
@IBOutlet weak var provienceStackView: UIStackView!
@IBOutlet weak var districtStackView: UIStackView!
// MARK: Properties
var presenter: EditReciepientModuleInterface?
var countries: [SendMoneyCountryViewModel]?
var transferReasons: [SendMoneyTransferReasonViewModel]?
var relations: [SendMoneyRelationViewModel]?
var reciepient: ReceipientViewModel?
// MARK: IBOutlets
var selectedCountry: SendMoneyCountryViewModel? {
didSet {
self.countryTextField.text = selectedCountry?.name
let shouldShowProvienceField = (selectedCountry?.proviencesRequired ?? "" ) == "true"
self.provienceStackView.isHidden = !shouldShowProvienceField
self.districtStackView.isHidden = !shouldShowProvienceField
self.reciepient?.countryId = self.selectedCountry?.id
}
}
var selectedProvience: SendMoneyProvienceViewModel? {
didSet {
self.stateProvinceTextField.text = selectedProvience?.name
self.reciepient?.stateId = self.selectedProvience?.id
}
}
var selectedDistrict: SendMoneyDistrictViewModel? {
didSet {
self.districtTextField.text = selectedDistrict?.name
self.reciepient?.districtId = self.selectedDistrict?.id
}
}
var selectedRelation: SendMoneyRelationViewModel? {
didSet {
self.relationTextField.text = selectedRelation?.title
self.reciepient?.relationId = self.selectedRelation?.id
}
}
var selectedTransferReason: SendMoneyTransferReasonViewModel? {
didSet {
self.transferReasonTextField.text = selectedTransferReason?.title
self.reciepient?.reasonId = selectedTransferReason?.id
}
}
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
self.setup()
self.setupDelegates()
self.setupTargets()
self.populateInformations()
}
// MARK: IBActions
// MARK: Other Functions
private func setup() {
// all setup should be done here
self.setupNavigation()
self.configureView()
}
private func configureView() {
self.provienceStackView.isHidden = true
self.districtStackView.isHidden = true
}
private func setupDelegates() {
self.countryTextField.delegate = self
self.stateProvinceTextField.delegate = self
self.districtTextField.delegate = self
self.relationTextField.delegate = self
self.transferReasonTextField.delegate = self
}
private func setupTargets() {
[firstNameTextField, middleNameTextField, lastNameTextField, countryTextField, stateProvinceTextField, districtTextField, addressTextField, relationTextField, mobileTextField, emailTextField, transferReasonTextField].forEach({
$0?.addTarget(self, action: #selector(self.textFieldChanged(sender:)), for: UIControlEvents.editingChanged)
})
}
@objc private func textFieldChanged(sender: UITextField) {
switch sender {
case firstNameTextField:
self.reciepient?.firstName = firstNameTextField.text!
case middleNameTextField:
self.reciepient?.middleName = middleNameTextField.text!
case lastNameTextField:
self.reciepient?.lastName = lastNameTextField.text!
case addressTextField:
self.reciepient?.address = addressTextField.text!
case mobileTextField:
self.reciepient?.mobileNumber = mobileTextField.text!
case emailTextField:
self.reciepient?.email = emailTextField.text!
default:
break
}
}
private func populateInformations() {
print(self.reciepient?.firstName)
}
private func setupNavigation() {
self.navigationItem.backBarButtonItem?.image =
#imageLiteral(resourceName: "backIconBlack")
self.navigationController?.navigationBar.tintColor = UIColor.black
}
private func showCountryPickerview() {
let viewcontroller = UIStoryboard.init(name: "CountryPicker", bundle: nil).instantiateViewController(withIdentifier: "CountryPickerViewController") as! CountryPickerViewController
viewcontroller.data = self.countries ?? []
viewcontroller.doneAction = self.countrySelected
viewcontroller.defaultSelectedData = [self.selectedCountry]
viewcontroller.type = PickerTitle.country
self.present(viewcontroller, animated: true, completion: nil)
}
private func getPickerViewController()-> ItemsPickerViewController {
return UIStoryboard.init(name: "ItemsPicker", bundle: nil).instantiateViewController(withIdentifier: "ItemsPickerViewController") as! ItemsPickerViewController
}
private func showProviencePickerview() {
let viewcontroller = self.getPickerViewController()
let proviences = self.selectedCountry?.proviences ?? []
let names = proviences.compactMap({$0.name})
viewcontroller.data = names
viewcontroller.type = PickerTitle.state
viewcontroller.doneAction = self.provienceSelected
viewcontroller.defaultSelectedData = [self.selectedProvience?.name ?? ""]
self.present(viewcontroller, animated: true, completion: nil)
}
private func showDistrictPickerview() {
let viewcontroller = self.getPickerViewController()
let districts = self.selectedProvience?.districts ?? []
let names = districts.compactMap({$0.name})
viewcontroller.data = names
viewcontroller.type = PickerTitle.district
viewcontroller.doneAction = self.districtSelected
viewcontroller.defaultSelectedData = [self.selectedDistrict?.name ?? ""]
self.present(viewcontroller, animated: true, completion: nil)
}
private func showRelationPickerView() {
let viewcontroller = self.getPickerViewController()
let relations = self.relations ?? []
let names = relations.compactMap({$0.title})
viewcontroller.data = names
viewcontroller.type = PickerTitle.relation
viewcontroller.doneAction = self.relationSelected
viewcontroller.defaultSelectedData = [self.selectedRelation?.title ?? ""]
self.present(viewcontroller, animated: true, completion: nil)
}
private func showTransferReasonPickerView() {
let viewcontroller = self.getPickerViewController()
let transferReasons = self.transferReasons ?? []
let names = transferReasons.compactMap({$0.title})
viewcontroller.data = names
viewcontroller.type = PickerTitle.transferReasons
viewcontroller.doneAction = self.transferReasonSelected
viewcontroller.defaultSelectedData = [self.selectedTransferReason?.title ?? ""]
self.present(viewcontroller, animated: true, completion: nil)
}
func transferReasonSelected(reasons: [String]) {
let _reason = self.transferReasons?.filter({($0.title ?? "") == (reasons.first ?? "") }).first
self.selectedTransferReason = _reason
}
func relationSelected(relations: [String]) {
let _relations = self.relations?.filter({($0.title ?? "") == (relations.first ?? "") }).first
self.selectedRelation = _relations
}
func districtSelected(district: [String]) {
let _district = (self.selectedProvience?.districts ?? []).filter({
( $0.name ?? "" ) == ( district.first ?? "" )
}).first
self.selectedDistrict = _district
}
func provienceSelected(provience: [String]) {
let _provience = (self.selectedCountry?.proviences ?? []).filter({
($0.name ?? "") == (provience.first ?? "")
})
self.selectedProvience = _provience.first
}
func countrySelected(models: [SendMoneyCountryViewModel]) {
self.selectedCountry = models.first
}
func showLoading() {
self.showProgressHud()
}
func hideLoading() {
self.hideProgressHud()
}
func show(error: String) {
self.alert(message: error)
}
}
// MARK: EditReciepientViewInterface
extension EditReciepientViewController: EditReciepientViewInterface {
func show(countries: [SendMoneyCountryViewModel]) {
self.countries = countries
}
func show(transferReasons: [SendMoneyTransferReasonViewModel]) {
self.transferReasons = transferReasons
}
func show(relations: [SendMoneyRelationViewModel]) {
self.relations = relations
}
}
extension EditReciepientViewController: UITextFieldDelegate {
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
switch textField {
case countryTextField:
showCountryPickerview()
return false
case stateProvinceTextField:
self.showProviencePickerview()
return false
case districtTextField:
self.showDistrictPickerview()
return false
case relationTextField:
self.showRelationPickerView()
return false
case transferReasonTextField:
self.showTransferReasonPickerView()
return false
default:
return true
}
}
}

8
GMERemittance/Module/EditReciepient/User Interface/View/EditReciepientViewInterface.swift

@ -7,5 +7,11 @@
//
protocol EditReciepientViewInterface: class {
func show(error: String)
func show(countries: [SendMoneyCountryViewModel])
func show(transferReasons: [SendMoneyTransferReasonViewModel])
func show(relations: [SendMoneyRelationViewModel])
func show(recipient: ReceipientViewModel)
func showLoading()
func hideLoading()
}

10
GMERemittance/Module/EditReciepient/User Interface/Wireframe/EditReciepientWireframe.swift

@ -10,6 +10,7 @@ import UIKit
class EditReciepientWireframe {
weak var view: UIViewController!
var receipient: Recipient!
}
extension EditReciepientWireframe: EditReciepientWireframeInput {
@ -18,10 +19,10 @@ extension EditReciepientWireframe: EditReciepientWireframeInput {
func getMainView() -> UIViewController {
let service = EditReciepientService()
let interactor = EditReciepientInteractor(service: service)
let interactor = EditReciepientInteractor.init(service: service, reciepient: receipient)
let presenter = EditReciepientPresenter()
let viewController = viewControllerFromStoryboard(of: EditReciepientViewController.self)
viewController.presenter = presenter
interactor.output = presenter
presenter.interactor = interactor
@ -31,4 +32,9 @@ extension EditReciepientWireframe: EditReciepientWireframeInput {
self.view = viewController
return viewController
}
func open(reciepient: Recipient) {
self.receipient = reciepient
}
}

1
GMERemittance/Recipient/RecipientListViewController.swift

@ -140,6 +140,7 @@ extension RecipientListViewController: UITableViewDelegate,UITableViewDataSource
}
let edit = UITableViewRowAction(style: .normal, title: "Edit") { (action, indexPath) in
let wireFrame = EditReciepientWireframe()
}

Loading…
Cancel
Save