Ejemplo n.º 1
0
        public RatesEO Get(string fromCurrency, string toCurrency)
        {
            RatesEO        Rates = null;
            List <RatesEO> listRates;

            try
            {
                if (!string.IsNullOrEmpty(fromCurrency) && !string.IsNullOrEmpty(toCurrency))
                {
                    listRates = _dataAccess.ListConversion();
                    if (listRates != null)
                    {
                        Rates = Utilities.Instance.CalculateConversion(listRates, fromCurrency, toCurrency);
                        if (Rates == null)
                        {
                            throw new Exception("Conversion no disponible");
                        }
                    }
                    else
                    {
                        throw new Exception("El acceso a la informacion no se encuentra disponible en estos momentos. Por favor intentelo mas tarde.");
                    }
                }
                else
                {
                    throw new Exception("Parametros obligatorios para la conversión de moneda");
                }
                return(Rates);
            }
            catch (Exception ex)
            {
                _fileLog.WriteLog(string.Format("{0}. Origen de la excepcion:{1}.", ex.Message, ex.StackTrace));
                return(Rates);
            }
        }
Ejemplo n.º 2
0
        public RatesEO CalculateConversion(List <RatesEO> listRates, string fromData, string toData)
        {
            RatesEO rate = null;

            rate = listRates.Where(r => r.From.ToLower() == fromData.ToLower() &&
                                   r.To.ToLower() == toData.ToLower()).FirstOrDefault();
            if (rate == null)
            {
                List <RatesEO> listFrom = listRates.Where(r => r.From.ToLower() == fromData.ToLower()).ToList();

                int  index = 0;
                bool flag  = true;
                do
                {
                    List <RatesEO> listTo = listRates.Where(r => r.From.ToLower() == listFrom[index].To.ToLower() && r.To.ToLower() == toData.ToLower()).ToList();

                    if (!listTo.Count.Equals(0))
                    {
                        rate = (from o in listFrom
                                join d in listTo
                                on o.To equals d.From
                                select new RatesEO
                        {
                            From = o.From,
                            To = d.To,
                            rate = Math.Ceiling(o.rate * d.rate)
                        }
                                ).FirstOrDefault();

                        if (rate != null)
                        {
                            flag = false;
                        }
                    }
                    else
                    {
                        flag = false;
                    }

                    index++;
                } while (flag);
            }

            return(rate);
        }
Ejemplo n.º 3
0
        public TransactionsEO GetBySku(string sku)
        {
            TransactionsEO        transaction      = null;
            List <TransactionsEO> listTransactions = null;
            string currency = System.Configuration.ConfigurationManager.AppSettings["Currency"].ToUpper();

            try
            {
                listTransactions = _dataAccess.ListTransaction();
                if (listTransactions != null)
                {
                    if (listTransactions.Any(t => t.Sku.ToUpper() == sku.ToUpper()))
                    {
                        decimal        totalAmount = 0;
                        RatesEO        objRate     = null;
                        List <RatesEO> listRate    = _conversionCurrency.List();
                        if (listRate == null)
                        {
                            throw new Exception("Informacion de conversion de moneda no disponible intente mas tarde.");
                        }

                        foreach (TransactionsEO itemTransaction in listTransactions.Where(t => t.Sku.ToUpper() == sku.ToUpper()))
                        {
                            if (itemTransaction.Currency.ToUpper() != currency)
                            {
                                objRate = Utilities.Instance.CalculateConversion(listRate, itemTransaction.Currency, currency);
                                if (objRate != null)
                                {
                                    totalAmount = totalAmount + (objRate.rate * itemTransaction.Amount);
                                }
                                else
                                {
                                    throw new Exception("Conversion no disponible");
                                }
                            }
                            else
                            {
                                totalAmount = totalAmount + itemTransaction.Amount;
                            }
                        }

                        transaction = new TransactionsEO()
                        {
                            Sku      = sku.ToUpper(),
                            Currency = currency,
                            Amount   = Math.Ceiling(totalAmount)
                        };

                        return(transaction);
                    }
                    else
                    {
                        throw new Exception(string.Format("No existen productos asociados al proucto {0}", sku));
                    }
                }
                else
                {
                    throw new Exception("El acceso a la informacion no se encuentra disponible en estos momentos. Por favor intentelo mas tarde.");
                }
            }
            catch (Exception ex)
            {
                _fileLog.WriteLog(string.Format("{0}. Origen de la excepcion:{1}.", ex.Message, ex.StackTrace));
                return(transaction);
            }
        }