コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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
            });
        }
コード例 #5
0
 void Awake()
 {
     instance = this;
 }