public async Task <ResponseRates> GetAllRates(string c_from, List <string> c_to) { var url = ApiEndpoint.AllRates(c_from, c_to.ToArray()); var response = await client.GetAsync(url).ConfigureAwait(false); var jsonResult = response.Content.ReadAsStringAsync().Result; ResponseRates rates = JsonConvert.DeserializeObject <ResponseRates>(jsonResult); return(rates); }
//Should be in another place private float GenerateTotalAmmount(float Ammount, ResponseRates ConversionRate, ResponseRates commisionRate) { float FinalSum = 0; FinalSum = Ammount * ConversionRate.Rates.First().Value; if (FinalSum > 100) { FinalSum -= 1 * commisionRate.Rates.First().Value; } else { FinalSum -= (FinalSum / 100) * commisionRate.Rates.First().Value; } return(FinalSum); }
public async Task <int> Handle(CreateTransferCommand request, CancellationToken cancellationToken) { var entity = new Transaction { Ammount = request.Ammount, DestinationCurrency = request.DestinationCurrency.ToString(), SourceCurrency = request.SourceCurrency.ToString(), Expeditor_id = request.SourceUserID, Destinatar_id = await _Identity.GetUserId(request.CNP), Status = "Pending" }; ResponseRates ConversionRate = await _exchangeApiClient.GetExchangeRate(request.SourceCurrency, request.DestinationCurrency); ResponseRates CommisionRate = new ResponseRates(); if (request.SourceCurrency != Currency.EUR.ToString()) { CommisionRate = await _exchangeApiClient.GetExchangeRate(Currency.EUR.ToString(), request.DestinationCurrency); } else { CommisionRate.Rates.Add(Currency.EUR.ToString(), 1); } entity.FinalAmmount = GenerateTotalAmmount(request.Ammount, ConversionRate, CommisionRate); var token = new Token() { Transaction = entity, ExpirationDate = _datetime.Now.AddDays(10), Expired = false }; _context.Transactions.Add(entity); await _context.SaveChangesAsync(cancellationToken); token.TransactionID = entity.Id; _context.Tokens.Add(token); await _context.SaveChangesAsync(cancellationToken); return(token.Id); }