Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static CurrencyExchangeRate Update(this CurrencyExchangeRate entity, CurrencyExchangeRateModel model)
        {
            if (entity == null)
            {
                return(null);
            }

            entity.Rate = model.Rate > 0 ? model.Rate : entity.Rate;
            return(entity);
        }
Exemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="model"></param>
 /// <param name="currencies"></param>
 /// <returns></returns>
 public static CurrencyExchangeRate ToEntity(this CurrencyExchangeRateModel model, Dictionary <string, Currency> currencies)
 {
     return(new CurrencyExchangeRate
     {
         SourceId = currencies["source"].Id,
         TargetId = currencies["target"].Id,
         Rate = model.Rate,
         From = (model.Day?.Date ?? DateTime.UtcNow.Date),
         To = (model.Day?.Date.AddDays(1).AddTicks(-1) ?? DateTime.UtcNow.Date.AddDays(1).AddTicks(-1))
     });
 }
Exemplo n.º 3
0
        private void OpenDetails(CurrencyExchangeRateModel model, bool isNew = false)
        {
            this.OpenDetailsWindow(new CurrencyExchangeRateDetailsView(_currencyExchangeRateService, model, isNew, _viewModel.Currencies, _viewModel.CurrencyExchangeRates), () =>
            {
                // update grid
                if (isNew && _viewModel.CurrencyExchangeRates.FirstOrDefault(_ => _.CurrencyFromId == model.CurrencyFromId &&
                                                                             _.CurrencyToId == model.CurrencyToId) == null)
                {
                    _viewModel.CurrencyExchangeRates.Add(model);
                }

                GridCurrencyExchangeRates.Items.Refresh();
                NotifyDataChanged();
            });
        }
Exemplo n.º 4
0
        public CurrencyExchangeRateDetailsView(ICurrencyExchangeRateService service, CurrencyExchangeRateModel entity, bool isNew,
                                               IEnumerable <CurrencyModel> currencies, IEnumerable <CurrencyExchangeRateModel> currencyExchangeRates)
            : base(service, entity, isNew)
        {
            InitializeComponent();

            // init
            _existingCurrencyExchangeRates = currencyExchangeRates;

            // initialize datacontexts
            IEnumerable <CurrencyModel> activeCurrencies =
                currencies.Where(_ => _.IsActive || _.Id == entity.CurrencyFromId || _.Id == entity.CurrencyToId);

            comboFromCurrencies.ItemsSource = activeCurrencies;
            comboToCurrencies.ItemsSource   = activeCurrencies;

            // disable currency comboboxes for not new currency exchange rates
            comboFromCurrencies.IsEnabled = IsNew;
            comboToCurrencies.IsEnabled   = IsNew;

            // set header and commands panel context
            LabelHeader.Content       = ViewHeader;
            CommandsPanel.DataContext = Commands;
        }
        public async Task <IActionResult> Post([FromRoute] CurrencyExchangeRateRequest request, [FromBody] CurrencyExchangeRateModel model, CancellationToken token = default)
        {
            try
            {
                var currencies = await _currencyService.GetCurrenciesByIsoCode(request.Source.IsoCodeValue, request.Target.IsoCodeValue, token : token)
                                 .ConfigureAwait(false);

                if (currencies.Values.Any(x => x == null))
                {
                    return(NotFoundObjectResult(nameof(CurrencyService), "currency code don't exist"));
                }

                var currencyExchangeRate = model.ToEntity(currencies);

                await _repository.InsertAsync(currencyExchangeRate, token : token).ConfigureAwait(false);

                return(CreateObjectResult(currencyExchangeRate.ToModel()));
            }
            catch (Exception e)
            {
                return(LogAndError500Response(nameof(CurrencyExchangeRatesController), e));
            }
        }