//
//  CSGenericContentViewController.swift
//  CovidSafe
//
//  Copyright © 2020 Australian Government. All rights reserved.
//

import UIKit
import SafariServices

class CSGenericContentViewController: UIViewController {
    
    @IBOutlet weak var stepCounterLabel: UILabel!
    @IBOutlet weak var contentIllustration: UIImageView!
    @IBOutlet weak var contentTitleLabel: UILabel!
    @IBOutlet weak var contentDescriptionText: UITextView!
    @IBOutlet weak var actionButton: UIButton!
    
    var contentViewModel: CSGenericContentViewModel?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        guard let viewModel = contentViewModel else {
            return
        }
        
        // set the step counter
        if let contentStep = viewModel.contentStepNumber, let contentTotal = viewModel.contentStepTotal {
            stepCounterLabel.text = String.localizedStringWithFormat( "stepCounter".localizedString(),
                contentStep,
                contentTotal
            )
        } else {
            stepCounterLabel.text = ""
            stepCounterLabel.isHidden = true
        }
        
        // set the illustration
        if let illustration = viewModel.contentIllustration {
            contentIllustration.image = illustration
        }
        
        // set title and content
        contentTitleLabel.text = viewModel.viewTitle
        contentDescriptionText.attributedText = viewModel.viewContentDescription
        contentDescriptionText.parseHTMLTags()
        contentDescriptionText.addAllBold(enclosedIn: "#")
        
        //set button label and action
        actionButton.setTitle(viewModel.buttonLabel, for: .normal)
        actionButton.addTarget(self, action: #selector(pressed), for: .touchUpInside)
    }
    
    @objc func pressed(sender: UIButton!) {
        guard let viewModel = contentViewModel else {
            return
        }
        
        viewModel.buttonCallback()
    }
    
}

struct CSGenericContentViewModel {
    var viewTitle: String
    var viewContentDescription: NSAttributedString
    var buttonLabel: String
    var buttonCallback: () -> Void
    var contentIllustration: UIImage?
    var contentStepNumber: Int?
    var contentStepTotal: Int?
}