Untitled
unknown
plain_text
3 years ago
2.2 kB
7
Indexable
@PostMapping("/transfer/make") String processMakeTransferForm(@Valid Transfer transfer, BindingResult result) { Account fromAccount = transfer.getFromAccount(); Account toAccount = transfer.getToAccount(); LocalDateTime transferDate = LocalDateTime.now(ZoneId.of("Europe/Warsaw")); if (result.hasErrors()) { return "user/list"; } transfer.setTransferDate(transferDate); BigDecimal originalAmount = transfer.getOriginalAmount(); BigDecimal finalAmount = null; String fromCurrency = fromAccount.getCurrency(); String toCurrency = toAccount.getCurrency(); switch (fromCurrency) { case "PLN": if (toCurrency.equals("USD")) { finalAmount = originalAmount.divide(PL_USD_EXCHANGE_RATE, 2, RoundingMode.HALF_UP); break; } finalAmount = originalAmount.divide(PL_EUR_EXCHANGE_RATE, 2, RoundingMode.HALF_UP); break; case "USD": if (toCurrency.equals("PLN")) { finalAmount = originalAmount.multiply(PL_USD_EXCHANGE_RATE); break; } finalAmount = originalAmount.divide(USD_EUR_EXCHANGE_RATE, 2, RoundingMode.HALF_UP); break; case "EUR": if (toCurrency.equals("PLN")) { finalAmount = originalAmount.multiply(PL_EUR_EXCHANGE_RATE); break; } finalAmount = originalAmount.multiply(USD_EUR_EXCHANGE_RATE); break; default: throw new RuntimeException("Unreachable"); } transfer.setFinalAmount(finalAmount); transferService.update(transfer); fromAccount.setBalance(fromAccount.getBalance().subtract(originalAmount)); toAccount.setBalance(toAccount.getBalance().add(finalAmount)); accountService.update(fromAccount); accountService.update(toAccount); return "redirect:/account/list"; }
Editor is loading...