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

import UIKit
import StoreKit


class ViewController: UIViewController,SKPaymentTransactionObserver, SKProductsRequestDelegate {
    
    var product: SKProduct!
    
    
    @IBOutlet var productTitle : UILabel!
    @IBOutlet var buyNow : UIButton!
    
    override func viewDidLoad() {
        var getbalance = 0
        super.viewDidLoad()
        var keystore = NSUbiquitousKeyValueStore.defaultStore()
        if let coinbalance: AnyObject? = keystore.objectForKey("coinbalance"){
        getbalance = coinbalance as Int
        }
        
        productTitle.text = "   Coin Balance: " + String(getbalance)
        
        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
            
        }
    }
    
    
    
    func getProductInfo(){
        if SKPaymentQueue.canMakePayments(){
            let productID:NSSet = NSSet(object: "com.store.coinpacks")
            let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID)
            request.delegate = self
            request.start()
        }
    }
    
    
    
    @IBAction func buyProduct(sender : AnyObject) {
    let payment:SKPayment = SKPayment(product: product)
        SKPaymentQueue.defaultQueue().addPayment(payment)
        
    }
    
    func setCoinBalance(){
        var keystore = NSUbiquitousKeyValueStore.defaultStore()
        var mybalance = 0
       if let coinbalance: AnyObject? = keystore.objectForKey("coinbalance"){
        mybalance = coinbalance as Int
        mybalance += 50
        keystore.setObject(mybalance,forKey:"coinbalance")
        keystore.synchronize()
        }
        else
       {
        keystore.setObject(50,forKey:"coinbalance")
        keystore.synchronize()
        mybalance  = 50
        println(mybalance)
        }
        
        productTitle.text = "   Coin Balance: " + String(mybalance)
        
        
}
    
    
  

    func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!){
        for transaction:AnyObject in transactions {
            if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
                switch trans.transactionState {
                case .Purchased:
                    self.setCoinBalance()
                    SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                    break
                case .Failed:
                    SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
                    break
                case .Restored:
                    SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
                    break
                default:
                    break
                }
            }
        }
    }
    
    
}

