public async Task <IActionResult> PostAsync([FromBody] CreateTrade request) { try { var tradeId = await this.service.CreateTradeAsync(request); return(this.CreatedAtAction("get", new { tradeId }, request)); } catch (Exception exception) { this.logger.LogError(exception, Request.Path); return(this.StatusCode(StatusCodes.Status500InternalServerError)); } }
public async Task <int> CreateTradeAsync(CreateTrade request) { var trade = new Trade.Builder { Date = request.Date, CounterpartyId = request.CounterpartyId, Product = request.Product, Quantity = request.Quantity, Price = request.Price, Direction = (Direction)request.Direction }.Build(); this.UnitOfWork.TradeRepository.Insert(trade); await this.UnitOfWork.SaveChangesAsync(); return(trade.Id.Value); }
public async Task Post_ShouldReturnCreated_Async() { var request = new CreateTrade { CounterpartyId = 1, Product = "Sugar", Quantity = 100, Price = 400, Date = new DateTime(2020, 2, 25), Direction = "Sell" }; HttpResponseMessage httpResponseMessage; var json = JsonConvert.SerializeObject(request, Formatting.Indented); var encoding = Encoding.UTF8; var content = new StringContent(json, encoding, "application/json"); httpResponseMessage = await this.client.PostAsync("/api/trades", content); Assert.IsTrue(httpResponseMessage.IsSuccessStatusCode); Assert.AreEqual(HttpStatusCode.Created, httpResponseMessage.StatusCode); var requestUri = httpResponseMessage.Headers.Location; httpResponseMessage = await this.client.GetAsync(requestUri); Assert.IsTrue(httpResponseMessage.IsSuccessStatusCode); var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); var settings = new JsonSerializerSettings { ContractResolver = PrivateResolver.Default }; var trade = JsonConvert.DeserializeObject <Trade>(responseContent, settings); Assert.IsNotNull(trade); Assert.AreEqual(1, trade.CounterpartyId); Assert.AreEqual("Sugar", trade.Product); Assert.AreEqual(100, trade.Quantity); Assert.AreEqual(400m, trade.Price); Assert.AreEqual(new DateTime(2020, 2, 25), trade.Date); Assert.AreEqual(Direction.Sell.Identifier, trade.Direction); }
public async Task <TradeCreationResult> CreateTrade(TradeCreationRequest request) { var trade = new Trade(); var tradeCreationEvent = new CreateTrade() { Asset = request.Asset, Currency = request.Currency, Volume = request.Volume, Way = request.Way, TradeService = _configuration.Id, Trader = request.Trader }; await _repository.Apply(trade, tradeCreationEvent); return(new TradeCreationResult() { TradeId = trade.EntityId }); }
void Awake() { instance = this; }