コード例 #1
0
        public ActionResult <List <StockResponse> > Get([FromQuery] string query, [FromQuery] DateTime?date, [FromQuery] DateTime?fromDate, [FromQuery] DateTime?toDate)
        {
            IEnumerable <Stock> stocks = null;
            Date resultDate;

            if ((date != null) && (fromDate != null) && (toDate != null))
            {
                return(BadRequest("Cannot specify a date and a date range"));
            }

            if (query == null)
            {
                if (date != null)
                {
                    resultDate = DateFromParameter(date);
                    stocks     = _StockQuery.All(resultDate);
                }
                else if ((fromDate != null) || (toDate != null))
                {
                    var dateRange = DateRangeFromParameter(fromDate, toDate);
                    resultDate = dateRange.ToDate;

                    stocks = _StockQuery.All(dateRange);
                }
                else
                {
                    stocks     = _StockQuery.All();
                    resultDate = Date.Today;
                }
            }
            else
            {
                if (date != null)
                {
                    resultDate = DateFromParameter(date);
                    stocks     = _StockQuery.Find(resultDate, x => MatchesQuery(x, query));
                }
                else if ((fromDate != null) || (toDate != null))
                {
                    var dateRange = DateRangeFromParameter(fromDate, toDate);
                    resultDate = dateRange.ToDate;

                    stocks = _StockQuery.Find(dateRange, x => MatchesQuery(x, query));
                }
                else
                {
                    stocks     = _StockQuery.Find(x => MatchesQuery(x, query));
                    resultDate = Date.Today;
                }
            }

            return(Ok(stocks.Select(x => x.ToResponse(resultDate)).ToList()));
        }
コード例 #2
0
        public ServiceResult ListStock(Guid id, string asxCode, string name, Date listingDate, bool trust, AssetCategory category)
        {
            // Check that id is unique
            var stock = _StockRepository.Get(id);

            if (stock != null)
            {
                return(ServiceResult.Error("A stock with id {0} already exists", id));
            }

            // Check if stock already exists with this code
            var effectivePeriod = new DateRange(listingDate, Date.MaxValue);

            if (_StockQuery.Find(effectivePeriod, y => y.AsxCode == asxCode).Any())
            {
                return(ServiceResult.Error("A stock already exists with the code {0} on {1}", asxCode, listingDate.ToShortDateString()));
            }

            stock = new Stock(id);
            stock.List(asxCode, name, listingDate, trust, category);
            _StockRepository.Add(stock);
            _StockCache.Add(stock);

            var stockPriceHistory = new StockPriceHistory(id);

            _StockPriceHistoryRepository.Add(stockPriceHistory);
            _StockPriceHistoryCache.Add(stockPriceHistory);

            stock.SetPriceHistory(stockPriceHistory);

            return(ServiceResult.Ok());
        }