package com.adobe.cairngorm.samples.dashboard.command
{
    import com.adobe.cairngorm.business.Responder;
    import com.adobe.cairngorm.commands.Command;
    import com.adobe.cairngorm.control.CairngormEvent;
    import com.adobe.cairngorm.samples.dashboard.business.StockMarketDelegate;
    import com.adobe.cairngorm.samples.dashboard.events.PurchaseStockEvent;
    import com.adobe.cairngorm.samples.dashboard.model.ModelLocator;
    import com.adobe.cairngorm.samples.dashboard.model.StockPurchase;
    
    public class PurchaseStockCommand implements Command, Responder
    {
        private var model : ModelLocator = ModelLocator.getInstance();
         private var stockPurchase : StockPurchase = model.stockPurchase;
         
         public function execute( event : CairngormEvent ) : void
       {
            stockPurchase.statusMessage = "";
            stockPurchase.isPending = true;             
             
           var purchaseStockEvent : PurchaseStockEvent = PurchaseStockEvent( event ); 
          var symbol : String = purchaseStockEvent.symbol;
          var quantity : int = purchaseStockEvent.quantity;
          var delegate : StockMarketDelegate = new StockMarketDelegate( this );
          delegate.purchaseStockForSymbol( symbol, quantity );
       }
        
       public function onResult( event : * = null ) : void
       {
            stockPurchase.statusMessage = "Purchase succesfull.";
            stockPurchase.isPending = false;            
       }
        
       public function onFault( event : * = null ) : void
       {
           stockPurchase.statusMessage = "Purchase error.";
           stockPurchase.isPending = false;               
       }
    }
}