Exemple #1
0
        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);
        }
Exemple #2
0
        //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);
        }
Exemple #3
0
        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);
        }