Files
Woka_Native_iOS/WOKA/SideBarNav/ViewModel/MyOrdersVM.swift
2024-08-08 18:47:13 +05:30

86 lines
3.0 KiB
Swift

//
// MyOrdersVM.swift
// WOKA
//
// Created by MacBook Pro on 30/07/24.
//
import UIKit
import Alamofire
class MyOrdersVM{
weak var vc : MyOrdersVC!
var cartButton: UIBarButtonItem!
var pageNo = 1
var orderData = [OrderListingDM.Datum]()
func initView(){
vc.title = "MY ORDERS".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
cartButton = BadgeBarBtn.shared.setupCartButton(target: self, action: #selector(self.cartButtonTapped))
self.vc.navigationItem.rightBarButtonItem = cartButton
//check if cart is not fetched
if !CartDataCache.isFetched{
CartDataCache.shareInstance.getCartList(vc: self.vc) { [weak self] isDone in
guard let self else{return}
if isDone{
if let button = cartButton.customView as? UIButton {
BadgeBarBtn.shared.updateBadge(for: button, with: CartDataCache.cartListData.count.toString())
}
}
}
}
setupCell()
getOrders()
}
func setupCell(){
vc.tableView.register(UINib(nibName: K.CellIdentifier.SideBarNav.myOrderCell, bundle: nil), forCellReuseIdentifier: K.CellIdentifier.SideBarNav.myOrderCell)
vc.tableView.delegate = vc.self
vc.tableView.dataSource = vc.self
}
@objc func cartButtonTapped(){
if AuthFunc.shareInstance.guestUserLoginPopUp() { return}
let sb = UIStoryboard(name: K.StoryBoard.cart, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Cart.cartListVC) as! CartListVC
self.vc.navigationController?.pushViewController(vcPush, animated: true)
}
// MARK: - Get MyORders
func getOrders(){
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["Accept-Language" : AuthFunc.shareInstance.languageSelected == .english ? "English" : "Hindi",
"access-token": AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["limit" : "10"]
let url = "\(APIEndPoints.SideBarNav.order_listing )?page=\(pageNo)"
NetworkManager.shareInstance.apiRequest(url: url, method: .post, parameters: params,headers : headers) {(result : Result<BaseResponseModel<OrderListingDM>, NetworkManager.APIError>) in
switch result{
case .success(let data):
switch data.success{
case 0:
Utilities.dismissProgressHUD()
return
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data?.result?.data else{return}
self.orderData = data
self.vc.tableView.reloadData()
default:
break
}
case .failure(let error):
Utilities.dismissProgressHUD()
print(error)
}
}
}
}