Files
Woka_Native_iOS/WOKA/Address/Controller/AddNewAddressVC.swift

134 lines
4.9 KiB
Swift
Raw Normal View History

//
// AddNewAddressVC.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
class AddNewAddressVC: UIViewController {
@IBOutlet weak var enterAddressNAmeTF: TextFieldShadow! // min - 2 , max - 50
@IBOutlet weak var addressLine1TF: TextFieldShadow!
@IBOutlet weak var addressLine2TF: TextFieldShadow!
@IBOutlet weak var cityTF: TextFieldShadow!
@IBOutlet weak var stateTF: TextFieldShadow!
@IBOutlet weak var pinCodeTF: TextFieldShadow!
@IBOutlet weak var countryTF: TextFieldShadow!
@IBOutlet weak var phoneNumberTF: TextFieldShadow!
var vm = AddNewAddressVM()
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 viewDidAppear(_ animated: Bool) {
self.navigationController?.setColor(color: .white)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Customize the navigation bar's appearance
self.navigationController?.setColor(color: .black)
}
@IBAction func submitBtnTapped(_ sender: LocalisedElementsButton) {
if enterAddressNAmeTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "Name should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if addressLine1TF.text!.count < 15 {
Utilities.alertWithBtn(title: "", msgBody: "Address Line 1 should be minimum 15 Characters.", okBtnStr: "OK", vc: self)
return
}
if addressLine2TF.text!.count < 15 {
Utilities.alertWithBtn(title: "", msgBody: "Address Line 2 should be minimum 15 Characters.", okBtnStr: "OK", vc: self)
return
}
if cityTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "City should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if stateTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "State should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if countryTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "Country should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if phoneNumberTF.text!.count < 10 {
Utilities.alertWithBtn(title: "", msgBody: "Enter 10 digit mobile number", okBtnStr: "OK", vc: self)
return
}
self.vm.addAddress()
}
}
extension AddNewAddressVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
switch textField{
case enterAddressNAmeTF:
if !string.nameCharacterOnly(){return false}
// min - 2 , max - 50
return ValidatorClass.sharedInstanec.limitCharacter(length: 50,textField, shouldChangeCharactersIn: range, replacementString: string)
case addressLine1TF, addressLine2TF:
if !string.numberAndCharacter(){return false}
// min - 2 , max - 200
return ValidatorClass.sharedInstanec.limitCharacter(length: 200,textField, shouldChangeCharactersIn: range, replacementString: string)
case cityTF, stateTF, countryTF:
if !string.nameCharacterOnly(){return false}
// min - 2 , max - 200
return ValidatorClass.sharedInstanec.limitCharacter(length: 50,textField, shouldChangeCharactersIn: range, replacementString: string)
case phoneNumberTF:
if !string.onlyNumber(){return false}
// max - 10
return ValidatorClass.sharedInstanec.limitCharacter(length: 10,textField, shouldChangeCharactersIn: range, replacementString: string)
default:
break
}
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField{
case enterAddressNAmeTF:
addressLine1TF.becomeFirstResponder()
case addressLine1TF:
addressLine2TF.becomeFirstResponder()
case addressLine2TF:
cityTF.becomeFirstResponder()
case cityTF:
stateTF.becomeFirstResponder()
case stateTF:
countryTF.becomeFirstResponder()
case countryTF:
phoneNumberTF.becomeFirstResponder()
default:
break
}
return true
}
}