BudgetAnalyser.Engine.Widgets.SavingsGoalWidget.Update C# (CSharp) Метод

Update() публичный Метод

Updates the widget with new input.
public Update ( ) : void
Результат void
        public override void Update([NotNull] params object[] input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (!ValidateUpdateInput(input))
            {
                Enabled = false;
                return;
            }

            var budget = (IBudgetCurrencyContext) input[0];
            var statement = (StatementModel) input[1];
            var filter = (GlobalFilterCriteria) input[2];
            var ledger = (LedgerBook) input[3];

            if (statement == null || budget == null || filter == null || filter.Cleared || filter.BeginDate == null ||
                filter.EndDate == null)
            {
                Enabled = false;
                return;
            }

            Enabled = true;
            var totalMonths = filter.BeginDate.Value.DurationInMonths(filter.EndDate.Value);
            Maximum =
                Convert.ToDouble(budget.Model.Expenses.Where(s => s.Bucket is SavingsCommitmentBucket)
                    .Sum(s => s.Amount)) * totalMonths;

            var savingsToDate = CalculateSavingsToDateWithTrackedLedgers(statement, ledger);

            Value = Convert.ToDouble(savingsToDate);
            ToolTip = string.Format(CultureInfo.CurrentCulture, "You have saved {0:C} of your monthly goal {1:C}",
                savingsToDate, Maximum);

            if ((double) savingsToDate < 0.9 * Maximum)
            {
                ColourStyleName = WidgetWarningStyle;
            }
            else
            {
                ColourStyleName = this.standardStyle;
            }
        }