コード例 #1
0
        public async Task <JsonResult> Get(
            [FromServices] IMediator mediator)
        {
            var query             = new GetCoinsQuery();
            GetCoinsResponse data = await mediator.Send(query);

            return(new JsonResult(data.Coins));
        }
コード例 #2
0
        public async Task <IActionResult> Surrender(
            [FromServices] IMediator mediator,
            [FromBody] SurrenderDto surrender)
        {
            GetCoinsResponse resultQuery = await mediator.Send(new GetCoinsQuery());

            var coins = new List <Coins>(resultQuery.Coins).OrderByDescending(x => x.Par).ToList();

            int index = 0;

            while (surrender.Surrender != 0)
            {
                if (index > coins.Count - 1)
                {
                    break;
                }

                if (coins[index].Count > 0 && surrender.Surrender >= coins[index].Par)
                {
                    surrender.Surrender -= coins[index].Par;
                    coins[index].Count  -= 1;
                }
                else
                {
                    index++;
                }
            }

            foreach (var coin in coins)
            {
                var command = new UpdateCoinCommand(coin);
                await mediator.Send(command);
            }

            return(Ok(surrender));
        }