Manos Chorianopoulos

MyRewardsViewController redesign

......@@ -10,6 +10,11 @@ import UIKit
@objc public class MyRewardsViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var myCouponsView: UIView!
@IBOutlet weak var myCouponsLabel: UILabel!
@IBOutlet weak var myCouponsCountView: UIView!
@IBOutlet weak var myCouponsCountLabel: UILabel!
@IBOutlet weak var myCouponsButton: UIButton!
// MARK: - Initializers
public convenience init() {
......@@ -55,6 +60,8 @@ import UIKit
// Profile data
var profileModel: ProfileModel?
var profileSection: SectionModel?
var activeCoupons: [CouponItemModel] = []
public override func viewDidLoad() {
super.viewDidLoad()
......@@ -82,8 +89,40 @@ import UIKit
loadProfile() // Load Profile
loadCampaigns() // Load campaigns
loadCouponSets() // Load couponsets
loadCoupons()
setupUI()
}
private func setupUI() {
self.myCouponsView.backgroundColor = UIColor(rgb: 0x8F8F8F)
self.myCouponsView.layer.cornerRadius = 28
self.myCouponsView.layer.masksToBounds = true
self.myCouponsCountView.layer.borderWidth = 2.0
self.myCouponsCountView.layer.borderColor = UIColor(rgb: 0xFFFFFF).cgColor
self.myCouponsCountView.layer.cornerRadius = 10.5
self.myCouponsLabel.text = "My coupons"
self.myCouponsLabel.font = UIFont(name: "PingLCG-Regular", size: 15)
self.myCouponsLabel.textColor = UIColor(rgb: 0xFFFFFF)
self.myCouponsLabel.frame.size.width = self.myCouponsLabel.intrinsicContentSize.width
self.myCouponsLabel.frame.size.height = self.myCouponsLabel.intrinsicContentSize.height
self.myCouponsCountLabel.text = "0"
self.myCouponsCountLabel.font = UIFont(name: "PingLCG-Bold", size: 14)
self.myCouponsCountLabel.textColor = UIColor(rgb: 0xFFFFFF)
self.myCouponsCountLabel.frame.size.width = self.myCouponsCountLabel.intrinsicContentSize.width
self.myCouponsCountLabel.frame.size.height = self.myCouponsCountLabel.intrinsicContentSize.height
self.myCouponsButton.addTarget(self, action: #selector(myCouponsButtonTapped), for: .touchUpInside)
}
@objc private func myCouponsButtonTapped() {
// TODO: open CouponsVC
}
// NEW: Safe XIB registration method
private func registerTableViewCells() {
let cellConfigs = [
......@@ -219,6 +258,38 @@ import UIKit
}
}
// MARK: - Coupons Loading
private func loadCoupons() {
WarplySDK.shared.getCouponsUniversal({ [weak self] couponsData in
guard let self = self else { return }
if let coupons = couponsData {
print("✅ [MyRewardsVC] Fetched \(coupons.count) coupons")
let tempActive = coupons.filter { $0.status == 1 }
self.activeCoupons = tempActive
self.myCouponsCountLabel.text = String(tempActive.count)
self.myCouponsCountLabel.frame.size.width = self.myCouponsCountLabel.intrinsicContentSize.width
self.myCouponsCountLabel.frame.size.height = self.myCouponsCountLabel.intrinsicContentSize.height
// Debug: Print coupon statuses
let activeCount = tempActive.count
let redeemedCount = coupons.filter { $0.status == 0 }.count
let expiredCount = coupons.filter { $0.status == -1 }.count
print(" Active: \(activeCount), Redeemed: \(redeemedCount), Expired: \(expiredCount)")
} else {
self.activeCoupons = []
print("⚠️ [MyRewardsVC] No coupons received")
}
}, failureCallback: { [weak self] errorCode in
guard let self = self else { return }
print("❌ [MyRewardsVC] Failed to fetch coupons, error: \(errorCode)")
self.activeCoupons = []
})
}
// MARK: - Merchants Loading
private func loadMerchants() {
// Load merchants from WarplySDK (using enhanced getMerchants method)
......