Files
Woka_Native_iOS/WOKA/Authentication/Controller/UserDetailsRegisterVC.swift
BilalKhanWDI d654dba8fe - TC 18, TC 20, TC 21, TC 23, TC 25, TC 26, TC 27, TC 28, TC 30, TC 33, TC 34, TC 37, TC 38
- Fixed contact support name error , if user goes back it used to display on top
2024-08-22 19:55:17 +05:30

161 lines
6.2 KiB
Swift

//
// UserDetailsRegisterVC.swift
// WOKA
//
// Created by MacBook Pro on 29/04/24.
//
import UIKit
class UserDetailsRegisterVC : UIViewController{
@IBOutlet weak var nextBtn: LocalisedElementsButton!
@IBOutlet weak var enterNameTF: TextFieldShadow!
@IBOutlet weak var enterUserNameTF: TextFieldShadow!
@IBOutlet weak var enterPasswordTF: TextFieldShadow!
@IBOutlet weak var dontSharePassLabel: LocalisedElementsLabel!
@IBOutlet weak var viewTitleLabel: LocalisedElementsLabel!
@IBOutlet weak var userNameTitleLabel: LocalisedElementsLabel!
@IBOutlet weak var nameTitleLabel: LocalisedElementsLabel!
@IBOutlet weak var passTitleLabel: LocalisedElementsLabel!
var vm = UserDetailsRegisterVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
enterNameTF.hideError()
enterUserNameTF.hideError()
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
// MARK: - Button Tap Handler
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
PersistentStorage.shared.addOthersCount()
guard let name = enterNameTF.text?.trimmingCharacters(in: .whitespaces) ,let userName = enterUserNameTF.text?.trimmingCharacters(in: .whitespaces) , let pass = enterPasswordTF.text?.trimmingCharacters(in: .whitespaces) else{return}
/*
Check for username, minimum 3 letters required
*/
if userName.count == 0{
enterUserNameTF.rightView?.isHidden = false
enterUserNameTF.setError(K.ConstantString.enterUserName.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue), show: true)
return
}
if userName.count < 3{
enterUserNameTF.rightView?.isHidden = false
enterUserNameTF.setError(K.ConstantString.shortUsername.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue), show: true)
return
}
/*
Check for name
*/
if name.count == 0{
enterNameTF.rightView?.isHidden = false
enterNameTF.setError(K.ConstantString.enterName.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue) , show: true)
return
}
if name.count < 2{
enterNameTF.rightView?.isHidden = false
enterNameTF.setError("Name is too short.".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue) , show: true)
return
}
/*
Check for password
*/
if pass.count < 6{
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
vcPush.contentLabel = K.ConstantString.shortPass.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
vcPush.mainTitleText = K.ConstantString.error.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
// vcPush.onDoneBlock = { isDone in }
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
self.present(vcPush, animated: true)
return
}
/*
Check if the username exist or not
*/
vm.checkUsernameExist { isDone in
if isDone{
/*
Initializing our local data store for user Register
*/
AuthFunc.shareInstance.regData.full_name = name
AuthFunc.shareInstance.regData.username = userName
AuthFunc.shareInstance.regData.password = pass
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userIntrestVC) as! UserIntrestVC
vc.vm.createChildAccount = true
self.navigationController?.pushViewController(vc, animated: true)
}
}
}
}
// MARK: - Textfield Delegate
extension UserDetailsRegisterVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
switch textField{
case enterNameTF:
textField.hideError()
if !string.nameCharacterOnly(){return false}
return ValidatorClass.sharedInstanec.limitCharacter(length: 50,textField, shouldChangeCharactersIn: range, replacementString: string)
case enterUserNameTF:
textField.hideError()
if !string.userName(){return false}
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
case enterPasswordTF:
let currentString = (textField.text ?? "") as NSString
let newString = currentString.replacingCharacters(in: range, with: string)
newString.count == 0 ? (textField.rightView?.isHidden = true) : (textField.rightView?.isHidden = false)
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
default:
return true
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField{
case enterUserNameTF:
enterNameTF.becomeFirstResponder()
case enterNameTF:
enterPasswordTF.becomeFirstResponder()
case enterPasswordTF:
enterPasswordTF.resignFirstResponder()
default:
break
}
return true
}
}