BudgetAnalyser.Engine.Widgets.OverspentWarning.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 statement = (StatementModel) input[0];
            var budget = (IBudgetCurrencyContext) input[1];
            var filter = (GlobalFilterCriteria) input[2];
            var ledgerBook = (LedgerBook) input[3];
            var ledgerCalculator = (LedgerCalculation) input[4];

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

            if (filter.BeginDate.Value.DurationInMonths(filter.EndDate.Value) != 1)
            {
                Enabled = false;
                ToolTip = DesignedForOneMonthOnly;
                return;
            }

            Enabled = true;
            IDictionary<BudgetBucket, decimal> overspendingSummary = ledgerCalculator.CalculateCurrentMonthLedgerBalances(ledgerBook, filter, statement);
            var warnings = overspendingSummary.Count(s => s.Value < -Tolerance);

            // Check other budget buckets that are not represented in the ledger book.
            warnings += SearchForOtherNonLedgerBookOverspentBuckets(statement, filter, budget, overspendingSummary);

            if (warnings > 0)
            {
                LargeNumber = warnings.ToString(CultureInfo.CurrentCulture);
                var builder = new StringBuilder();
                OverSpentSummary = overspendingSummary.Where(kvp => kvp.Value < -Tolerance).OrderBy(kvp => kvp.Key);
                foreach (KeyValuePair<BudgetBucket, decimal> ledger in OverSpentSummary)
                {
                    builder.AppendFormat(CultureInfo.CurrentCulture, "{0} is overspent by {1:C}", ledger.Key,
                        ledger.Value);
                    builder.AppendLine();
                }

                ToolTip = builder.ToString();
                ColourStyleName = WidgetWarningStyle;
            }
            else
            {
                LargeNumber = "0";
                ToolTip = "No overspent ledgers for the month beginning " +
                          filter.BeginDate.Value.ToString("d", CultureInfo.CurrentCulture);
                ColourStyleName = WidgetStandardStyle;
            }
        }