示例#1
0
        public async Task <MoneyExchangeViewModel> Handle(AddEntryToHistoryCommand request, CancellationToken cancellationToken)
        {
            var    ratesDictionary = _moneyExchangeService.CreateRatesDictionary(await _moneyExchangeRepository.GetRates());
            double fromAmount      = request.FromAmount;
            double toAmount        = request.ToAmount;
            double ratio           = 0;

            var entry = new ExchangeHistory
            {
                FromCurrency = request.FromCurrency,
                FromAmount   = fromAmount,
                ToCurrency   = request.ToCurrency,
                ToAmount     = toAmount,
                Date         = DateTime.Now
            };

            var moneyExchange = new MoneyExchangeViewModel
            {
                ToAmount        = toAmount,
                RatesDictionary = ratesDictionary,
                FromAmount      = fromAmount
            };

            if (request.FromAmount != 0 | request.ToAmount != 0)
            {
                if (request.FromAmount == 0)
                {
                    fromAmount = _moneyExchangeService.CalculateTheRate(entry);
                    ratio      = _moneyExchangeService.CalculatTheRatio(entry);

                    entry.FromAmount = fromAmount;

                    moneyExchange.FromAmount   = fromAmount;
                    moneyExchange.Ratio        = ratio;
                    moneyExchange.FromCurrency = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.ToCurrency).Value;
                    moneyExchange.ToCurrency   = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.FromCurrency).Value;
                }
                else
                {
                    toAmount = _moneyExchangeService.CalculateTheRate(entry);
                    ratio    = _moneyExchangeService.CalculatTheRatio(entry);

                    entry.ToAmount = toAmount;

                    moneyExchange.ToAmount     = toAmount;
                    moneyExchange.Ratio        = ratio;
                    moneyExchange.FromCurrency = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.FromCurrency).Value;
                    moneyExchange.ToCurrency   = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.ToCurrency).Value;
                }
                entry.FromCurrency = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.FromCurrency).Value;
                entry.ToCurrency   = ratesDictionary.FirstOrDefault(x => x.Key.ToString() == request.ToCurrency).Value;
            }


            await _moneyExchangeRepository.AddEntryToHistory(entry);

            return(moneyExchange);
        }
        public async Task <IActionResult> Index()
        {
            var query  = new GetRatesQuery();
            var result = await _mediator.Send(query);

            var ratesDictionary = _moneyExchangeService.CreateRatesDictionary(result);

            return(View(new MoneyExchangeViewModel
            {
                RatesDictionary = ratesDictionary
            }));
        }