public async Task ExchangeMoney(MoneyExchangeDto moneyExchangeDto) { var user = await _userRepository.GetAsync(moneyExchangeDto.UserId); if (user == null) { throw new UserNotFoundException($"{moneyExchangeDto.UserId} is not found."); } var currencyFrom = await _currencyRepository.GetAsync(moneyExchangeDto.CurrencyFrom); if (currencyFrom == null) { throw new CurrencyNotFoundException($"{moneyExchangeDto.CurrencyFrom} is not found."); } var currencyTo = await _currencyRepository.GetAsync(moneyExchangeDto.CurrencyTo); if (currencyTo == null) { throw new CurrencyNotFoundException($"{moneyExchangeDto.CurrencyTo} is not found."); } user.ExchangeMoney(new Money(moneyExchangeDto.Amount, currencyFrom), currencyTo); await _userRepository.UpdateBalanceSync(user); }
public async Task When_ExchangeMoney_Then_ShouldReturn_Ok() { var fixture = new Fixture(); var moneyExchangeDto = new MoneyExchangeDto(); _moneyExchangeAppServiceMock.Setup(x => x.ExchangeMoney(moneyExchangeDto)); var moneyController = new MoneyController(_moneyExchangeAppServiceMock.Object); var result = await moneyController.ExchangeMoney(moneyExchangeDto); result.ShouldBeOfType <OkObjectResult>(); }
public async Task <IActionResult> ExchangeMoney([FromBody] MoneyExchangeDto moneyExchangeDto) { await _moneyExchangeAppService.ExchangeMoney(moneyExchangeDto); return(Ok(1)); }