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")); }