Commit c960f00e by Fahad Sparrow

cart model updated ..

api call for increasing quantity implemented in mycartvc and  reload data and show total amount
SeeAllItemsCollectionViewCell: recommended products data introduced
SeeAllItemsVC: function useful for reloading collection added but not fully implemented
parent 34c6f79c
...@@ -46,6 +46,31 @@ var popularProductsDetails : Popular_products? ...@@ -46,6 +46,31 @@ var popularProductsDetails : Popular_products?
} }
} }
var recommended : Recommended_products?
{
didSet
{
self.name.text = recommended?.product_name
self.priceLabel.text = "Rs. " + (recommended?.price)!
if recommended?.is_favourite == true
{
self.isFavImg.image = UIImage(named: "heartFilled")
}
else
{
self.isFavImg.image = UIImage(named: "heart")
}
let imagelink = recommended?.product_images![0]
if imagelink != nil
{
let url = URL(string:(imagelink!))
self.img.kf.indicatorType = .activity
self.img.kf.setImage(with: url, placeholder: UIImage(named: "placeholderImage"), options: .none, completionHandler: nil)
}
}
}
var allProducts : Product_list? var allProducts : Product_list?
{ {
didSet didSet
......
...@@ -22,6 +22,7 @@ class SeeAllItemsVC: UIViewController { ...@@ -22,6 +22,7 @@ class SeeAllItemsVC: UIViewController {
var allProductList: [Product_list]? var allProductList: [Product_list]?
var favVM = FavouritesVM() var favVM = FavouritesVM()
var allItemModel = SeeAllItemsVM() var allItemModel = SeeAllItemsVM()
let homeViewModel = HomeViewModel()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -165,10 +166,10 @@ extension SeeAllItemsVC:UICollectionViewDelegate,UICollectionViewDataSource,UICo ...@@ -165,10 +166,10 @@ extension SeeAllItemsVC:UICollectionViewDelegate,UICollectionViewDataSource,UICo
{ {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if header == "Popular Products"{ if header == "Popular Products"{
return popular!.count return self.popular?.count ?? 0
} }
else if header == "Recommended"{ else if header == "Recommended"{
return recommended!.count return self.recommended?.count ?? 0
} }
else if header == "All Products" || header == "New Arrivals" || header == "Discounts" || header == "Offers"{ else if header == "All Products" || header == "New Arrivals" || header == "Discounts" || header == "Offers"{
return allProductList?.count ?? 0 return allProductList?.count ?? 0
...@@ -208,30 +209,17 @@ extension SeeAllItemsVC:UICollectionViewDelegate,UICollectionViewDataSource,UICo ...@@ -208,30 +209,17 @@ extension SeeAllItemsVC:UICollectionViewDelegate,UICollectionViewDataSource,UICo
// } // }
} }
if header == "Recommended"{ if header == "Recommended"{
var recommen: Recommended_products? cell.recommended = self.recommended?[indexPath.row]
cell.btnFavAddRemove.tag = indexPath.row
if cell.isFavImg.image == UIImage(named: "heartFilled")
{ {
didSet cell.btnFavAddRemove.addTarget(self, action: #selector(self.removeFavAction(_:)), for: .touchUpInside)
{ }
if recommen?.is_favourite == true else
{ {
cell.isFavImg.image = UIImage(named: "heartFilled") cell.btnFavAddRemove.addTarget(self, action: #selector(self.addFavAction(_:)), for: .touchUpInside)
cell.btnFavAddRemove.addTarget(self, action: #selector(removeFavAction(_:)) , for: .touchUpInside)
}
else
{
cell.isFavImg.image = UIImage(named: "heart")
cell.btnFavAddRemove.addTarget(self, action: #selector(addFavAction(_:)) , for: .touchUpInside)
}
}
} }
recommen = recommended?[indexPath.row]
let imagelink = self.recommended![indexPath.row].product_images![0]
let url = URL(string:(imagelink))
cell.img.load(from: url!)
cell.priceLabel.text = "Rs. " + self.recommended![indexPath.row].price!
cell.name.text = self.recommended![indexPath.row].product_name
} }
if header == "All Products" || header == "New Arrivals" || header == "Discounts" || header == "Offers"{ if header == "All Products" || header == "New Arrivals" || header == "Discounts" || header == "Offers"{
cell.allProducts = self.allProductList![indexPath.row] cell.allProducts = self.allProductList![indexPath.row]
...@@ -317,4 +305,30 @@ extension SeeAllItemsVC ...@@ -317,4 +305,30 @@ extension SeeAllItemsVC
} }
} }
func loadData()
{
DispatchQueue.main.async {
AppInstance.showLoader()
self.homeViewModel.loadApiData()
}
self.homeViewModel.loadApiData()
self.homeViewModel.HomeData.bind {(HomeModel) in
DispatchQueue.main.async {
AppInstance.hideLoader()
}
if HomeModel?.status == true
{
self.recommended = self.homeViewModel.Model?.recommended_products
self.popular = self.homeViewModel.Model?.popular_products
self.itemsCollectionView.reloadData()
}
else
{
self.showSnackBar(Message: HomeModel?.message ?? "Something went wrong!!!", duration: .middle)
}
}
}
} }
...@@ -10,12 +10,18 @@ import Foundation ...@@ -10,12 +10,18 @@ import Foundation
struct CartListModel: Codable { struct CartListModel: Codable {
let status : Bool? let status : Bool?
let message : String? let message : String?
let itemsCount: Int?
let subtotal : Int?
let grandTotal : Double?
let cart_items : [Cart_items]? let cart_items : [Cart_items]?
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case status = "status" case status = "status"
case message = "message" case message = "message"
case itemsCount = "itemsCount"
case subtotal = "subtotal"
case grandTotal = "grandTotal"
case cart_items = "cart_items" case cart_items = "cart_items"
} }
...@@ -23,6 +29,9 @@ struct CartListModel: Codable { ...@@ -23,6 +29,9 @@ struct CartListModel: Codable {
let values = try decoder.container(keyedBy: CodingKeys.self) let values = try decoder.container(keyedBy: CodingKeys.self)
status = try values.decodeIfPresent(Bool.self, forKey: .status) status = try values.decodeIfPresent(Bool.self, forKey: .status)
message = try values.decodeIfPresent(String.self, forKey: .message) message = try values.decodeIfPresent(String.self, forKey: .message)
itemsCount = try values.decodeIfPresent(Int.self, forKey: .itemsCount)
subtotal = try values.decodeIfPresent(Int.self, forKey: .subtotal)
grandTotal = try values.decodeIfPresent(Double.self, forKey: .grandTotal)
cart_items = try values.decodeIfPresent([Cart_items].self, forKey: .cart_items) cart_items = try values.decodeIfPresent([Cart_items].self, forKey: .cart_items)
} }
......
...@@ -11,10 +11,15 @@ class MyCartVC: UIViewController { ...@@ -11,10 +11,15 @@ class MyCartVC: UIViewController {
@IBOutlet weak var bottomView:UIView! @IBOutlet weak var bottomView:UIView!
@IBOutlet weak var cartTable: UITableView! @IBOutlet weak var cartTable: UITableView!
@IBOutlet weak var cartCountLabel: UILabel! @IBOutlet weak var cartCountLabel: UILabel!
@IBOutlet weak var lblTotalCost: UILabel!
@IBOutlet weak var lblPayableAmount: UILabel!
@IBOutlet weak var lblDeliveryCharge: UILabel!
let cartVM = CartVM() let cartVM = CartVM()
var cartList = [Cart_items]() var cartList = [Cart_items]()
var cartListParent = [CartListModel]()
var itemId = ""
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -121,8 +126,11 @@ extension MyCartVC ...@@ -121,8 +126,11 @@ extension MyCartVC
if success if success
{ {
self.cartListParent = ([cartData][0])!
self.cartList = cartData?[0].cart_items ?? [] self.cartList = cartData?[0].cart_items ?? []
DispatchQueue.main.async { DispatchQueue.main.async {
self.lblTotalCost.text = "Rs. \(cartData![0].subtotal ?? 0)"
self.lblPayableAmount.text = "Rs. \(cartData![0].grandTotal ?? 0)"
self.cartCountLabel.text = self.cartList.count.description + " items" self.cartCountLabel.text = self.cartList.count.description + " items"
self.cartTable.reloadData() self.cartTable.reloadData()
} }
...@@ -189,17 +197,39 @@ extension MyCartVC ...@@ -189,17 +197,39 @@ extension MyCartVC
// let index = IndexPath(row: sender.tag, section: 0) // let index = IndexPath(row: sender.tag, section: 0)
// let cell = self.cartTable.cellForRow(at: index) as! MyCartTableViewCell // let cell = self.cartTable.cellForRow(at: index) as! MyCartTableViewCell
var cartListIncrease = self.cartList[sender.tag] itemId = self.cartList[sender.tag].prd_id!
var quantityVal = cartListIncrease.quantity ?? -1 prdctToCart()
//let val = Int(cell.qntyLabel.text ?? "1") ?? 1
let newQnty = quantityVal + 1
cartListIncrease.quantity = newQnty
self.cartList[sender.tag] = cartListIncrease
DispatchQueue.main.async { DispatchQueue.main.async {
self.cartTable.reloadData() self.cartTable.reloadData()
} }
} }
func prdctToCart()
{
DispatchQueue.main.async {
AppInstance.showLoader()
}
self.cartVM.addToCart(prdctId: itemId)
self.cartVM.addCartData.bind { (cartData) in
DispatchQueue.main.async {
AppInstance.hideLoader()
self.loadCartData()
}
if cartData?.status == true
{
self.showSnackBar(Message: cartData?.message ?? "Something went wrong!!!", duration: .middle)
}
else
{
self.showSnackBar(Message: cartData?.message ?? "Something went wrong!!!", duration: .middle)
}
}
}
func loadAmount() {
// self.lblTotalCost = "Rs. " + cartListParent.sta
}
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment