Пример #1
0
        public async Task AddIndexValues(StockIndexValueInputs stockIndexValueInputs)
        {
            if (ValidateInputs(stockIndexValueInputs) && await _stockIndexTickerService.CheckIfStockTickerExists(stockIndexValueInputs.Ticker))
            {
                var ticker = await _stockIndexTickerService.GetStockIndex(stockIndexValueInputs.Ticker);

                var tickerId   = ticker.TickerId;
                var connection = _connectionService.GetConnectionToCommonShard();
                var startTime  = stockIndexValueInputs.StartDate;
                var endTime    = stockIndexValueInputs.EndDate;

                var totalNumberOfDays           = CalculateNumberOfWeekDays(startTime, endTime);
                var numberOfDaysTickerIsPresent = await _stockIndexValueData.GetNumberOfDaysTickerValueIsPresent(connection, tickerId, startTime, endTime);

                if (numberOfDaysTickerIsPresent != totalNumberOfDays)
                {
                    var stockPrice = await _marketDataService.GetDailyStockPrice(stockIndexValueInputs.Ticker,
                                                                                 stockIndexValueInputs.StartDate,
                                                                                 stockIndexValueInputs.EndDate);

                    var indexValues = MapMarketDataToIndexValueModel(stockPrice, tickerId);
                    await _stockIndexValueData.AddIndexValue(connection, indexValues);
                }

                _connectionService.DisposeConnection(connection);
            }
        }
Пример #2
0
        private bool ValidateInputs(StockIndexValueInputs stockIndexValueInputs)
        {
            var startDate = stockIndexValueInputs.StartDate.Date;
            var endDate   = stockIndexValueInputs.EndDate.Date;

            if (endDate < startDate)
            {
                return(false);
            }
            if (endDate > DateTime.Now.Date || startDate > DateTime.Now.Date)
            {
                return(false);
            }

            return(true);
        }
        public async Task <IActionResult> AddStockIndexValues([FromBody] StockIndexValueInputs indexValueInputs)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                await _stockIndexValueService.AddIndexValues(indexValueInputs);

                return(Ok());
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }