

using System;
using Spring.EmsQuickStart.Common.Data;
using Spring.EmsQuickStart.Server.Services;

namespace Spring.EmsQuickStart.Server.Services.Stubs
{
    public class ExecutionVenueServiceStub : IExecutionVenueService
    {
        public TradeResponse ExecuteTradeRequest(TradeRequest request)
        {
            TradeResponse response = new TradeResponse();
            response.OrderType = request.OrderType;
            response.Price = CalculatePrice(request.Ticker, request.Quantity, request.OrderType, request.Price, request.UserName);
            response.Quantity = request.Quantity;
            response.Ticker = request.Ticker;
            response.ConfirmationNumber = new Guid().ToString();
            return response;
        }

        private decimal CalculatePrice(string ticker, long quantity, string ordertype, decimal limitPrice, string userName)
        {
            // provide as sophisticed an impl as testing requires...for now all the same price.
            if (ordertype.CompareTo("LIMIT") == 0)
            {
                return limitPrice;
            }
            else
            {
                return 27.6m;
            }
            
        }
    }
}