Exemplo n.º 1
0
        public async Task <IActionResult> PerformTransfer(TransferViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            if (model.From == model.To)
            {
                var accounts = await _managementService.GetAccounts();

                ModelState.AddModelError("To", "Cannot transfer money to the same account.");
                // TODO into common method
                model.Accounts = accounts
                                 .Select(x => new SelectListItem($"{x.Id} ({x.CurrencyCharCode})", x.Id.ToString()))
                                 .ToArray();

                return(View("Transfer", model));
            }

            // TODO
            // 1. ensure enough money
            // 2. ?

            await _managementService.Transfer(new AccountTransferParameters
            {
                Amount           = model.Amount,
                FromAccount      = model.From.Value,
                ToAccount        = model.To.Value,
                CurrencyCharCode = model.CurrencyCharCode,
            });

            return(RedirectToAction("Index"));
        }