Files
Woka_Native_iOS/WOKA/Address/Controller/VerifyAddressPincodeVC.swift
BilalKhanWDI d66df15fbb - Fixed TC 51, TC 49, TC 48, TC 46
- TC 52, 53
- Added banner to home
2024-09-02 19:59:53 +05:30

165 lines
6.2 KiB
Swift

//
// VerifyAddressPincodeVC.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
import Alamofire
class VerifyAddressPincodeVC: UIViewController {
@IBOutlet weak var pinCodeTF: TextFieldShadow!
@IBOutlet weak var proceedBtn: LocalisedElementsButton!
@IBOutlet weak var pincodeServieable: LocalisedElementsLabel!
var verifyPincodeData : CheckEddDM.ResultData?
override func viewDidLoad() {
super.viewDidLoad()
addGradient()
self.pinCodeTF.roundCorner()
self.title = "ADDRESS DETAILS".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
pinCodeTF.delegate = self
}
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)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Customize the navigation bar's appearance
self.navigationController?.setColor(color: .black)
}
@IBAction func proceedBtnTapped(_ sender: LocalisedElementsButton) {
PersistentStorage.shared.addShopCount(postID: 0)
guard let tf = pinCodeTF.text else{return}
if sender.titleLabel?.text == "CHECK NOW"{
if tf.count < 6{
Utilities.alertWithBtn(title: "", msgBody: "Please enter 6 digit pincode.", okBtnStr: "OK", vc: self)
return
}
if tf == "000000"{
self.pincodeServieable.text = "Pincode is not valid."
proceedBtn.setTitle("CHECK NOW", for: .normal)
return
}
//check if user is checking for same pincode
if let verifyPincodeData{
if tf == verifyPincodeData.lmPincode{
checkServiceAble()
return
}
}
checkEstimatedDeliveryData(pinCode: tf)
} else{
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.addNewAddressVC) as! AddNewAddressVC
vcPush.vm.pincode = tf
self.navigationController?.pushViewController(vcPush, animated: true)
}
}
func addGradient(){
let color1 = #colorLiteral(red: 0.6745098039, green: 0.6235294118, blue: 0.1725490196, alpha: 1)
let color2 = #colorLiteral(red: 0.5450980392, green: 0.6745098039, blue: 0.1725490196, alpha: 1)
self.view.applyGradient(colors: [color2, color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
}
func checkEstimatedDeliveryData(pinCode : String){
Utilities.startProgressHUD(msg: "Checking Pincode..")
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["pincode" : pinCode]
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.pincode_serviceability_check_edd, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<CheckEddDM>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
Utilities.dismissProgressHUD()
return
}
switch data.success{
case 0:
/*
Error
*/
Utilities.dismissProgressHUD()
self.pincodeServieable.text = data.message ?? "Pincode not serviceable."
proceedBtn.setTitle("CHECK NOW", for: .normal)
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data?.result else{return}
self.verifyPincodeData = data
checkServiceAble()
default:
Utilities.dismissProgressHUD()
break
}
case .failure(let error):
guard let self else{
Utilities.dismissProgressHUD()
return
}
Utilities.dismissProgressHUD()
self.toast(msg: error.localizedDescription, time: 1.5)
}
}
}
func checkServiceAble(){
guard let data = self.verifyPincodeData else{
self.pincodeServieable.text = "Pincode not serviceable."
proceedBtn.setTitle("CHECK NOW", for: .normal)
return
}
proceedBtn.setTitle("PROCEED", for: .normal)
self.pincodeServieable.text = "Pincode Servicable." + "\n" + "Expected delivery by " + (data.edd ?? "123456")
}
}
extension VerifyAddressPincodeVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// Check if user is deleting text so hide pincode servicable text
if string.count == 0 && range.length > 0 {
self.pincodeServieable.text = ""
self.proceedBtn.setTitle("CHECK NOW", for: .normal)
// Back pressed
return true
}
//Pincode should be only number
if !string.onlyNumber(){return false}
// pincode should be max 6 characters in length
return ValidatorClass.sharedInstanec.limitCharacter(length: 6,textField, shouldChangeCharactersIn: range, replacementString: string)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print("Return")
return true
}
}