BudgetAnalyser.Engine.Widgets.RemainingBudgetBucketWidget.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;
            }

            Budget = (IBudgetCurrencyContext) input[0];
            Statement = (StatementModel) input[1];
            Filter = (GlobalFilterCriteria) input[2];
            this.bucketRepository = (IBudgetBucketRepository) input[3];
            LedgerBook = (LedgerBook) input[4];
            LedgerCalculation = (LedgerCalculation) input[5];

            SetAdditionalDependencies(input);

            if (Statement == null || Budget == null || Filter == null || Filter.Cleared || Filter.BeginDate == null ||
                Filter.EndDate == null || LedgerCalculation == null || LedgerBook == null || this.bucketRepository == null)
            {
                Enabled = false;
                return;
            }

            if (!this.bucketRepository.IsValidCode(BucketCode))
            {
                Enabled = false;
                return;
            }

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

            Enabled = true;
            var totalBudget = MonthlyBudgetAmount();
            Maximum = Convert.ToDouble(totalBudget);

            var totalSpend = LedgerCalculation.CalculateCurrentMonthBucketSpend(LedgerBook, Filter, Statement,
                BucketCode);

            var remainingBalance = totalBudget + totalSpend;
            if (remainingBalance < 0)
            {
                remainingBalance = 0;
            }

            Value = Convert.ToDouble(remainingBalance);
            ToolTip = string.Format(CultureInfo.CurrentCulture, RemainingBudgetToolTip, remainingBalance);

            if (remainingBalance < 0.2M * totalBudget)
            {
                ColourStyleName = WidgetWarningStyle;
            }
            else
            {
                ColourStyleName = this.standardStyle;
            }
        }