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); } }
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)); } }