incubator-stonehenge-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shan...@apache.org
Subject svn commit: r741394 - /incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php
Date Fri, 06 Feb 2009 04:06:19 GMT
Author: shankar
Date: Fri Feb  6 04:06:18 2009
New Revision: 741394

URL: http://svn.apache.org/viewvc?rev=741394&view=rev
Log:
request processor 

Added:
    incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php

Added: incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php?rev=741394&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php (added)
+++ incubator/stonehenge/trunk/stocktrader/php/trader_client/request_processor.php Fri Feb
 6 04:06:18 2009
@@ -0,0 +1,1001 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+define ("STATUS_SUCCESS", 1);
+define ("STATUS_FAILURE", 0);
+define ("TRUE", 1);
+define ("FALSE", 0);
+define ("ORDER_TYPE_BUY", "buy");
+define ("ORDER_TYPE_SELL", "sell");
+define ("COOKIE_USERNAME", "username");
+define ("COOKIE_ENDPOINT", "endpoint");
+define ("DEFAULT_ENDPOINT", "http://localhost:80/TradeServiceWcf/TradeServiceWcf.svc");
+define ("CLIENT_NAME", "PHP_CLIENT");
+
+/*this will set the default end point if end point is NOT already set.*/
+SetDefaultEndpoint(); 
+
+/**
+ * This class includes the summery of acctivities of the user
+ */
+
+class userAccountSummary
+{
+	public $totalBuys; //double
+	public $totalSells; //double
+	public $totalTax; //double
+	public $totalImpact; //double
+}
+
+/**
+ * This class encapsulates login data of a user
+ */
+
+class login 
+{
+    public $userID; // string
+    public $password; // string
+}
+
+/**
+ * This class describes the response of login, if success gives 
+ * the account details of the user
+ */
+
+class loginResponse 
+{
+    public $loginReturn; // AccountDataBean
+}
+
+/**
+ * This class encapsulates user account details
+ */
+
+class AccountDataBean 
+{
+    public $accountID; // int
+    public $loginCount; // int
+    public $logoutCount; // int
+    public $lastLogin; // dateTime
+    public $creationDate; // dateTime
+    public $balance; // decimal
+    public $openBalance; // decimal
+    public $profileID; // string
+}
+
+/**
+ * This class will contain details needed to get the orders of a user
+ */
+
+class getOrders 
+{
+    public $userID; // string
+}
+
+/**
+ * This class encapsulates the response of a getOrders request
+ */
+
+class getOrdersResponse 
+{
+    public $getOrdersReturn; // ArrayOfOrderDataBean
+}
+
+/**
+ * This class encapsulates the order details of a user
+ */
+
+class ArrayOfOrderDataBean 
+{
+    public $OrderDataBean; // array[0, unbounded] of OrderDataBean
+}
+
+/**
+ * This class encapsulates the details of an order
+ */
+
+class OrderDataBean 
+{
+    public $orderID; // int
+    public $orderType; // string
+    public $orderStatus; // string
+    public $openDate; // dateTime
+    public $completionDate; // dateTime
+    public $quantity; // double
+    public $price; // decimal
+    public $orderFee; // decimal
+    public $symbol; // string
+}
+
+/**
+ * This class encapsulates the details needed to get account data of a 
+ * particular user
+ */
+
+class getAccountData 
+{
+    public $userID; // string
+}
+
+/**
+ * This class encapsulates the response of getAccountData request
+ */
+
+class getAccountDataResponse 
+{
+    public $getAccountDataReturn; // AccountDataBean
+}
+
+/** 
+ * This class encapsulates details needed to get account profile information
+ */
+
+class getAccountProfileData 
+{
+    public $userID; // string
+}
+
+/**
+ * This class encapsulates the response of getAccountProfileData request
+ */
+
+class getAccountProfileDataResponse 
+{
+    public $getAccountProfileDataReturn; // AccountProfileDataBean
+}
+
+/**
+ * Encapsulates details of an account profile
+ */
+
+class AccountProfileDataBean 
+{
+    public $userID; // string
+    public $password; // string
+    public $fullName; // string
+    public $address; // string
+    public $email; // string
+    public $creditCard; // string
+}
+
+/**
+ * Contain information needed to update account profile 
+ */
+
+class updateAccountProfile 
+{
+    public $profileData; // AccountProfileDataBean
+}
+
+/**
+ * Contains response of updated account profile
+ */
+
+class updateAccountProfileResponse {
+    public $updateAccountProfileReturn; // AccountProfileDataBean
+}
+
+/**
+ * Information needed to logout a user
+ */
+
+class logout 
+{
+    public $userID; // string
+}
+
+/**
+ * Response of logout
+ */
+
+class logoutResponse 
+{
+}
+
+/**
+ * Details needed to do "buy" transaction
+ */
+
+class buy 
+{
+    public $userID; // string
+    public $symbol; // string
+    public $quantity; // double
+    public $orderProcessingMode; // int
+}
+
+/** 
+ * Response of "buy" transaction
+ */
+
+class buyResponse 
+{
+    public $buyReturn; // OrderDataBean
+}
+
+/**
+ * Details needed to do "sell" transaction
+ */
+
+class sell
+{
+    public $userID; // string
+    public $holdingID; // int
+    public $orderProcessingMode; // int
+}
+
+/**
+ * Response of "sell" transaction
+ */
+
+class sellResponse 
+{
+    public $sellReturn; // OrderDataBean
+}
+
+/**
+ * Details needed to get holdings of a user
+ */
+
+class getHoldings 
+{
+    public $userID; // string
+}
+
+/**
+ * Response of getHolding request
+ */
+
+class getHoldingsResponse 
+{
+    public $getHoldingsReturn; // ArrayOfHoldingDataBean
+}
+
+/**
+ * Details of holdings of a user
+ */
+
+class ArrayOfHoldingDataBean 
+{
+    public $HoldingDataBean; // array[0, unbounded] of HoldingDataBean
+}
+
+/**
+ * Details of a holding
+ */
+
+class HoldingDataBean 
+{
+    public $holdingID; // int
+    public $quantity; // double
+    public $purchasePrice; // decimal
+    public $purchaseDate; // dateTime
+    public $quoteID; // string
+}
+
+/**
+ * Information needed to register a user to the system
+ */
+
+class register 
+{
+    public $userID; // string
+    public $password; // string
+    public $fullname; // string
+    public $address; // string
+    public $email; // string
+    public $creditcard; // string
+    public $openBalance; // decimal
+}
+
+/**
+ * Account details of registered user
+ */
+
+class registerResponse 
+{
+    public $registerReturn; // AccountDataBean
+}
+
+/**
+ * Details needed to get closed orders of a user
+ */
+
+class getClosedOrders 
+{
+    public $userID; // string
+}
+
+/**
+ * Response of getClosedOrder request
+ */
+
+class getClosedOrdersResponse 
+{
+    public $getClosedOrdersReturn; // ArrayOfOrderDataBean
+}
+
+/**
+ * Details needed to get market summery
+ */
+
+class getMarketSummary 
+{
+}
+
+/**
+ * Response of getMarketSummary request
+ */
+
+class getMarketSummaryResponse 
+{
+    public $getMarketSummaryReturn; // MarketSummaryDataBeanWS
+}
+
+/**
+ * Details about market summery
+ */
+
+class MarketSummaryDataBeanWS 
+{
+    public $TSIA; // decimal
+    public $openTSIA; // decimal
+    public $volume; // double
+    public $topGainers; // ArrayOfQuoteDataBean
+    public $topLosers; // ArrayOfQuoteDataBean
+    public $summaryDate; // dateTime
+}
+
+/**
+ * Details of Quote request
+ */
+
+class ArrayOfQuoteDataBean 
+{
+    public $QuoteDataBean; // array[0, unbounded] of QuoteDataBean
+}
+
+/**
+ * Details of a quote
+ */
+
+class QuoteDataBean 
+{
+    public $symbol; // string
+    public $companyName; // string
+    public $price; // decimal
+    public $open; // decimal
+    public $low; // decimal
+    public $high; // decimal
+    public $change; // double
+    public $volume; // double
+}
+
+/**
+ * Details needed to get quote information of a symbol
+ */
+
+class getQuote 
+{
+    public $symbol; // string
+}
+
+/**
+ * Response of getQuote request
+ */
+
+class getQuoteResponse 
+{
+    public $getQuoteReturn; // QuoteDataBean
+}
+
+/**
+ * Details needed to get a particular holding of a user
+ */
+
+class getHolding 
+{
+    public $userID; // string
+    public $holdingID; // int
+}
+
+/**
+ * Response of getHolding request
+ */
+
+class getHoldingResponse 
+{
+    public $getHoldingReturn; // HoldingDataBean
+}
+
+/**
+ * Details needed to get top orders of a user
+ */
+
+class getTopOrders 
+{
+    public $userID; // string
+}
+
+/**
+ * Response of getTopOrders request
+ */
+
+class getTopOrdersResponse 
+{
+    public $getTopOrdersReturn; // ArrayOfOrderDataBean
+}
+
+/**
+ * Details needed to sell a holding of a user
+ */
+
+class sellEnhanced 
+{
+    public $userID; // string
+    public $holdingID; // int
+    public $quantity; // double
+}
+
+/**
+ * Response of sellEnhanced request
+ */
+
+class sellEnhancedResponse 
+{
+    public $sellEnhancedReturn; // OrderDataBean
+}
+
+/**
+ * Details needed to check whether service is online
+ */
+
+class isOnline 
+{
+}
+
+/**
+ * Response of service's online status
+ */
+
+class isOnlineResponse 
+{
+}
+
+/**
+ * Summery of holdings of a particular user
+ */
+
+class holdingInformation
+{
+	public $totalHoldings;
+	public $noOfHoldings;
+}
+
+/*
+ * Request send to get configurations parameter needed by client
+ */
+class ClientConfigRequest 
+{
+    /**
+     * @var string
+     */
+    public $Client;
+}
+
+/*
+ * contains information needed by client 
+ */
+class ClientConfigResponse 
+{
+    /**
+     * @var anyURI
+     */
+    public $BS;
+}
+
+/*
+ * Get the endpoint of business service
+ */
+function GetBSEndPoint()
+{
+
+	// define the class map
+	$class_map = array(
+		"ClientConfigRequest" => "ClientConfigRequest",
+		"ClientConfigResponse" => "ClientConfigResponse");
+
+    // create client in WSDL mode
+    $client = new WSClient(array ("wsdl" =>"wsdl/config_svc.wsdl",
+		"classmap" => $class_map, 
+		"to" => GetEndpoint()));
+
+    // get proxy object reference form client 
+    $proxy = $client->getProxy();
+	$input = new ClientConfigRequest();
+	$input->Client = CLIENT_NAME;
+
+    $response = $proxy->ClientConfigRequest($input);
+	if($response)
+	{
+		$endPoint = $response->BS;
+	}
+
+	return $endPoint;
+}
+
+/**
+ * This method registes a new user in the system
+ * @param userID id of the user
+ * @param password password of the user
+ * @param fullname full name of the user
+ * @param address address of the user
+ * @param email email address of the user
+ * @param creditcard credit card number of the user
+ * @param openBalance initial balance of the user
+ * @return account details of the registerd user on success. NULL otherwise.
+ */
+
+function RegisterUser($userID, $password, $fullname, 
+	$address, $email, $creditcard, $openBalance)
+{
+	$proxy = GetProxy();
+	$input = new register();
+	$input->userID = $userID;
+	$input->password = $password;
+	$input->fullname = $fullname;
+	$input->address = $address;
+	$input->email = $email;
+	$input->creditcard = $creditcard;
+	$input->openBalance = $openBalance;
+
+	$response = $proxy->register($input);
+	return $response;
+}
+
+/**
+ * Updates account profile information
+ * @param userID id of the user
+ * @param fullname full name of the user
+ * @param email email address of the user
+ * @param address address of the user
+ * @param creditcard credit card number of the user
+ * @param password password of the user
+ * @return account details of the modified user on success. NULL otherwise.
+ */
+
+function UpdateAccountProfile($userID, $fullName, $email, 
+	$address, $creditCard, $password)
+{
+	$proxy = GetProxy();
+	$input = new updateAccountProfile();
+	$input->profileData = new AccountProfileDataBean();
+	$input->profileData->userID = $userID;
+	$input->profileData->password = $password;
+	$input->profileData->fullName = $fullName;
+	$input->profileData->address = $address;
+	$input->profileData->email = $email;
+	$input->profileData->creditCard = $creditCard;
+    $response = $proxy->updateAccountProfile($input);
+	return $response;
+}
+
+/**
+ * Given the order details of a user, this method calculates summery of
+ * activities of the user. This includes total money spent on buying stocks
+ * total money earned from selling them etc.
+ * @param ordersReturn collection of orders of a user
+ * @return summery of user's activities
+ */
+
+function GetUserAccountSummary($ordersReturn)
+{
+	$index = 0;
+	while($ordersReturn->OrderDataBean[$index])
+	{
+		if ($ordersReturn->OrderDataBean[$index]->orderType == ORDER_TYPE_BUY)
+		{
+			$buys = $buys + (($ordersReturn->OrderDataBean[$index]->price) * 
+				($ordersReturn->OrderDataBean[$index]->quantity)) + 
+				($ordersReturn->OrderDataBean[$index]->orderFee);
+		}
+		else if ($ordersReturn->OrderDataBean[$index]->orderType == ORDER_TYPE_SELL)
+		{
+			$sells = $sells +  (($ordersReturn->OrderDataBean[$index]->price) * 
+				($ordersReturn->OrderDataBean[$index]->quantity)) - 
+				($ordersReturn->OrderDataBean[$index]->orderFee);
+		}
+		$tax = $tax + $ordersReturn->OrderDataBean[$index]->orderFee;
+		$index ++;
+	}
+	$accountSummary = new userAccountSummary();
+	$accountSummary->totalBuys = $buys;
+	$accountSummary->totalSells = $sells;
+	$accountSummary->totalTax = $tax;
+	$accountSummary->totalImpact = $buys + $tax - $sells;
+	return $accountSummary;
+}
+
+/**
+ * Given the holdings of a user, this methods calculate total market value of 
+ * holding and number of holdings
+ * @param holdings collection of holdings of a user
+ * @return summery of holding details
+ */
+
+function GetHoldingInformation($holdings)
+{
+	$holdingsReturn = $holdings->getHoldingsReturn;
+	$index = 0;
+	$totalHoldings= 0;
+	$marketValue = 0;
+
+	while($holdingsReturn->HoldingDataBean[$index])
+	{
+			$bean = $holdingsReturn->HoldingDataBean[$index];
+			if (!$quoteInfo[$bean->quoteID])
+			{
+				$quotes = GetQuote($bean->quoteID);
+				if ($quotes)
+					$quotesReturn = $quotes->getQuoteReturn;
+				$quoteInfo[$bean->quoteID] = $quotesReturn->price;
+			}
+			$marketValue = $marketValue + ($quoteInfo[$bean->quoteID]) * ($bean->quantity);

+
+		$totalHoldings = $totalHoldings + $holdingsReturn->HoldingDataBean[$index]->quantity
*
+			$holdingsReturn->HoldingDataBean[$index]->purchasePrice;
+		$index ++;
+	}
+	$holdingInfo = new holdingInformation();
+	$holdingInfo->totalHoldings = $marketValue;
+	$holdingInfo->noOfHoldings = $index;
+
+	return $holdingInfo;
+}
+
+/**
+ * Writes user id to cookie
+ * @param username user id of the current user
+ */
+
+function WriteCookie($username)
+{
+	setcookie(COOKIE_USERNAME, $username, time()+3600);
+}
+
+/**
+ * Deletes user id from cookie
+ * @param username user id of current user
+ */
+function DeleteCookie($username)
+{
+	setcookie(COOKIE_USERNAME, $username, time()-3600);
+	if (isset($_COOKIE[COOKIE_USERNAME]))
+		unset($_COOKIE[COOKIE_USERNAME]);
+}
+
+/** 
+ * When user logout, user id will be deleted from the cookie
+ * @param username user id of current user
+ */
+
+function LogoutUser($username)
+{
+	$proxy = GetProxy();
+	$input = new logout();
+	$input->userID = $username;
+	$response = $proxy->logout($input);
+	DeleteCookie($username);
+}
+
+/**
+ * Gets user id from cookie
+ */
+
+function GetUserFromCookie()
+{
+	return ($_COOKIE[COOKIE_USERNAME]);
+}
+
+/**
+ * Checks whether user is logged in. If so, user id cookie would have
+ * been already set. Checking whether cookie is set equals to check 
+ * whether user is logged in
+ */
+
+function IsLoggedIn()
+{
+	return isset($_COOKIE[COOKIE_USERNAME]);
+}
+
+/**
+ * Gets user id of current user
+ */
+
+function GetUser()
+{
+	return ($_COOKIE[COOKIE_USERNAME]);
+}
+
+/**
+ * Store business service's endpoint in cookie
+ * @param endPoint end point address of the business service
+ */
+
+function WriteEndpoint($endPoint)
+{
+	setcookie(COOKIE_ENDPOINT, $endPoint, time()+3600);
+}
+
+/**
+ * Sets default end point
+ */
+
+function SetDefaultEndpoint()
+{
+	if(GetEndpoint() == "")
+		WriteEndpoint(DEFAULT_ENDPOINT);
+}
+
+/**
+ * Gets stored end point address of business service
+ */
+
+function GetEndpoint()
+{
+	return ($_COOKIE[COOKIE_ENDPOINT]);
+}
+
+/**
+ * Gets proxy object to make communication with business service
+ */
+
+function GetProxy()
+{
+	/*define the class map */
+
+	$class_map = array(
+		"anyType" => "anyType", "login" => "login", 
+		"loginResponse" => "loginResponse", "AccountDataBean" => 
+		"AccountDataBean", "getOrders" => "getOrders", "getOrdersResponse" => 
+		"getOrdersResponse", "ArrayOfOrderDataBean" => "ArrayOfOrderDataBean", 
+		"OrderDataBean" => "OrderDataBean", "getAccountData" => "getAccountData", 
+		"getAccountDataResponse" => "getAccountDataResponse", 
+		"getAccountProfileData" => "getAccountProfileData", 
+		"getAccountProfileDataResponse" => "getAccountProfileDataResponse", 
+		"AccountProfileDataBean" => "AccountProfileDataBean", 
+		"updateAccountProfile" => "updateAccountProfile", 
+		"updateAccountProfileResponse" => "updateAccountProfileResponse", 
+		"logout" => "logout", "logoutResponse" => "logoutResponse", "buy" 
+		=> "buy", "buyResponse" => "buyResponse", "sell" => "sell", 
+		"sellResponse" => "sellResponse", "getHoldings" => "getHoldings", 
+		"getHoldingsResponse" => "getHoldingsResponse", "ArrayOfHoldingDataBean" 
+		=> "ArrayOfHoldingDataBean", "HoldingDataBean" => "HoldingDataBean", 
+		"register" => "register", "registerResponse" => "registerResponse", 
+		"getClosedOrders" => "getClosedOrders", "getClosedOrdersResponse" => 
+		"getClosedOrdersResponse", "getMarketSummary" => "getMarketSummary", 
+		"getMarketSummaryResponse" => "getMarketSummaryResponse", 
+		"MarketSummaryDataBeanWS" => "MarketSummaryDataBeanWS", 
+		"ArrayOfQuoteDataBean" => "ArrayOfQuoteDataBean", "QuoteDataBean" => 
+		"QuoteDataBean", "getQuote" => "getQuote", "getQuoteResponse" => 
+		"getQuoteResponse", "getHolding" => "getHolding", "getHoldingResponse" 
+		=> "getHoldingResponse", "getTopOrders" => "getTopOrders", 
+		"getTopOrdersResponse" => "getTopOrdersResponse", "sellEnhanced" => 
+		"sellEnhanced", "sellEnhancedResponse" => "sellEnhancedResponse", 
+		"isOnline" => "isOnline", "isOnlineResponse" => "isOnlineResponse");
+
+    	$client = new WSClient(array ("wsdl" =>"wsdl/TradeServiceWcf.svc.wsdl",
+			"classmap" => $class_map,
+			"to" => GetBSEndPoint()));
+		//We can set this port through tcpmon
+
+	$proxy = $client->getProxy();
+	return $proxy;
+}
+
+/**
+ * Sends login request to verify whether current user is authorized
+ * @param userid user id of current user
+ * @param password password given by current user
+ * @return profile id of the user if login is success. NULL otherwise
+ */
+ 
+function Login($userid, $password)
+{
+	$proxy = GetProxy();
+	$input = new login();
+	$input->userID = $userid;
+	$input->password = $password;
+	$response = $proxy->login($input);
+
+	return $response->loginReturn->profileID;
+}
+
+/**
+ * Gets orders of current user
+ * @param userid user id of current user
+ * @return collection of orders of the user
+ */
+
+function GetOrders($userid)
+{
+	$proxy = GetProxy();
+	$input = new getOrders();
+	$input->userID = $userid;
+	$response = $proxy->getOrders($input);
+	return $response;
+}
+
+/**
+ * Gets market summary
+ * @return market summery
+ */
+
+function GetMarketSummary()
+{
+	$proxy = GetProxy();
+    $input = new getMarketSummary();
+	$response = $proxy->getMarketSummary($input);
+	return $response;
+}
+
+/**
+ * Gets account details of current user
+ * @param userid user id of current user
+ * @return account details if success. NULL otherwise
+ */
+
+function GetAccountData($userid)
+{
+	$proxy = GetProxy();
+    $input = new getAccountData();
+	$input->userID = $userid;
+    $response = $proxy->getAccountData($input);
+	return $response;
+}
+
+/**
+ * Gets account profile information of current user
+ * @param userid user id of current user
+ * @return account profile data of current user if success. NULL otherwise
+ */
+
+function GetAccountProfileData($userid)
+{
+	$proxy = GetProxy();
+    $input = new getAccountProfileData();
+	$input->userID = $userid;
+    $response = $proxy->getAccountProfileData($input);
+	return $response;
+}
+
+/**
+ * Gets holding details of given user
+ * @param userid user id of current user
+ * returns collection of holding if success. NULL otherwise
+ */
+
+function GetHoldings($userid)
+{
+	$proxy = GetProxy();
+    $input = new getHoldings();
+	$input->userID = $userid;
+    $response = $proxy->getHoldings($input);
+	return $response;
+}
+
+/**
+ * Gets quote of given symbol
+ * @param symbol id of the stock
+ * @return details of the symbol when success. NULL otherwise
+ */
+
+function GetQuote($symbol)
+{
+	$proxy = GetProxy();
+    $input = new getQuote();
+	$input->symbol = $symbol;
+	$response = $proxy->getQuote($input);
+	return $response;
+}
+
+
+/**
+ * Sells given holding or part of it of given user
+ * @param userID user id of current user
+ * @param holdingID holding id of the holding
+ * @param quantity number of stocks to be sold
+ * @return details of sell order if success. NULL otherwise
+ */
+
+function SellEnhanced($userID, $holdingID, $quantity)
+{
+	$proxy = GetProxy();
+    $input = new sellEnhanced();
+	$input->userID = $userID;
+	$input->holdingID = $holdingID;
+	$input->quantity = $quantity;
+    $response = $proxy->sellEnhanced($input);
+	return $response;
+}
+
+/**
+ * Buys number of stocks of given symbol 
+ * @param userID user id of current user
+ * @param symbol symbol of needed stock
+ * @quantity number of stocks needed
+ * @mode mode of buying
+ * @return details of buy order if success. NULL otherwise
+ */
+
+function Buy($userID, $symbol, $quantity, $mode)
+{
+	$proxy = GetProxy();
+    $input = new buy();
+	$input->symbol = $symbol;
+	$input->userID = $userID;
+	$input->quantity = $quantity;
+	$input->orderProcessingMode = $mode;
+    $response = $proxy->buy($input);
+	return $response;
+}
+
+/**
+ * Gets closed orders of current user
+ * @return collection of orders whose status is closed
+ */
+
+function GetClosedOrders()
+{
+	$proxy = GetProxy();
+	$input = new getClosedOrders();
+	$input->userID = GetUserFromCookie();
+	if($input->userID)
+	{
+		$response = $proxy->getClosedOrders($input);
+		$getClosedOrdersReturn = $response->getClosedOrdersReturn;
+	}
+	return $getClosedOrdersReturn;
+}
+
+/**
+ * Gets closed orders of current user if there are any. Then prints it
+ */
+
+function checkForClosedOrders()
+{
+	$proxy = GetProxy();
+	$input = new getClosedOrders();
+	$input->userID = GetUserFromCookie();
+	if($input->userID)
+	{
+		$response = $proxy->getClosedOrders($input);
+		$getClosedOrdersReturn = $response->getClosedOrdersReturn;
+
+		$index = 0;
+		while ($getClosedOrdersReturn->OrderDataBean[$index])
+		{
+			print("THIS IS THE ID OF THE JUST CLOSED ORDER:");
+			print($getClosedOrdersReturn->OrderDataBean[$index]->orderID);
+			print("\n");
+			$index ++;
+		}
+	}
+}
+
+?>



Mime
View raw message