Ejemplo n.º 1
0
        public async Task <IActionResult> Index([Bind(properties)] MoneyCalculatorView e, string submit)
        {
            currency = await repository.GetObject(e.CurrencyID);

            scoreCurrency = await repository.GetObject(e.ScoreCurrency);

            e = submit == "+" ? add(e) :
                submit == "-" ? subtract(e) :
                submit == "*" ? multiply(e) :
                submit == "%" ? divide(e) :
                submit == "Convert" ? convert(e) :
                submit == "Round" ? round(e) :
                submit == "=" ? result(e) :
                new MoneyCalculatorView();
            var view = new MoneyCalculatorView();

            view.ScoreCurrency    = e.ScoreCurrency;
            view.Score            = e.Score;
            view.CurrencyID       = e.CurrencyID;
            view.Amount           = e.Amount;
            view.Operation        = e.Operation;
            view.RoundingStep     = e.RoundingStep;
            view.RoundingDigit    = e.RoundingDigit;
            view.RoundingDecimals = e.RoundingDecimals;
            view.RoundingStrategy = e.RoundingStrategy;
            return(RedirectToAction("Index", view));
        }
Ejemplo n.º 2
0
        private MoneyCalculatorView performConvert(MoneyCalculatorView v)
        {
            var x = new Money(scoreCurrency, v.Score);
            var y = x.ConvertTo(currency);

            v.Score         = y.Amount;
            v.ScoreCurrency = y.Currency.ID;
            return(v);
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(MoneyCalculatorView e = null)
        {
            var currencies = await db.Currencies.ToListAsync();

            var view = e ?? new MoneyCalculatorView();

            view.LoadCurrencies(currencies);
            return(View(view));
        }
Ejemplo n.º 4
0
        private MoneyCalculatorView performRound(MoneyCalculatorView v)
        {
            var x = new Money(scoreCurrency, v.Score);
            var y = x.Round(new RoundingPolicy(v.RoundingStrategy, v.RoundingDecimals, v.RoundingDigit,
                                               v.RoundingStep));

            v.Score         = y.Amount;
            v.ScoreCurrency = y.Currency.ID;
            return(v);
        }
Ejemplo n.º 5
0
        private MoneyCalculatorView result(MoneyCalculatorView v)
        {
            var r = v.Operation == MoneyOperation.Round? performRound(v)
                : v.Operation == MoneyOperation.Convert? performConvert(v)
                : perform(v, v.Operation);

            r.Amount     = 0;
            r.CurrencyID = null;
            r.Operation  = MoneyOperation.Dummy;
            return(r);
        }
Ejemplo n.º 6
0
        private MoneyCalculatorView perform(MoneyCalculatorView v, MoneyOperation op)
        {
            var x      = new Money(scoreCurrency, v.Score);
            var y      = new Money(currency, v.Amount);
            var result = op == MoneyOperation.Add? x.Add(y)
                : op == MoneyOperation.Subtract? x.Subtract(y)
                : op == MoneyOperation.Multiply? x.Multiply(y.Amount)
                : op == MoneyOperation.Divide? x.Divide(y.Amount)
                : x;

            v.Score         = result.Amount;
            v.ScoreCurrency = result.Currency.ID;
            v.Operation     = op;
            return(v);
        }
Ejemplo n.º 7
0
 private MoneyCalculatorView round(MoneyCalculatorView v)
 {
     v.Operation = MoneyOperation.Round;
     return(v);
 }
Ejemplo n.º 8
0
 private MoneyCalculatorView add(MoneyCalculatorView v)
 {
     return(perform(v, MoneyOperation.Add));
 }
Ejemplo n.º 9
0
 private MoneyCalculatorView subtract(MoneyCalculatorView v)
 {
     return(perform(v, MoneyOperation.Subtract));
 }
Ejemplo n.º 10
0
 private MoneyCalculatorView multiply(MoneyCalculatorView v)
 {
     return(perform(v, MoneyOperation.Multiply));
 }
Ejemplo n.º 11
0
 private MoneyCalculatorView divide(MoneyCalculatorView v)
 {
     return(perform(v, MoneyOperation.Divide));
 }
Ejemplo n.º 12
0
 private MoneyCalculatorView convert(MoneyCalculatorView v)
 {
     v.Operation = MoneyOperation.Convert;
     return(v);
 }