Browse Source

validation added in registration

pull/1/head
gme_2 6 years ago
parent
commit
5db188546d
  1. 2
      GMERemittance/AppDelegate.swift
  2. 4
      GMERemittance/Module/Login/User Interface/Wireframe/LoginWireframe.swift
  3. 26
      GMERemittance/Module/Register/Application Logic/Interactor/RegisterInteractor.swift
  4. 2
      GMERemittance/Module/Register/Application Logic/Interactor/RegisterInteractorIO.swift
  5. 7
      GMERemittance/Module/Register/User Interface/Presenter/RegisterPresenter.swift
  6. 31
      GMERemittance/Module/Register/User Interface/View/Register.storyboard
  7. 20
      GMERemittance/Module/Register/User Interface/View/RegisterViewController.swift
  8. 3
      GMERemittance/Module/Register/User Interface/View/RegisterViewInterface.swift

2
GMERemittance/AppDelegate.swift

@ -129,9 +129,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
let alert = aps["alert"] as? NSDictionary, let alert = aps["alert"] as? NSDictionary,
let _ = alert["body"] as? String, let _ = alert["body"] as? String,
let _ = alert["title"] as? String { let _ = alert["title"] as? String {
// print("Title: \(title) \nBody:\(body)")
let codeID = userInfo["code"] as? String let codeID = userInfo["code"] as? String
// print("code", codeID!)
self.redirectWithPushNotification(notificationCode: codeID!) self.redirectWithPushNotification(notificationCode: codeID!)
} }

4
GMERemittance/Module/Login/User Interface/Wireframe/LoginWireframe.swift

@ -11,6 +11,7 @@ import UIKit
class LoginWireframe { class LoginWireframe {
weak var view: UIViewController! weak var view: UIViewController!
lazy var mainWireframe = MainWireframe.shared lazy var mainWireframe = MainWireframe.shared
lazy var registerWireframe = RegisterWireframe()
} }
@ -39,6 +40,9 @@ extension LoginWireframe: LoginWireframeInput {
} }
func register() { func register() {
if let navigation = self.view.navigationController {
self.registerWireframe.pushMainView(in: navigation)
}
} }

26
GMERemittance/Module/Register/Application Logic/Interactor/RegisterInteractor.swift

@ -56,11 +56,36 @@ class RegisterInteractor {
return "172017F9EC11222E8107142733" return "172017F9EC11222E8107142733"
} }
// MARK: Converting entities // MARK: Converting entities
private func isValid(userName: String, password: String, confirmPassword: String) -> (isValid: Bool, error: Error){
var error = ""
var isValid = true
if userName.isEmpty {
error = error + "Username field is required."; isValid = false}
if password.isEmpty {
error = error + "\n Password filed is required."
isValid = false
}else {
if password != confirmPassword {
error = error + "\n Passwords do not match."
}
}
let _error = NSError.init(domain: "LoginInteractor", code: 0, userInfo: [NSLocalizedDescriptionKey : error])
return (isValid, _error)
}
} }
extension RegisterInteractor: RegisterInteractorInput { extension RegisterInteractor: RegisterInteractorInput {
func register(model: RegisterRequestModel) { func register(model: RegisterRequestModel) {
let validationResult = self.isValid(userName: model.username ?? "", password: model.password ?? "", confirmPassword: model.confirmPassword ?? "")
if !validationResult.isValid {
self.output?.show(error: validationResult.error)
return
}
model.uuid = self.getUUid() model.uuid = self.getUUid()
model.appVersion = self.getAppVersion() model.appVersion = self.getAppVersion()
model.phoneBrand = self.getPhoneBrand() model.phoneBrand = self.getPhoneBrand()
@ -68,7 +93,6 @@ extension RegisterInteractor: RegisterInteractorInput {
model.osVersion = self.getOsVersion() model.osVersion = self.getOsVersion()
model.fcmId = self.getFcmToken() model.fcmId = self.getFcmToken()
let clientId = self.getCliendId() let clientId = self.getCliendId()
let params = model.serialize() let params = model.serialize()

2
GMERemittance/Module/Register/Application Logic/Interactor/RegisterInteractorIO.swift

@ -11,5 +11,5 @@ protocol RegisterInteractorInput: class {
} }
protocol RegisterInteractorOutput: class { protocol RegisterInteractorOutput: class {
func show(error: Error)
} }

7
GMERemittance/Module/Register/User Interface/Presenter/RegisterPresenter.swift

@ -23,14 +23,19 @@ class RegisterPresenter {
extension RegisterPresenter: RegisterModuleInterface { extension RegisterPresenter: RegisterModuleInterface {
func register(model: RegisterRequestModel) { func register(model: RegisterRequestModel) {
self.view?.showLoading()
self.interactor?.register(model: model) self.interactor?.register(model: model)
} }
} }
// MARK: Register interactor output interface // MARK: Register interactor output interface
extension RegisterPresenter: RegisterInteractorOutput { extension RegisterPresenter: RegisterInteractorOutput {
func show(error: Error) {
self.view?.hideLoading()
self.view?.show(error: error.localizedDescription)
}
} }

31
GMERemittance/Module/Register/User Interface/View/Register.storyboard

@ -36,8 +36,8 @@
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TMW-5D-0hw"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TMW-5D-0hw">
<rect key="frame" x="0.0" y="0.0" width="375" height="647"/> <rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
<subviews> <subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="top" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="vrJ-M3-5iK">
<rect key="frame" x="24" y="10" width="327" height="368"/>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="vrJ-M3-5iK">
<rect key="frame" x="33.5" y="10" width="308" height="368"/>
<subviews> <subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="gU9-fS-TB7"> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="gU9-fS-TB7">
<rect key="frame" x="0.0" y="0.0" width="308" height="94"/> <rect key="frame" x="0.0" y="0.0" width="308" height="94"/>
@ -69,19 +69,19 @@
</subviews> </subviews>
</stackView> </stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="DJI-ZZ-kWX"> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="DJI-ZZ-kWX">
<rect key="frame" x="0.0" y="134" width="327" height="234"/>
<rect key="frame" x="0.0" y="134" width="308" height="234"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YUk-vg-Zt9"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YUk-vg-Zt9">
<rect key="frame" x="0.0" y="0.0" width="327" height="234"/>
<rect key="frame" x="0.0" y="0.0" width="308" height="234"/>
<subviews> <subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="NaH-Uc-Yjv"> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="NaH-Uc-Yjv">
<rect key="frame" x="0.0" y="0.0" width="327" height="234"/>
<rect key="frame" x="0.0" y="0.0" width="308" height="234"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fBU-1H-LYY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fBU-1H-LYY">
<rect key="frame" x="0.0" y="0.0" width="327" height="78"/>
<rect key="frame" x="0.0" y="0.0" width="308" height="78"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RF1-Bx-jNz"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RF1-Bx-jNz">
<rect key="frame" x="0.0" y="7" width="327" height="15"/>
<rect key="frame" x="0.0" y="7" width="308" height="15"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="15" id="U4l-X1-cc5"/> <constraint firstAttribute="height" constant="15" id="U4l-X1-cc5"/>
</constraints> </constraints>
@ -90,7 +90,7 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email/Mobile No." textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Uss-1a-WgB"> <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email/Mobile No." textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Uss-1a-WgB">
<rect key="frame" x="0.0" y="29" width="327" height="43"/>
<rect key="frame" x="0.0" y="29" width="308" height="43"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="43" id="CjB-7P-lLX"/> <constraint firstAttribute="height" constant="43" id="CjB-7P-lLX"/>
</constraints> </constraints>
@ -115,10 +115,10 @@
</constraints> </constraints>
</view> </view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="omE-4z-Nti"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="omE-4z-Nti">
<rect key="frame" x="0.0" y="78" width="327" height="78"/>
<rect key="frame" x="0.0" y="78" width="308" height="78"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XxD-eR-5bJ"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XxD-eR-5bJ">
<rect key="frame" x="0.0" y="10" width="327" height="15"/>
<rect key="frame" x="0.0" y="10" width="308" height="15"/>
<constraints> <constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="DG5-ig-z9o"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="DG5-ig-z9o"/>
<constraint firstAttribute="height" constant="15" id="DdP-uQ-CKB"/> <constraint firstAttribute="height" constant="15" id="DdP-uQ-CKB"/>
@ -128,7 +128,7 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Create Password" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="64u-wX-SQo"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Create Password" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="64u-wX-SQo">
<rect key="frame" x="0.0" y="32" width="327" height="43"/>
<rect key="frame" x="0.0" y="32" width="308" height="43"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="43" id="v8S-IB-gIP"/> <constraint firstAttribute="height" constant="43" id="v8S-IB-gIP"/>
</constraints> </constraints>
@ -151,10 +151,10 @@
</constraints> </constraints>
</view> </view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tDL-Sq-1fu"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tDL-Sq-1fu">
<rect key="frame" x="0.0" y="156" width="327" height="78"/>
<rect key="frame" x="0.0" y="156" width="308" height="78"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Confirm Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KBS-4G-SD1"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Confirm Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KBS-4G-SD1">
<rect key="frame" x="0.0" y="10" width="327" height="15"/>
<rect key="frame" x="0.0" y="10" width="308" height="15"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="15" id="2TV-Bk-yUv"/> <constraint firstAttribute="height" constant="15" id="2TV-Bk-yUv"/>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="y7m-hf-pxk"/> <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="15" id="y7m-hf-pxk"/>
@ -164,7 +164,7 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm Password" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="tpF-H6-N6v"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm Password" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="tpF-H6-N6v">
<rect key="frame" x="0.0" y="32" width="327" height="43"/>
<rect key="frame" x="0.0" y="32" width="308" height="43"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="43" id="PaW-a8-N5z"/> <constraint firstAttribute="height" constant="43" id="PaW-a8-N5z"/>
</constraints> </constraints>
@ -258,9 +258,8 @@
<constraint firstItem="uDy-XD-Zh8" firstAttribute="centerX" secondItem="TMW-5D-0hw" secondAttribute="centerX" constant="3" id="M5y-Kg-bad"/> <constraint firstItem="uDy-XD-Zh8" firstAttribute="centerX" secondItem="TMW-5D-0hw" secondAttribute="centerX" constant="3" id="M5y-Kg-bad"/>
<constraint firstItem="ruL-lG-yjF" firstAttribute="top" secondItem="uDy-XD-Zh8" secondAttribute="bottom" constant="29" id="Z7l-91-cMl"/> <constraint firstItem="ruL-lG-yjF" firstAttribute="top" secondItem="uDy-XD-Zh8" secondAttribute="bottom" constant="29" id="Z7l-91-cMl"/>
<constraint firstAttribute="bottom" secondItem="ruL-lG-yjF" secondAttribute="bottom" priority="250" constant="146" id="cOb-0s-AFE"/> <constraint firstAttribute="bottom" secondItem="ruL-lG-yjF" secondAttribute="bottom" priority="250" constant="146" id="cOb-0s-AFE"/>
<constraint firstItem="vrJ-M3-5iK" firstAttribute="leading" secondItem="TMW-5D-0hw" secondAttribute="leading" constant="24" id="jJR-iz-2pY"/>
<constraint firstItem="vrJ-M3-5iK" firstAttribute="centerX" secondItem="TMW-5D-0hw" secondAttribute="centerX" id="p7R-us-Zjp"/>
<constraint firstItem="ruL-lG-yjF" firstAttribute="centerX" secondItem="TMW-5D-0hw" secondAttribute="centerX" id="pCV-8t-3yI"/> <constraint firstItem="ruL-lG-yjF" firstAttribute="centerX" secondItem="TMW-5D-0hw" secondAttribute="centerX" id="pCV-8t-3yI"/>
<constraint firstAttribute="trailing" secondItem="vrJ-M3-5iK" secondAttribute="trailing" constant="24" id="y6k-fw-AgQ"/>
</constraints> </constraints>
<viewLayoutGuide key="safeArea" id="Qj5-Tz-cjD"/> <viewLayoutGuide key="safeArea" id="Qj5-Tz-cjD"/>
</view> </view>

20
GMERemittance/Module/Register/User Interface/View/RegisterViewController.swift

@ -34,15 +34,6 @@ class RegisterViewController: UIViewController {
} }
// ClientId
// AppVersion
// phoneBrand
// phoneOs
// deviceId
// osVersion
@IBAction func register(_ sender: UIButton) { @IBAction func register(_ sender: UIButton) {
let email = self.emailTextField.text! let email = self.emailTextField.text!
let password = self.passwordTextField.text! let password = self.passwordTextField.text!
@ -60,11 +51,22 @@ class RegisterViewController: UIViewController {
private func setup() { private func setup() {
// all setup should be done here // all setup should be done here
self.setupPicturedNavBar()
} }
} }
// MARK: RegisterViewInterface // MARK: RegisterViewInterface
extension RegisterViewController: RegisterViewInterface { extension RegisterViewController: RegisterViewInterface {
func showLoading() {
self.showProgressHud()
}
func hideLoading() {
self.hideProgressHud()
}
func show(error: String) {
self.alert(message: error)
}
} }

3
GMERemittance/Module/Register/User Interface/View/RegisterViewInterface.swift

@ -7,4 +7,7 @@
// //
protocol RegisterViewInterface: class { protocol RegisterViewInterface: class {
func showLoading()
func hideLoading()
func show(error: String)
} }
Loading…
Cancel
Save