CouponsViewController.swift 5.17 KB
//
//  CouponsViewController.swift
//  WarplySDKFrameworkIOS
//
//  Created by Βασιλης Σκουρας on 4/5/22.
//

import Foundation
import UIKit
import SwiftEventBus

@objc public class CouponsViewController: UIViewController {
    @IBOutlet weak var backgroundImage: UIImageView!
    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var emptyView: UIView!
    @IBOutlet weak var emptyViewHeight: NSLayoutConstraint!
    @IBOutlet weak var emptyLabel: UILabel!
    
    public var coupons:Array<swiftApi.CouponItemModel> = []

    public override func viewDidLoad() {
        super.viewDidLoad()
        
        self.hidesBottomBarWhenPushed = true

        SwiftEventBus.onBackgroundThread(self, name: "coupons_fetched") { result in

            DispatchQueue.main.async {
                self.coupons = swiftApi().getCouponList()
                self.tableView.reloadData()
                
                self.handleEmptyView()
            }
        }
        
        getCouponsRequest()
        
        setBackButton()
//        setNavigationTitle("GIFTS FOR YOU")
        setNavigationTitle("FREE COUPONS")
        
//        backgroundImage.image = UIImage(named: "coupons_scrollview_dark", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
        
        tableView.delegate = self
        tableView.dataSource = self
        
//        tableView.clipsToBounds = true
//        tableView.layer.cornerRadius = 30
//        tableView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius
        tableView.contentInset.top = 30
        
        emptyLabel.text = "Αυτήν τη στιγμή δεν έχεις κάποιο ενεργό κουπόνι. Στην ενότητα FOR YOU μπορείς να βρεις κουπόνια αποκλειστικά για σένα!"
    }
    
    public override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        swiftApi().logTrackersEvent("screen", "ActiveCouponsScreen")
        
        self.coupons = swiftApi().getCouponList()
        self.tableView.reloadData()
        
        self.handleEmptyView()

        self.navigationController?.hideHairline()
    }
    
    // MARK: - Functions
    func handleEmptyView() {
        if (self.coupons.count == 0) {
            self.emptyView.isHidden = false
            self.emptyViewHeight.constant = self.emptyView.intrinsicContentSize.height
        } else {
            self.emptyView.isHidden = true
            self.emptyViewHeight.constant = 0
        }
    }

    // MARK: - API Functions
    func getCouponsRequest() {
        swiftApi().getCouponsAsync(getCouponsCallback, failureCallback: {errorCode in
            self.coupons = []
        })
    }
    
    func getCouponsCallback (_ couponsData: Array<swiftApi.CouponItemModel>?) -> Void {
        if (couponsData != nil) {
            let activeCouponData = swiftApi().filterActiveCoupons(couponsData ?? [])
            
            self.coupons = activeCouponData
            
            DispatchQueue.main.async {
                SwiftEventBus.post("coupons_fetched")
                // self.tableView.reloadData()
                
                // self.handleEmptyView()
            }
        } else {
            self.coupons = []
        }
    }
    
}

// MARK: - TableView
extension CouponsViewController: UITableViewDelegate, UITableViewDataSource{
    
    public func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.coupons.count
    }
    
    public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 130.0 + 8.0
//        return UITableViewAutomaticDimension
    }
    
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CouponsTableViewCellId", for: indexPath) as! CouponsTableViewCell
        
        cell.configureCell(coupon: coupons[indexPath.row])
        
        return cell
    }
    
    public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        // SwiftEventBus.post("couponBarcodePressed", sender: coupons[indexPath.row])
        
        // Logs
        let couponSetData: swiftApi.CouponSetItemModel? = coupons[indexPath.row].couponset_data
        print("Coupon clicked: " + (coupons[indexPath.row].coupon ?? ""))
        print("Coupon Name clicked: " + (couponSetData?.name ?? ""))
        print("Coupon Description clicked: " + (couponSetData?.short_description ?? ""))
        print("Coupon Expiration clicked: " + (coupons[indexPath.row].expiration ?? ""))
        
        swiftApi().logTrackersEvent("click", ("Coupon:" + (couponSetData?.name ?? "")))

        let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
        let vc = storyboard.instantiateViewController(withIdentifier: "CouponBarcodeViewController") as! SwiftWarplyFramework.CouponBarcodeViewController
        vc.coupon = coupons[indexPath.row]
        self.navigationController?.pushViewController(vc, animated: true)
    }
    
}