//
//  ViewController.swift
//  InAppDemo
//
//  Created by Kristian Secor on 7/13/14.
//  Copyright (c) 2014 Kristian Secor. All rights reserved.
//

import StoreKit
import UIKit
import iAd


class ViewController: UIViewController,SKPaymentTransactionObserver, SKProductsRequestDelegate, ADBannerViewDelegate {
                            
    @IBOutlet var topAdBanner: ADBannerView!
    @IBOutlet var buyButton: UIButton!
    @IBOutlet var removeMsg: UILabel!
    
    var product: SKProduct!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        var topAdBanner: ADBannerView
        self.topAdBanner.hidden = true
        self.topAdBanner.delegate = self
        buyButton.hidden = false
    
        if NSUserDefaults.standardUserDefaults().objectForKey("Ads")  == nil {
            SKPaymentQueue.defaultQueue().addTransactionObserver(self)
            self.getProductInfo();
        }
        
        
        if NSUserDefaults.standardUserDefaults().objectForKey("Ads") != nil {
        if var status: AnyObject! = NSUserDefaults.standardUserDefaults().objectForKey("Ads"){
        if status as NSString == "purchased" {
            self.topAdBanner.removeFromSuperview()
            self.buyButton.hidden = true;
            self.buyButton.userInteractionEnabled = false
         }
        else {
            SKPaymentQueue.defaultQueue().addTransactionObserver(self);
            self.getProductInfo()
            }
       
        }
        }
        
            // Do any additional setup after loading the view, typically from a nib.
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    
    
    func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!){
        let products = response.products
        if products.count != 0
        {
            product = products[0] as SKProduct
        }
        buyButton.hidden = false
    }
    
    
    
    func getProductInfo(){
        if SKPaymentQueue.canMakePayments(){
            let productID:NSSet = NSSet(object:"com.store.adremoval")
            let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID)
            request.delegate = self
            request.start()
        }

    }
    
    
    func storePurchase(){
        NSUserDefaults.standardUserDefaults().setObject("purchased", forKey:"Ads")
        
        NSUserDefaults.standardUserDefaults().synchronize()
        self.topAdBanner.removeFromSuperview()
        self.buyButton.hidden = true;
        self.buyButton.userInteractionEnabled = false
        removeMsg.text = "Your ads have been removed"

    }
    
    
    func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!){
        for transaction:AnyObject in transactions {
            if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
                switch trans.transactionState {
                case .Purchased:
                    SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                    self.storePurchase()
                    removeMsg.text = "Your ads have been removed"
                    break;
                case .Failed:
                    SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                    break;
                case .Restored:
                    SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
                    break;
                default:
                    break;
                }
            }
        }
    }
    
    
   
    
    @IBAction func buyProduct(sender : AnyObject) {
      let payment:SKPayment = SKPayment(product: product)
      SKPaymentQueue.defaultQueue().addPayment(payment)

    }
    
    
    
    func bannerView(banner: ADBannerView!,didFailToReceiveAdWithError error: NSError!){
    }
    
    
    func bannerViewDidLoadAd(banner: ADBannerView!){
        self.topAdBanner.hidden = false
    }
    
    
    func bannerViewWillLoadAd(banner: ADBannerView!){
        
    }
    
    func bannerViewActionDidFinish(banner: ADBannerView!) {
        
    }


}

