using MarketData.MarketDataModel; using MarketData.DataAccess; using MarketDataServer.Authorization; using MarketData.Generator; using MarketData; using LogLevel = MarketData.LogLevel; using Microsoft.AspNetCore.Mvc; namespace MarketDataServer.Controllers { //http://localhost:8000/api/Portfolio/GetTradesSymbol?&symbol=SPY //http://73.245.214.234:8000/api/Portfolio/GetTradesSymbol?&symbol=SPY namespace MarketDataServer.Controllers { [ApiController] [Route("api/[controller]/[action]")] public class PortfolioController : ControllerBase { [HttpGet(Name = "GetOpenPositionsWithDescription")] public IEnumerable GetOpenPositionsWithDescription(String token) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[{0:G}][PortfolioController::GetOpenPositionsWithDescriptionAsOf]",DateTime.Now)); if (!Authorizations.GetInstance().IsAuthorized(token)) return null; List positionsWithDescription=new List(); PortfolioTrades openTrades=PortfolioDA.GetOpenTrades(); List positions=openTrades.GetPositions(DateTime.Now); foreach(Position position in positions) { CompanyProfile companyProfile=CompanyProfileDA.GetCompanyProfile(position.Symbol); if(null==companyProfile.Description)companyProfile.Description="Description unvailable"; positionsWithDescription.Add(new PositionWithDescription(position,companyProfile.CompanyName, companyProfile.Description)); } return positionsWithDescription; } [HttpGet(Name = "GetAccounts")] public IEnumerable GetAccounts(String token) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[{0:G}][PortfolioController::GetAccounts]",DateTime.Now)); if (!Authorizations.GetInstance().IsAuthorized(token)) return null; return PortfolioDA.GetAccounts(); } [HttpGet(Name = "GetAccountsWithOpenTrades")] public IEnumerable GetAccountsWithOpenTrades(String token) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[{0:G}][PortfolioController::GetAccountsWithOpenTrades]", DateTime.Now)); if (!Authorizations.GetInstance().IsAuthorized(token)) return null; return PortfolioDA.GetAccountsWithOpenTrades(); } [HttpGet(Name = "GetStopLimit")] public StopLimit GetStopLimit(String token,String symbol) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[{0:G}][PortfolioController::GetStopLimit]",DateTime.Now)); if(!Authorizations.GetInstance().IsAuthorized(token)) return null; StopLimit stopLimit=PortfolioDA.GetStopLimit(symbol); return stopLimit; } [HttpGet(Name = "GetPortfolioTradesWithParityPrice")] public PortfolioTradesWithParityPrice GetPortfolioTradesWithParityPrice(String token, String symbol) { MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[{0:G}][PortfolioController::GetPortfolioTradesWithParityPrice]", DateTime.Now)); if (!Authorizations.GetInstance().IsAuthorized(token)) return null; Price zeroPrice=null; DateTime latestPricingDate=PricingDA.GetLatestDate(symbol); Price latestPrice = PricingDA.GetPrice(symbol, latestPricingDate); PortfolioTrades portfolioTrades = PortfolioDA.GetTradesSymbol(symbol); if (null == portfolioTrades) return null; portfolioTrades = portfolioTrades.GetOpenTrades(); if (null == portfolioTrades) return null; PortfolioTrades portfolioTradesLots = LotAggregator.CombineLots(portfolioTrades); zeroPrice=ParityGenerator.GenerateGainLossValue(portfolioTrades,latestPrice); return new PortfolioTradesWithParityPrice(portfolioTradesLots,zeroPrice); } } } }