public async Task <SubmitTradeResponse> Post([FromBody] Trade trade) { var response = new SubmitTradeResponse(); try { response = await _tradeProvider.EnqueueTradeRequest(trade); } catch (Exception ex) { response.Status = "Failure"; response.Error = new Error() { ErrorCode = "500", ErrorMessage = "Internal Server Error" }; } return(response); }
public async Task <SubmitTradeResponse> EnqueueTradeRequest(Trade trade) { var submitTradeResponse = new SubmitTradeResponse() { Status = Constants.ResponseStatus.Success }; try { var validationError = ValidateTrade(trade); if (validationError != null) { submitTradeResponse.Status = Constants.ResponseStatus.Failure; submitTradeResponse.Error = validationError; } else { trade.SubmitDateTime = DateTime.Now; /* * NOTE: Currently we are saving our stocks in a static list. * Tomorrow, may be we might same them in the database. * That is where async and await will be most useful. */ _tradeQueue.Add(trade); var currentQueueCount = _tradeQueue.Count(); trade.Id = currentQueueCount; submitTradeResponse.TradeId = "R" + trade.Id; } } catch (Exception ex) { submitTradeResponse.Error = GetError("500", "An Error occurred while submitting Trade request."); submitTradeResponse.Status = Constants.ResponseStatus.Failure; } return(submitTradeResponse); }