public async Task <CurrencyRateResponse> CreateAsync([FromBody] CurrencyRateRequest request) { try { await _currencyRateService.CreateAsync(request.BaseAsset, request.QuoteAsset, request.Rate); } catch (EntityAlreadyExistsException) { return(new CurrencyRateResponse { ErrorCode = RateErrorCode.RateAlreadyExists }); } return(new CurrencyRateResponse { BaseAsset = request.BaseAsset, QuoteAsset = request.QuoteAsset, Rate = request.Rate, ErrorCode = RateErrorCode.None }); }
public async Task <CurrencyRateResponse> UpdateAsync([FromBody] CurrencyRateRequest request) { try { await _currencyRateService.UpdateAsync(request.BaseAsset, request.QuoteAsset, request.Rate); } catch (EntityNotFoundException) { return(new CurrencyRateResponse { ErrorCode = RateErrorCode.RateDoesNotExist }); } return(new CurrencyRateResponse { BaseAsset = request.BaseAsset, QuoteAsset = request.QuoteAsset, Rate = request.Rate, ErrorCode = RateErrorCode.None }); }
public async Task <CurrencyRateResponse> GetCurrencyRate(CurrencyRateRequest request) { var currencyFrom = await currencyDataAccess.GetByIdAsync(request.FromCurrencyId); var currenctoTo = await currencyDataAccess.GetByIdAsync(request.ToCurrencyId); var rates = await currencyRateClient.GetCurrencyRates(); var rateFrom = rates.FirstOrDefault(x => x.CurrencyTo.Code == currencyFrom.Code); if (rateFrom == null) { return(new CurrencyRateResponse { Error = $"{currencyFrom.Code} rate not found", IsSuccess = false }); } var rateTo = rates.FirstOrDefault(x => x.CurrencyTo.Code == currenctoTo.Code); if (rateFrom == null) { return(new CurrencyRateResponse { Error = $"{currenctoTo.Code} rate not found", IsSuccess = false }); } return(new CurrencyRateResponse { CurrencyRate = rateFrom.Rate / rateTo.Rate, IsSuccess = true }); }