CouponViewController.swift 4.31 KB
//
//  CouponViewController.swift
//  WarplySDKFrameworkIOS
//
//  Created by Manos Chorianopoulos on 5/5/22.
//

import UIKit
// import SwiftEventBus

@objc public class CouponViewController: UIViewController {
    @IBOutlet weak var mainView: UIView!
    @IBOutlet weak var backgroundImage: UIImageView!
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var scrollContentView: UIView!
    @IBOutlet weak var couponImage: UIImageView!
    @IBOutlet weak var couponImageHeight: NSLayoutConstraint!
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var descriptionLabel: UILabel!
    @IBOutlet weak var redeemButton: UIButton!
    @IBOutlet weak var termsButton: UIButton!
    @IBOutlet weak var termsTextView: UITextView!
    @IBOutlet weak var termsTextViewHeight: NSLayoutConstraint!
    
    let uiscreen: CGRect = UIScreen.main.bounds

    var termsVisible: Bool = false;

    public var couponset: swiftApi.CouponSetItemModel?
    
    public override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        setBackButton()
        setNavigationTitle("Εκπτωτικό κουπόνι")
        
        backgroundImage.image = UIImage(named: "coupons_scrollview_white", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
        
        scrollView.clipsToBounds = true
        scrollView.layer.cornerRadius = 30
        scrollView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius
        
        couponImage.load(link: couponset?.img_preview ?? "", placeholder: UIImage(), cache: URLCache())
        couponImage.contentMode = .scaleAspectFill
        couponImageHeight.constant = self.uiscreen.height * 0.25

        nameLabel.text = couponset?.name ?? ""
        descriptionLabel.text = couponset?.short_description ?? ""
        
        redeemButton.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: .medium)
        
        termsButton.titleLabel?.font = .systemFont(ofSize: 15.0, weight: .semibold)
//        termsButton.imageView?.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5)
        
        let htmlText = couponset?.terms ?? ""
        termsTextView.attributedText = htmlText.htmlToAttributedString
        termsTextView.font = UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.regular)
        termsTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00)
        termsTextView.textAlignment = .center
        termsTextView.isScrollEnabled = false
        
        toggleTerms()
        
    }
    
    // MARK: - Functions
    func toggleTerms() {
        if (termsVisible) {
            termsTextView.isHidden = false
            let targetSize = CGSize(width: termsTextView.frame.width, height: CGFloat(MAXFLOAT))
            termsTextViewHeight.constant = termsTextView.sizeThatFits(targetSize).height
            
            termsButton.setImage(UIImage(named: "ic_up_dark.png", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil), for: .normal)
        } else {
            termsTextView.isHidden = true
            termsTextViewHeight.constant = CGFloat(0)
            
            termsButton.setImage(UIImage(named: "ic_down_dark.png", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil), for: .normal)
        }
    }

    func redeemCouponSetRequest(uuid: String) {
        swiftApi().redeemCouponSetAsync(uuid: uuid, redeemCouponSetCallback)
    }
    
    func redeemCouponSetCallback (_ response: swiftApi.GenericResponseModel?) -> Void {
        if (response != nil) {
            DispatchQueue.main.async {
                if (response?.getStatus == 1) {
                    // Do something
                }
            }
        } else {
        }
    }
    
    // MARK: - Actions
    
    @IBAction func redeemButtomAction(_ sender: Any) {
//        SwiftEventBus.post("couponRedeem", sender: coupon)

        redeemCouponSetRequest(uuid: couponset?.uuid ?? "")
        
        // let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
        // let vc = storyboard.instantiateViewController(withIdentifier: "MakeItAPresentViewController") as UIViewController
        // self.navigationController?.pushViewController(vc, animated: true)
    }

    @IBAction func termsButtonAction(_ sender: Any) {
        termsVisible = !termsVisible
        toggleTerms()
    }
}