Exemplo n.º 1
0
        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
            });
        }
Exemplo n.º 2
0
        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
            });
        }