public string Revert(SaveCurrencyExchangeData model)
        {
            string message;

            var currencyExchange = _paymentRepository.CurrencyExchanges.SingleOrDefault(c => c.Brand.Id == model.BrandId && c.CurrencyTo.Code == model.Currency);

            if (currencyExchange == null)
            {
                throw new RegoException("Currency Exchange not found");
            }

            if (currencyExchange.PreviousRate == null)
            {
                throw new RegoException("Currency Exchange Previous Rate not found");
            }

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                currencyExchange.PreviousRate = currencyExchange.CurrentRate;
                currencyExchange.CurrentRate  = model.PreviousRate;
                currencyExchange.DateUpdated  = DateTimeOffset.UtcNow;
                currencyExchange.UpdatedBy    = _actorInfoProvider.Actor.UserName;

                _paymentRepository.SaveChanges();

                scope.Complete();

                message = "app:currencies.updated";
            }

            return(message);
        }
        public string Add(SaveCurrencyExchangeData model)
        {
            string message;

            if (_queries.GetCurrencyExchanges().Any(c => c.Brand.Id == model.BrandId && c.IsBaseCurrency && c.Brand.BaseCurrencyCode == model.Currency))
            {
                throw new RegoException("Base currency can't set as Currency To");
            }

            if (_queries.GetCurrencyExchanges().Any(c => c.BrandId == model.BrandId && !c.IsBaseCurrency && c.CurrencyToCode == model.Currency))
            {
                throw new RegoException("Currency Exchange Rate already exists");
            }

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var currencyExchange = new CurrencyExchange
                {
                    BrandId        = model.BrandId,
                    CurrencyToCode = model.Currency,
                    CurrentRate    = model.CurrentRate,
                    CreatedBy      = _actorInfoProvider.Actor.UserName,
                    DateCreated    = DateTimeOffset.UtcNow,
                };

                _paymentRepository.CurrencyExchanges.Add(currencyExchange);
                _paymentRepository.SaveChanges();

                scope.Complete();

                message = "app:currencies.created";
            }

            return(message);
        }
Exemplo n.º 3
0
 public dynamic RevertExchangeRate(SaveCurrencyExchangeData data)
 {
     try
     {
         _currencyExchangeCommands.Revert(data);
         return(this.Success());
     }
     catch (RegoException exception)
     {
         return(this.Failed(exception));
     }
 }
Exemplo n.º 4
0
        public ActionResult AddExchangeRate(SaveCurrencyExchangeData data)
        {
            try
            {
                var currencyExchange = new SaveCurrencyExchangeData
                {
                    BrandId     = data.BrandId,
                    CreatedBy   = "CreatedBy",
                    DateCreated = DateTimeOffset.UtcNow,
                    Currency    = data.Currency,
                    CurrentRate = data.CurrentRate
                };

                _currencyExchangeCommands.Add(currencyExchange);

                return(this.Success());
            }
            catch (RegoException exception)
            {
                return(this.Failed(exception));
            }
        }