2024-07-25 20:06:58 +05:30
|
|
|
//
|
|
|
|
|
// AddressListVM.swift
|
|
|
|
|
// WOKA
|
|
|
|
|
//
|
|
|
|
|
// Created by MacBook Pro on 25/07/24.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
|
import Alamofire
|
|
|
|
|
|
|
|
|
|
class AddressListVM{
|
|
|
|
|
|
|
|
|
|
weak var vc : AddressListVC!
|
2024-07-30 20:06:57 +05:30
|
|
|
var couponCodeApplied = String()
|
|
|
|
|
|
2024-07-25 20:06:58 +05:30
|
|
|
func initView(){
|
|
|
|
|
vc.innerView.addBorderView(width: 1, color: .darkGray)
|
|
|
|
|
self.vc.title = "ADDRESS DETAILS".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
|
|
|
|
addGradient()
|
|
|
|
|
setupCell()
|
|
|
|
|
getAddressListing()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
vc.view.applyGradient(colors: [color2, color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-26 23:21:09 +05:30
|
|
|
func addBtnGradient(){
|
|
|
|
|
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
|
|
|
|
|
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
|
|
|
|
|
let color3 = #colorLiteral(red: 0.968627451, green: 0.4196078431, blue: 0.1098039216, alpha: 1)
|
|
|
|
|
let color4 = #colorLiteral(red: 0.968627451, green: 0.7882352941, blue: 0.1294117647, alpha: 1)
|
|
|
|
|
vc.useSelectedAddBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
|
|
|
|
vc.addNewAddressBtn.applyGradient(colors: [color3, color4], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
|
|
|
|
vc.useSelectedAddBtn.roundCorner()
|
|
|
|
|
vc.addNewAddressBtn.roundCorner()
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-25 20:06:58 +05:30
|
|
|
func setupCell(){
|
|
|
|
|
vc.tableView.register(UINib(nibName: K.CellIdentifier.Cart.addressCell, bundle: nil), forCellReuseIdentifier: K.CellIdentifier.Cart.addressCell)
|
|
|
|
|
vc.tableView.delegate = vc.self
|
|
|
|
|
vc.tableView.dataSource = vc.self
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// MARK: - Get Address list
|
|
|
|
|
|
|
|
|
|
func getAddressListing(){
|
2024-07-26 23:21:09 +05:30
|
|
|
Utilities.startProgressHUD()
|
2024-07-25 20:06:58 +05:30
|
|
|
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
|
|
|
|
|
|
2024-07-29 20:04:40 +05:30
|
|
|
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.parent_address_listing, method: .get,headers: headers) { [weak self](result : Result<BaseResponseModel<[AddressListDM]>, NetworkManager.APIError>) in
|
2024-07-25 20:06:58 +05:30
|
|
|
switch result{
|
|
|
|
|
case .success(let data):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
switch data.success{
|
|
|
|
|
case 0:
|
|
|
|
|
/*
|
|
|
|
|
Error
|
|
|
|
|
*/
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
case 1:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
guard let data = data.data else{return}
|
2024-07-29 20:04:40 +05:30
|
|
|
CartDataCache.addressData = data
|
|
|
|
|
if CartDataCache.addressData.count != 0{
|
|
|
|
|
CartDataCache.addressData[0].isDefault = true
|
2024-07-30 00:21:39 +05:30
|
|
|
CartDataCache.addressData[0].isAnimating = true
|
2024-07-26 23:21:09 +05:30
|
|
|
}
|
2024-07-25 20:06:58 +05:30
|
|
|
self.vc.tableView.reloadData()
|
2024-07-29 20:04:40 +05:30
|
|
|
if let pincode = CartDataCache.addressData.first?.pincode , let id = CartDataCache.addressData.first?.id{
|
2024-07-26 23:21:09 +05:30
|
|
|
checkEstimatedDeliveryData(pinCode: pincode, id: id)
|
|
|
|
|
}
|
2024-07-25 20:06:58 +05:30
|
|
|
default:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
case .failure(let error):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
Utilities.alertWithBtnCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
|
|
|
|
|
if isDone{
|
|
|
|
|
self.getAddressListing()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-07-26 23:21:09 +05:30
|
|
|
|
|
|
|
|
func checkEstimatedDeliveryData(pinCode : String, id : Int){
|
|
|
|
|
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
|
|
|
|
|
let params : Parameters = ["pincode" : pinCode]
|
2024-07-29 20:04:40 +05:30
|
|
|
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
|
2024-07-26 23:21:09 +05:30
|
|
|
switch result{
|
|
|
|
|
case .success(let data):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
switch data.success{
|
|
|
|
|
case 0:
|
|
|
|
|
/*
|
|
|
|
|
Error
|
|
|
|
|
*/
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
case 1:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
guard let data = data.data?.result else{return}
|
2024-07-29 20:04:40 +05:30
|
|
|
if let index = CartDataCache.addressData.firstIndex(where: {$0.id == id}){
|
|
|
|
|
CartDataCache.addressData[index].eddDate = data.edd
|
2024-07-30 00:21:39 +05:30
|
|
|
CartDataCache.addressData[index].isAnimating = false
|
2024-07-26 23:21:09 +05:30
|
|
|
self.vc.tableView.reloadData()
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
case .failure(let error):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
Utilities.alert(title: "Error", message: error.localizedDescription, viewController: self.vc)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-07-29 20:04:40 +05:30
|
|
|
|
2024-07-30 20:06:57 +05:30
|
|
|
func createOrder(addressID : Int,couponCode : String?){
|
2024-07-29 20:04:40 +05:30
|
|
|
var productIDs = [Int]()
|
|
|
|
|
|
|
|
|
|
for i in CartDataCache.cartListData{
|
|
|
|
|
if let id = i.id{
|
|
|
|
|
productIDs.append(id)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Utilities.startProgressHUD()
|
|
|
|
|
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
|
|
|
|
|
let params : Parameters = ["product_ids" : productIDs,
|
2024-07-30 20:06:57 +05:30
|
|
|
"address_id" : addressID,
|
|
|
|
|
"coupon_code" : couponCode ?? ""]
|
2024-07-29 20:04:40 +05:30
|
|
|
struct URLResp : Codable {
|
|
|
|
|
var url : String?
|
|
|
|
|
}
|
|
|
|
|
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Cart.create_new_order, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<URLResp>, NetworkManager.APIError>) in
|
|
|
|
|
switch result{
|
|
|
|
|
case .success(let data):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
switch data.success{
|
|
|
|
|
case 0:
|
|
|
|
|
/*
|
|
|
|
|
Error
|
|
|
|
|
*/
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
case 1:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
guard let data = data.data else{return}
|
|
|
|
|
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
|
|
|
|
|
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.paymentWebViewVC) as! PaymentWebViewVC
|
|
|
|
|
vcPush.url = data.url
|
|
|
|
|
vcPush.modalTransitionStyle = .crossDissolve
|
|
|
|
|
vcPush.modalPresentationStyle = .fullScreen
|
2024-08-12 19:58:58 +05:30
|
|
|
self.vc.navigationController?.pushViewController(vcPush, animated: true)
|
2024-07-29 20:04:40 +05:30
|
|
|
default:
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
case .failure(let error):
|
|
|
|
|
guard let self else{
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
Utilities.dismissProgressHUD()
|
|
|
|
|
Utilities.alertWithBtnCancelCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
|
|
|
|
|
if isDone{
|
2024-07-30 20:06:57 +05:30
|
|
|
self.createOrder(addressID: addressID, couponCode: couponCode)
|
2024-07-29 20:04:40 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-07-25 20:06:58 +05:30
|
|
|
}
|