コード例 #1
0
        private void rellenoRatesList()
        {
            mockListRates = new List <RateEnt>();
            RateEnt rate = new RateEnt
            {
                Id   = 1,
                From = "EUR",
                To   = "USD",
                Rate = 1.2m
            };

            mockListRates.Add(rate);

            rate = new RateEnt
            {
                Id   = 2,
                From = "USD",
                To   = "EUR",
                Rate = 0.8m
            };
            mockListRates.Add(rate);

            rate = new RateEnt
            {
                Id   = 3,
                From = "USD",
                To   = "GBR",
                Rate = 0.6m
            };
            mockListRates.Add(rate);
        }
コード例 #2
0
        public IEnumerable <Transaction> CalculoEnEuros(IEnumerable <Transaction> listaEntrada)
        {
            List <RateEnt>     ratesList   = Services.ServiceConexionAPI.GetRates().ToList();
            List <Transaction> listaSalida = new List <Transaction>();

            foreach (Transaction tr in listaEntrada)
            {
                //Si viene a Euros directamente la insertamos
                if (tr.Currency.Equals("EUR"))
                {
                    listaSalida.Add(tr);
                }
                else //Sino buscamos la conversion
                {
                    //Buscamos primero conversion directa
                    RateEnt rate = ratesList.Where(rt => rt.From.Equals(tr.Currency) && rt.To.Equals("EUR")).FirstOrDefault();

                    //Si lo encuentra a la primera calculamos el Amount a EUR y lo añadimos
                    if (rate != null)
                    {
                        Transaction trTemp = tr;

                        trTemp.Currency = "EUR";
                        trTemp.Amount   = tr.Amount * rate.Rate;

                        listaSalida.Add(trTemp);
                    }
                    else
                    {
                        RateEnt     primerRate     = new RateEnt();
                        RateEnt     rateIntermedio = new RateEnt();
                        Transaction trTemp         = tr;

                        //Cogemos todos los rates que tienen from = al de entrada
                        List <RateEnt> ratesFrom = ratesList.Where(rt => rt.From.Equals(tr.Currency)).ToList();

                        //Por cada rate from(secundario) buscamos si tiene conversion a Euros
                        foreach (RateEnt rateTo in ratesFrom)
                        {
                            RateEnt rateToEUR = ratesList.Where(rt => rt.From.Equals(rateTo.To) && rt.To.Equals("EUR")).FirstOrDefault();

                            //Si encuentra el secundario asigna los rates para los calculos posteriores
                            if (rateToEUR != null)
                            {
                                primerRate     = rateTo;
                                rateIntermedio = rateToEUR;
                            }
                        }

                        trTemp.Currency = "EUR";
                        trTemp.Amount   = (tr.Amount * primerRate.Rate) / rateIntermedio.Rate;

                        listaSalida.Add(trTemp);
                    }
                }
            }

            return(listaEntrada);
        }
コード例 #3
0
        public ActionResult <RateEnt> Get(int id)
        {
            RateEnt rate = new RateEnt();

            try
            {
                rate = (RateEnt)negocio.GetRates().Where(r => r.Id == id).SingleOrDefault();
                return(rate);
            }
            catch (Exception ex)
            {
                logger.Write(Capa.Presentacion, ex.Message);
                return(BadRequest("Error del servidor"));
            }
        }