public PrivacySuggestionControlViewModel(decimal originalAmount, BuildTransactionResult transactionResult, PrivacyOptimisationLevel optimisationLevel, decimal fiatExchangeRate, params string[] benefits)
        {
            TransactionResult  = transactionResult;
            _optimisationLevel = optimisationLevel;
            _benefits          = benefits;

            decimal total = transactionResult.CalculateDestinationAmount().ToDecimal(MoneyUnit.BTC);

            var fiatTotal = total * fiatExchangeRate;

            _amountFiat = total.GenerateFiatText(fiatExchangeRate, "USD");

            if (optimisationLevel == PrivacyOptimisationLevel.Better)
            {
                var fiatOriginal   = originalAmount * fiatExchangeRate;
                var fiatDifference = fiatTotal - fiatOriginal;

                _caption = (fiatDifference > 0 ? $"{fiatDifference.GenerateFiatText("USD")} More" : $"{Math.Abs(fiatDifference).GenerateFiatText("USD")} Less")
                           .Replace("(", "").Replace(")", "");
            }
            else
            {
                _caption = "As Requested";
            }

            _amount = $"{total}";
        }
        public PrivacySuggestionControlViewModel(decimal originalAmount, BuildTransactionResult transactionResult, PrivacyOptimisationLevel optimisationLevel, params string[] benefits)
        {
            _transactionResult = transactionResult;
            _optimisationLevel = optimisationLevel;
            _benefits          = benefits;

            decimal total = transactionResult.CalculateDestinationAmount().ToDecimal(MoneyUnit.BTC);

            if (optimisationLevel == PrivacyOptimisationLevel.Better)
            {
                var pcDifference = ((total - originalAmount) / originalAmount) * 100;

                _caption = pcDifference > 0 ? $"{pcDifference:F}% More" : $"{Math.Abs(pcDifference):F}% Less";
            }
            else
            {
                _caption = "As Requested";
            }

            _title = $"{total}";
        }
Example #3
0
        public PrivacySuggestionControlViewModel(
            decimal originalAmount,
            BuildTransactionResult transactionResult,
            PrivacyOptimisationLevel optimisationLevel,
            decimal fiatExchangeRate,
            params PrivacySuggestionBenefit[] benefits)
        {
            TransactionResult  = transactionResult;
            _optimisationLevel = optimisationLevel;
            _benefits          = benefits.ToList();

            decimal total = transactionResult.CalculateDestinationAmount().ToDecimal(MoneyUnit.BTC);

            var fiatTotal = total * fiatExchangeRate;

            _amountFiat            = total.GenerateFiatText(fiatExchangeRate, "USD");
            _optimisationLevelGood = optimisationLevel == PrivacyOptimisationLevel.Better;

            if (_optimisationLevelGood)
            {
                var fiatOriginal   = originalAmount * fiatExchangeRate;
                var fiatDifference = fiatTotal - fiatOriginal;

                var difference = (fiatDifference > 0
                                                ? $"{fiatDifference.GenerateFiatText("USD")} More"
                                                : $"{Math.Abs(fiatDifference).GenerateFiatText("USD")} Less")
                                 .Replace("(", "").Replace(")", "");

                _benefits.Add(new(false, difference));
            }
            else
            {
                // This is just to pad the control.
                _benefits.Add(new(false, " "));
            }

            _amount = $"{total}";
        }