public NewRuleController(
            [NotNull] UiContext uiContext,
            [NotNull] ITransactionRuleService rulesService,
            [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (rulesService == null)
            {
                throw new ArgumentNullException(nameof(rulesService));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.rulesService = rulesService;
            this.bucketRepo = bucketRepo;
            this.messageBoxService = uiContext.UserPrompts.MessageBox;
            this.logger = uiContext.Logger;

            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="TransactionManagerService" /> class.
        /// </summary>
        /// <param name="bucketRepository">The bucket repository.</param>
        /// <param name="statementRepository">The statement repository.</param>
        /// <param name="logger">The logger.</param>
        /// <param name="monitorableDependencies">The dependency monitor manager</param>
        /// <exception cref="System.ArgumentNullException">
        /// </exception>
        public TransactionManagerService(
            [NotNull] IBudgetBucketRepository bucketRepository,
            [NotNull] IStatementRepository statementRepository,
            [NotNull] ILogger logger,
            [NotNull] MonitorableDependencies monitorableDependencies)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            if (statementRepository == null)
            {
                throw new ArgumentNullException(nameof(statementRepository));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (monitorableDependencies == null) throw new ArgumentNullException(nameof(monitorableDependencies));

            this.bucketRepository = bucketRepository;
            this.statementRepository = statementRepository;
            this.logger = logger;
            this.monitorableDependencies = monitorableDependencies;
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="TransactionManagerService" /> class.
        /// </summary>
        /// <param name="bucketRepository">The bucket repository.</param>
        /// <param name="statementRepository">The statement repository.</param>
        /// <param name="logger">The logger.</param>
        /// <param name="monitorableDependencies">The dependency monitor manager</param>
        /// <exception cref="System.ArgumentNullException">
        /// </exception>
        public TransactionManagerService(
            [NotNull] IBudgetBucketRepository bucketRepository,
            [NotNull] IStatementRepository statementRepository,
            [NotNull] ILogger logger,
            [NotNull] MonitorableDependencies monitorableDependencies)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            if (statementRepository == null)
            {
                throw new ArgumentNullException(nameof(statementRepository));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (monitorableDependencies == null)
            {
                throw new ArgumentNullException(nameof(monitorableDependencies));
            }

            this.bucketRepository    = bucketRepository;
            this.statementRepository = statementRepository;
            this.logger = logger;
            this.monitorableDependencies = monitorableDependencies;
        }
Exemple #4
0
 public Mapper_LedgerBookDto_LedgerBook(
     [NotNull] IBudgetBucketRepository bucketRepo,
     [NotNull] IAccountTypeRepository accountTypeRepo,
     [NotNull] ILedgerBucketFactory bucketFactory,
     [NotNull] ILedgerTransactionFactory transactionFactory,
     [NotNull] IReconciliationBuilder reconciliationBuilder)
 {
     if (bucketRepo == null)
     {
         throw new ArgumentNullException(nameof(bucketRepo));
     }
     if (accountTypeRepo == null)
     {
         throw new ArgumentNullException(nameof(accountTypeRepo));
     }
     if (bucketFactory == null)
     {
         throw new ArgumentNullException(nameof(bucketFactory));
     }
     if (transactionFactory == null)
     {
         throw new ArgumentNullException(nameof(transactionFactory));
     }
     if (reconciliationBuilder == null)
     {
         throw new ArgumentNullException(nameof(reconciliationBuilder));
     }
     this.bucketRepo            = bucketRepo;
     this.accountTypeRepo       = accountTypeRepo;
     this.bucketFactory         = bucketFactory;
     this.transactionFactory    = transactionFactory;
     this.reconciliationBuilder = reconciliationBuilder;
 }
        /// <summary>
        ///     Initializes a new instance of the <see cref="BudgetMaintenanceService" /> class.
        /// </summary>
        /// <exception cref="System.ArgumentNullException">budgetRepository</exception>
        public BudgetMaintenanceService(
            [NotNull] IBudgetRepository budgetRepository,
            [NotNull] IBudgetBucketRepository bucketRepo,
            [NotNull] ILogger logger,
            [NotNull] MonitorableDependencies monitorableDependencies)
        {
            if (budgetRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetRepository));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (monitorableDependencies == null)
            {
                throw new ArgumentNullException(nameof(monitorableDependencies));
            }

            this.budgetRepository        = budgetRepository;
            this.logger                  = logger;
            this.monitorableDependencies = monitorableDependencies;
            BudgetBucketRepository       = bucketRepo;
            CreateNewBudgetCollection();
        }
        public DashboardService(
            [NotNull] IWidgetService widgetService,
            [NotNull] IBudgetBucketRepository bucketRepository,
            [NotNull] IBudgetRepository budgetRepository,
            [NotNull] ILogger logger,
            [NotNull] MonitorableDependencies monitorableDependencies)
        {
            if (widgetService == null)
            {
                throw new ArgumentNullException(nameof(widgetService));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            if (budgetRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetRepository));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (monitorableDependencies == null) throw new ArgumentNullException(nameof(monitorableDependencies));

            this.widgetService = widgetService;
            this.bucketRepository = bucketRepository;
            this.budgetRepository = budgetRepository;
            this.logger = logger;
            this.monitoringServices = monitorableDependencies;
            this.monitoringServices.DependencyChanged += OnMonitoringServicesDependencyChanged;
        }
        public StatementAutoMapperConfiguration(
            [NotNull] ITransactionTypeRepository transactionTypeRepo,
            [NotNull] IAccountTypeRepository accountTypeRepo,
            [NotNull] IBudgetBucketRepository bucketRepo,
            [NotNull] ILogger logger)
        {
            if (transactionTypeRepo == null)
            {
                throw new ArgumentNullException("transactionTypeRepo");
            }

            if (accountTypeRepo == null)
            {
                throw new ArgumentNullException("accountTypeRepo");
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException("bucketRepo");
            }

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.transactionTypeRepo = transactionTypeRepo;
            this.accountTypeRepo = accountTypeRepo;
            this.bucketRepo = bucketRepo;
            this.logger = logger;
        }
Exemple #8
0
        public void FilterByBucket_ShouldReturn2Buckets_GivenSurplusBucketCode()
        {
            var model2 = new StatementModelBuilder()
                         .AppendTransaction(
                new Transaction
            {
                Account      = StatementModelTestData.ChequeAccount,
                Amount       = -255.65M,
                BudgetBucket = StatementModelTestData.SurplusBucket,
                Date         = new DateTime(2013, 9, 10),
            })
                         .AppendTransaction(
                new Transaction
            {
                Account      = StatementModelTestData.ChequeAccount,
                Amount       = -1000M,
                BudgetBucket = new FixedBudgetProjectBucket("FOO", "Bar", 2000M),
                Date         = new DateTime(2013, 9, 9)
            })
                         .Merge(this.testData)
                         .Build();

            this.testData         = model2;
            this.budgetBucketRepo = new BucketBucketRepoAlwaysFind();
            Arrange();

            var result = this.subject.FilterByBucket(SurplusBucket.SurplusCode);

            this.testData.Output(DateTime.MinValue);
            Assert.AreEqual(2, result.Count());
        }
        public NewRuleController(
            [NotNull] UiContext uiContext,
            [NotNull] ITransactionRuleService rulesService,
            [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (rulesService == null)
            {
                throw new ArgumentNullException(nameof(rulesService));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.rulesService      = rulesService;
            this.bucketRepo        = bucketRepo;
            this.messageBoxService = uiContext.UserPrompts.MessageBox;
            this.logger            = uiContext.Logger;

            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register <ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
        }
Exemple #10
0
        public void TestIntialise()
        {
            this.mockRuleService = new Mock <ITransactionRuleService>(MockBehavior.Strict);
            this.mockReconciliationConsistency = new Mock <IReconciliationConsistency>();
            this.bucketRepo            = new BucketBucketRepoAlwaysFind();
            this.testDataBudgets       = BudgetModelTestData.CreateCollectionWith1And2();
            this.testDataBudgetContext = new BudgetCurrencyContext(this.testDataBudgets, this.testDataBudgets.CurrentActiveBudget);
            this.testDataStatement     = new StatementModelBuilder()
                                         .TestData5()
                                         .AppendTransaction(new Transaction
            {
                Account         = StatementModelTestData.ChequeAccount,
                Amount          = -23.56M,
                BudgetBucket    = StatementModelTestData.RegoBucket,
                Date            = ReconcileDate.Date.AddDays(-1),
                TransactionType = new NamedTransaction("Foo"),
                Description     = "Last transaction"
            })
                                         .Build();
            this.testDataToDoList = new List <ToDoTask>();
            this.subject          = new ReconciliationCreationManager(this.mockRuleService.Object, this.mockReconciliationConsistency.Object, new FakeLogger());

            this.testDataLedgerBook = LedgerBookTestData.TestData5(() => new LedgerBookTestHarness(new Mock <IReconciliationBuilder>().Object));

            this.mockReconciliationConsistency.Setup(m => m.EnsureConsistency(It.IsAny <LedgerBook>())).Returns(new Mock <IDisposable>().Object);
        }
        public LedgerAutoMapperConfiguration(
            [NotNull] ILedgerTransactionFactory ledgerTransactionFactory, 
            [NotNull] IAccountTypeRepository accountTypeRepo, 
            [NotNull] IBudgetBucketRepository bucketRepo, 
            [NotNull] ILogger logger)
        {
            if (ledgerTransactionFactory == null)
            {
                throw new ArgumentNullException("ledgerTransactionFactory");
            }

            if (accountTypeRepo == null)
            {
                throw new ArgumentNullException("accountTypeRepo");
            }
            
            if (bucketRepo == null)
            {
                throw new ArgumentNullException("bucketRepo");
            }
            
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            this.ledgerTransactionFactory = ledgerTransactionFactory;
            this.accountTypeRepo = accountTypeRepo;
            this.bucketRepo = bucketRepo;
            this.logger = logger;
        }
 public BurnDownChartsBuilder(
     IBudgetBucketRepository budgetBucketRepository,
     Func<BucketBurnDownController> bucketSpendingFactory)
 {
     this.budgetBucketRepository = budgetBucketRepository;
     this.bucketSpendingFactory = bucketSpendingFactory;
 }
        public void TestIntialise()
        {
            this.mockRuleService = new Mock<ITransactionRuleService>(MockBehavior.Strict);
            this.mockReconciliationConsistency = new Mock<IReconciliationConsistency>();
            this.bucketRepo = new BucketBucketRepoAlwaysFind();
            this.testDataBudgets = BudgetModelTestData.CreateCollectionWith1And2();
            this.testDataBudgetContext = new BudgetCurrencyContext(this.testDataBudgets, this.testDataBudgets.CurrentActiveBudget);
            this.testDataStatement = new StatementModelBuilder()
                .TestData5()
                .AppendTransaction(new Transaction
                {
                    Account = StatementModelTestData.ChequeAccount,
                    Amount = -23.56M,
                    BudgetBucket = StatementModelTestData.RegoBucket,
                    Date = ReconcileDate.Date.AddDays(-1),
                    TransactionType = new NamedTransaction("Foo"),
                    Description = "Last transaction"
                })
                .Build();
            this.testDataToDoList = new List<ToDoTask>();
            this.subject = new ReconciliationManager(this.mockRuleService.Object, this.mockReconciliationConsistency.Object, new FakeLogger());

            this.testDataLedgerBook = LedgerBookTestData.TestData5(() => new LedgerBookTestHarness(new Mock<IReconciliationBuilder>().Object));

            this.mockReconciliationConsistency.Setup(m => m.EnsureConsistency(It.IsAny<LedgerBook>())).Returns(new Mock<IDisposable>().Object);
        }
 public CsvOnDiskStatementModelRepositoryV1TestHarness(IAccountTypeRepository accountTypeRepo, IUserMessageBox userMessageBox, IBudgetBucketRepository bucketRepo, BankImportUtilities importUtilities, ILogger logger)
     : base(userMessageBox, 
             importUtilities, 
             logger, 
             new TransactionSetDtoToStatementModelMapper(), 
             new StatementModelToTransactionSetDtoMapper())
 {
 }
Exemple #15
0
 public Mapper_IncomeDto_Income([NotNull] IBudgetBucketRepository bucketRepo)
 {
     if (bucketRepo == null)
     {
         throw new ArgumentNullException(nameof(bucketRepo));
     }
     this.bucketRepo = bucketRepo;
 }
Exemple #16
0
        public void FilterByBucket_ShouldReturnAllBuckets_GivenNullBucketCode()
        {
            this.budgetBucketRepo = new BucketBucketRepoAlwaysFind();
            Arrange();

            var result = this.subject.FilterByBucket(null);

            Assert.AreEqual(10, result.Count());
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="LongTermSpendingTrendAnalyser" /> class.
        /// </summary>
        /// <param name="budgetBucketRepo">The budget bucket repo.</param>
        /// <exception cref="System.ArgumentNullException"></exception>
        public LongTermSpendingTrendAnalyser([NotNull] IBudgetBucketRepository budgetBucketRepo)
        {
            if (budgetBucketRepo == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepo));
            }

            this.budgetBucketRepo = budgetBucketRepo;
        }
Exemple #18
0
        public MatchingRuleFactory([NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.bucketRepo = bucketRepo;
        }
        public MatchingRuleFactory([NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (bucketRepo == null)
            {
                throw new ArgumentNullException("bucketRepo");
            }

            this.bucketRepo = bucketRepo;
        }
Exemple #20
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="BudgetPieGraphService" /> class.
        /// </summary>
        /// <param name="budgetBucketRepository">The budget bucket repository.</param>
        /// <exception cref="System.ArgumentNullException">budgetBucketRepository</exception>
        public BudgetPieGraphService([NotNull] IBudgetBucketRepository budgetBucketRepository)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepository));
            }

            this.budgetBucketRepository = budgetBucketRepository;
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="BudgetPieGraphService" /> class.
        /// </summary>
        /// <param name="budgetBucketRepository">The budget bucket repository.</param>
        /// <exception cref="System.ArgumentNullException">budgetBucketRepository</exception>
        public BudgetPieGraphService([NotNull] IBudgetBucketRepository budgetBucketRepository)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepository));
            }

            this.budgetBucketRepository = budgetBucketRepository;
        }
Exemple #22
0
        /// <summary>
        ///     Updates the widget with new input.
        /// </summary>
        /// <exception cref="System.ArgumentNullException"></exception>
        public override void Update([NotNull] params object[] input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (!ValidateUpdateInput(input))
            {
                ToolTip = this.disabledToolTip;
                Enabled = false;
                return;
            }

            Statement             = (StatementModel)input[0];
            this.bucketRepository = (IBudgetBucketRepository)input[1];

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

            if (Statement == null)
            {
                ToolTip = this.disabledToolTip;
                Enabled = false;
                return;
            }

            Enabled = true;
            var bucket      = (FixedBudgetProjectBucket)this.bucketRepository.GetByCode(BucketCode);
            var totalBudget = bucket.FixedBudgetAmount;

            Maximum = Convert.ToDouble(totalBudget);

            // Debit transactions are negative so normally the total spend will be a negative number.
            var totalSpend =
                Statement.AllTransactions.Where(t => t.BudgetBucket != null && t.BudgetBucket.Code == BucketCode)
                .Sum(t => t.Amount);
            var remainingBudget = totalBudget + totalSpend;

            Value   = Convert.ToDouble(remainingBudget);
            ToolTip = string.Format(CultureInfo.CurrentCulture, this.remainingBudgetToolTip, bucket.Description,
                                    remainingBudget, totalSpend);
            DetailedText = string.Format(CultureInfo.CurrentCulture, "{0} Project", bucket.SubCode);

            if (remainingBudget < 0.1M * totalBudget)
            {
                ColourStyleName = WidgetWarningStyle;
            }
            else
            {
                ColourStyleName = this.standardStyle;
            }
        }
Exemple #23
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="LongTermSpendingTrendAnalyser" /> class.
        /// </summary>
        /// <param name="budgetBucketRepo">The budget bucket repo.</param>
        /// <exception cref="System.ArgumentNullException"></exception>
        public LongTermSpendingTrendAnalyser([NotNull] IBudgetBucketRepository budgetBucketRepo)
        {
            if (budgetBucketRepo == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepo));
            }

            this.budgetBucketRepo = budgetBucketRepo;
        }
        public OverallPerformanceBudgetAnalyser([NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
        }
        public BudgetPieController([NotNull] IBudgetBucketRepository budgetBucketRepository)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException("budgetBucketRepository");
            }

            this.budgetBucketRepository = budgetBucketRepository;
        }
 public Mapper_TransactionDto_Transaction([NotNull] IAccountTypeRepository accountRepo, [NotNull] IBudgetBucketRepository bucketRepo, [NotNull] ITransactionTypeRepository transactionTypeRepo)
 {
     if (accountRepo == null) throw new ArgumentNullException(nameof(accountRepo));
     if (bucketRepo == null) throw new ArgumentNullException(nameof(bucketRepo));
     if (transactionTypeRepo == null) throw new ArgumentNullException(nameof(transactionTypeRepo));
     this.accountRepo = accountRepo;
     this.bucketRepo = bucketRepo;
     this.transactionTypeRepo = transactionTypeRepo;
 }
        public OverallPerformanceBudgetAnalyser([NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
        }
Exemple #28
0
        public void FilterByBucket_ShouldReturn3Buckets_GivenIncomeBucketCode()
        {
            this.budgetBucketRepo = new BucketBucketRepoAlwaysFind();
            Arrange();

            var result = this.subject.FilterByBucket(StatementModelTestData.IncomeBucket.Code);

            Assert.AreEqual(3, result.Count());
        }
        public override void Update([NotNull] params object[] input)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

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

            Budget = (BudgetCurrencyContext)input[0];
            this.statement = (StatementModel)input[1];
            Filter = (GlobalFilterCriteria)input[2];
            this.bucketRepository = (IBudgetBucketRepository)input[3];

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

            SetAdditionalDependencies(input);

            if (this.statement == null || Budget == null || Filter == null || Filter.Cleared || Filter.BeginDate == null || Filter.EndDate == null)
            {
                Enabled = false;
                return;
            }

            Enabled = true;
            decimal totalBudget = MonthlyBudgetAmount()
                                  * Filter.BeginDate.Value.DurationInMonths(Filter.EndDate.Value);
            Maximum = Convert.ToDouble(totalBudget);

            // Debit transactions are negative so normally the total spend will be a negative number.
            decimal remainingBudget = totalBudget + this.statement.Transactions.Where(t => t.BudgetBucket != null && t.BudgetBucket.Code == BucketCode).Sum(t => t.Amount);
            if (remainingBudget < 0)
            {
                remainingBudget = 0;
            }

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

            if (remainingBudget < 0.2M * totalBudget)
            {
                ColourStyleName = WidgetWarningStyle;
            }
            else
            {
                ColourStyleName = this.standardStyle;
            }
        }
        public StatementViewModel([NotNull] IBudgetBucketRepository budgetBucketRepository)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException("budgetBucketRepository");
            }

            this.budgetBucketRepository = budgetBucketRepository;
            this.doNotUseSortByDate = true;
        }
        public OverallPerformanceController([NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException("bucketRepository");
            }

            this.doNotUseExpenseFilter = true;
            this.bucketRepository = bucketRepository;
        }
Exemple #32
0
        public MatchingRule([NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
            RuleId  = Guid.NewGuid();
            Created = DateTime.Now;
            And     = true;
        }
 public Mapper_BudgetCollectionDto_BudgetCollection(
     [NotNull] IBudgetBucketRepository bucketRepo,
     [NotNull] IDtoMapper<BudgetBucketDto, BudgetBucket> bucketMapper,
     [NotNull] IDtoMapper<BudgetModelDto, BudgetModel> budgetMapper)
 {
     if (bucketRepo == null) throw new ArgumentNullException(nameof(bucketRepo));
     if (bucketMapper == null) throw new ArgumentNullException(nameof(bucketMapper));
     if (budgetMapper == null) throw new ArgumentNullException(nameof(budgetMapper));
     this.bucketRepo = bucketRepo;
     this.bucketMapper = bucketMapper;
     this.budgetMapper = budgetMapper;
 }
        public EditingTransactionController([NotNull] UiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.bucketRepo = bucketRepo;
            MessengerInstance = uiContext.Messenger;
        }
Exemple #35
0
        private XamlOnDiskBudgetRepository Arrange(IBudgetBucketRepository bucketRepo = null)
        {
            if (bucketRepo == null)
            {
                bucketRepo = new InMemoryBudgetBucketRepository(new Mapper_BudgetBucketDto_BudgetBucket(new BudgetBucketFactory()));
            }

            return(new XamlOnDiskBudgetRepository(
                       bucketRepo,
                       new Mapper_BudgetCollectionDto_BudgetCollection(
                           bucketRepo,
                           new Mapper_BudgetBucketDto_BudgetBucket(new BudgetBucketFactory()),
                           new Mapper_BudgetModelDto_BudgetModel(bucketRepo)),
                       this.mockFileSelector.Object));
        }
        public EditingTransactionController([NotNull] UiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.bucketRepo   = bucketRepo;
            MessengerInstance = uiContext.Messenger;
        }
        public LedgerBucketFactory([NotNull] IBudgetBucketRepository bucketRepo,
                                   [NotNull] IAccountTypeRepository accountRepo)
        {
            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            if (accountRepo == null)
            {
                throw new ArgumentNullException(nameof(accountRepo));
            }

            this.bucketRepo = bucketRepo;
            this.accountRepo = accountRepo;
        }
        public LedgerBucketFactory([NotNull] IBudgetBucketRepository bucketRepo,
                                   [NotNull] IAccountTypeRepository accountRepo)
        {
            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            if (accountRepo == null)
            {
                throw new ArgumentNullException(nameof(accountRepo));
            }

            this.bucketRepo  = bucketRepo;
            this.accountRepo = accountRepo;
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="BurnDownChartsBuilder" /> class.
        /// </summary>
        /// <param name="budgetBucketRepository">The budget bucket repository.</param>
        /// <param name="chartAnalyserFactory">The chart analyser factory.</param>
        /// <exception cref="System.ArgumentNullException">
        /// </exception>
        public BurnDownChartsBuilder([NotNull] IBudgetBucketRepository budgetBucketRepository,
                                     [NotNull] Func <IBurnDownChartAnalyser> chartAnalyserFactory)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepository));
            }

            if (chartAnalyserFactory == null)
            {
                throw new ArgumentNullException(nameof(chartAnalyserFactory));
            }

            this.budgetBucketRepository = budgetBucketRepository;
            this.chartAnalyserFactory   = chartAnalyserFactory;
        }
        public SplitTransactionController([NotNull] UiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.bucketRepo = bucketRepo;
            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="BurnDownChartsBuilder" /> class.
        /// </summary>
        /// <param name="budgetBucketRepository">The budget bucket repository.</param>
        /// <param name="chartAnalyserFactory">The chart analyser factory.</param>
        /// <exception cref="System.ArgumentNullException">
        /// </exception>
        public BurnDownChartsBuilder([NotNull] IBudgetBucketRepository budgetBucketRepository,
                                     [NotNull] Func<IBurnDownChartAnalyser> chartAnalyserFactory)
        {
            if (budgetBucketRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetBucketRepository));
            }

            if (chartAnalyserFactory == null)
            {
                throw new ArgumentNullException(nameof(chartAnalyserFactory));
            }

            this.budgetBucketRepository = budgetBucketRepository;
            this.chartAnalyserFactory = chartAnalyserFactory;
        }
Exemple #42
0
        public SplitTransactionController([NotNull] UiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException(nameof(bucketRepo));
            }

            this.bucketRepo   = bucketRepo;
            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register <ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="SimilarMatchedRule" /> class.
        /// </summary>
        /// <param name="bucketRepository">The bucket repository.</param>
        /// <param name="rule">The rule.</param>
        /// <exception cref="System.ArgumentNullException"></exception>
        public SimilarMatchedRule([NotNull] IBudgetBucketRepository bucketRepository, [NotNull] MatchingRule rule)
            : base(bucketRepository)
        {
            if (rule == null)
            {
                throw new ArgumentNullException(nameof(rule));
            }

            Amount          = rule.Amount;
            And             = rule.And;
            Description     = rule.Description;
            Reference1      = rule.Reference1;
            Reference2      = rule.Reference2;
            Reference3      = rule.Reference3;
            TransactionType = rule.TransactionType;
            AllowSubclassAccess(rule.Bucket.Code, rule.RuleId);
        }
Exemple #44
0
        public CreateNewFixedBudgetController([NotNull] IUiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
            MessengerInstance     = uiContext.Messenger;
            MessengerInstance.Register <ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
            this.messageBox = uiContext.UserPrompts.MessageBox;
        }
        public CreateNewFixedBudgetController([NotNull] IUiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
            this.messageBox = uiContext.UserPrompts.MessageBox;
        }
        public AddUserDefinedBurnDownController(
            [NotNull] AddUserDefinedBurnDownDialogViewLoader viewLoader,
            [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (viewLoader == null)
            {
                throw new ArgumentNullException("viewLoader");
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException("bucketRepository");
            }

            this.viewLoader = viewLoader;
            this.bucketRepository = bucketRepository;
        }
        public BudgetController(
            [NotNull] IBudgetRepository budgetRepository,
            [NotNull] UiContext uiContext,
            [NotNull] DemoFileHelper demoFileHelper,
            [NotNull] IBudgetBucketRepository bucketRepo)
        {
            if (budgetRepository == null)
            {
                throw new ArgumentNullException("budgetRepository");
            }

            if (uiContext == null)
            {
                throw new ArgumentNullException("uiContext");
            }

            if (demoFileHelper == null)
            {
                throw new ArgumentNullException("demoFileHelper");
            }

            if (bucketRepo == null)
            {
                throw new ArgumentNullException("bucketRepo");
            }

            this.demoFileHelper = demoFileHelper;
            this.bucketRepo = bucketRepo;
            this.budgetRepository = budgetRepository;
            this.questionBox = uiContext.UserPrompts.YesNoBox;
            this.messageBox = uiContext.UserPrompts.MessageBox;
            this.fileOpenDialogFactory = uiContext.UserPrompts.OpenFileFactory;
            this.fileSaveDialogFactory = uiContext.UserPrompts.SaveFileFactory;
            this.inputBox = uiContext.UserPrompts.InputBox;
            BudgetPieController = uiContext.BudgetPieController;
            Shown = false;

            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ApplicationStateRequestedMessage>(this, OnApplicationStateRequested);
            MessengerInstance.Register<ApplicationStateLoadedMessage>(this, OnApplicationStateLoaded);
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnPopUpResponseReceived);

            var budget = new BudgetModel();
            CurrentBudget = new BudgetCurrencyContext(new BudgetCollection(new[] { budget }), budget);
        }
 public Mapper_LedgerBookDto_LedgerBook(
     [NotNull] IBudgetBucketRepository bucketRepo,
     [NotNull] IAccountTypeRepository accountTypeRepo,
     [NotNull] ILedgerBucketFactory bucketFactory,
     [NotNull] ILedgerTransactionFactory transactionFactory,
     [NotNull] IReconciliationBuilder reconciliationBuilder)
 {
     if (bucketRepo == null) throw new ArgumentNullException(nameof(bucketRepo));
     if (accountTypeRepo == null) throw new ArgumentNullException(nameof(accountTypeRepo));
     if (bucketFactory == null) throw new ArgumentNullException(nameof(bucketFactory));
     if (transactionFactory == null) throw new ArgumentNullException(nameof(transactionFactory));
     if (reconciliationBuilder == null) throw new ArgumentNullException(nameof(reconciliationBuilder));
     this.bucketRepo = bucketRepo;
     this.accountTypeRepo = accountTypeRepo;
     this.bucketFactory = bucketFactory;
     this.transactionFactory = transactionFactory;
     this.reconciliationBuilder = reconciliationBuilder;
 }
        public ChooseBudgetBucketController([NotNull] UiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException("uiContext");
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException("bucketRepository");
            }

            this.bucketRepository = bucketRepository;
            BudgetBuckets = bucketRepository.Buckets.ToList();

            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
        }
Exemple #50
0
 public Mapper_TransactionDto_Transaction([NotNull] IAccountTypeRepository accountRepo, [NotNull] IBudgetBucketRepository bucketRepo, [NotNull] ITransactionTypeRepository transactionTypeRepo)
 {
     if (accountRepo == null)
     {
         throw new ArgumentNullException(nameof(accountRepo));
     }
     if (bucketRepo == null)
     {
         throw new ArgumentNullException(nameof(bucketRepo));
     }
     if (transactionTypeRepo == null)
     {
         throw new ArgumentNullException(nameof(transactionTypeRepo));
     }
     this.accountRepo         = accountRepo;
     this.bucketRepo          = bucketRepo;
     this.transactionTypeRepo = transactionTypeRepo;
 }
        public void TestInitialise()
        {
            this.mockRuleRepo    = new Mock <IMatchingRuleRepository>();
            this.mockMatchMaker  = new Mock <IMatchmaker>();
            this.mockRuleFactory = new Mock <IMatchingRuleFactory>();
            this.mockBucketRepo  = new BucketBucketRepoAlwaysFind();

            this.subject = new TransactionRuleService(
                this.mockRuleRepo.Object,
                new FakeLogger(),
                this.mockMatchMaker.Object,
                this.mockRuleFactory.Object,
                new FakeEnvironmentFolders(),
                new FakeMonitorableDependencies(),
                this.mockBucketRepo);

            PrivateAccessor.SetField(this.subject, "rulesStorageKey", "Any storage key value");
        }
        public CreateNewSurprisePaymentMonitorController([NotNull] IUiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
            MessengerInstance     = uiContext.Messenger;
            MessengerInstance.Register <ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
            PaymentStartDate = DateTime.Today;
            Frequency        = WeeklyOrFortnightly.Weekly;
            this.messageBox  = uiContext.UserPrompts.MessageBox;
        }
        public CreateNewSurprisePaymentMonitorController([NotNull] IUiContext uiContext, [NotNull] IBudgetBucketRepository bucketRepository)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            this.bucketRepository = bucketRepository;
            MessengerInstance = uiContext.Messenger;
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogResponseReceived);
            PaymentStartDate = DateTime.Today;
            Frequency = WeeklyOrFortnightly.Weekly;
            this.messageBox = uiContext.UserPrompts.MessageBox;
        }
Exemple #54
0
        public TransactionRuleService(
            [NotNull] IMatchingRuleRepository ruleRepository,
            [NotNull] ILogger logger,
            [NotNull] IMatchmaker matchmaker,
            [NotNull] IMatchingRuleFactory ruleFactory,
            [NotNull] IEnvironmentFolders environmentFolders,
            [NotNull] MonitorableDependencies monitorableDependencies,
            [NotNull] IBudgetBucketRepository bucketRepo)
        {
            this.bucketRepo              = bucketRepo ?? throw new ArgumentNullException(nameof(bucketRepo));
            this.ruleRepository          = ruleRepository ?? throw new ArgumentNullException(nameof(ruleRepository));
            this.logger                  = logger ?? throw new ArgumentNullException(nameof(logger));
            this.matchmaker              = matchmaker ?? throw new ArgumentNullException(nameof(matchmaker));
            this.ruleFactory             = ruleFactory ?? throw new ArgumentNullException(nameof(ruleFactory));
            this.environmentFolders      = environmentFolders ?? throw new ArgumentNullException(nameof(environmentFolders));
            this.monitorableDependencies = monitorableDependencies ?? throw new ArgumentNullException(nameof(monitorableDependencies));

            this.matchingRules = new List <MatchingRule>();
            this.matchingRulesGroupedByBucket = new List <RulesGroupedByBucket>();
        }
        private LongTermSpendingTrendAnalyser Arrange(IBudgetBucketRepository bucketRepo = null)
        {
            if (bucketRepo == null)
            {
                var bucketRepositoryMock = new Mock<IBudgetBucketRepository>();
                var buckets = new List<BudgetBucket>
                {
                    StatementModelTestData.CarMtcBucket,
                    StatementModelTestData.HairBucket,
                    StatementModelTestData.PhoneBucket,
                    StatementModelTestData.PowerBucket,
                    StatementModelTestData.RegoBucket,
                    StatementModelTestData.IncomeBucket
                };
                bucketRepositoryMock.Setup(r => r.Buckets).Returns(buckets);
                bucketRepo = bucketRepositoryMock.Object;
            }

            return new LongTermSpendingTrendAnalyser(bucketRepo);
        }
Exemple #56
0
        public void TestInit()
        {
            PrivateAccessor.SetProperty(this.testAppDb, "StatementModelStorageKey", @"Foo.csv");
            PrivateAccessor.SetProperty(this.testAppDb, "FileName", @"C:\AppDb.bax");
            this.testData = StatementModelTestData.TestData2();

            this.mockBudgetBucketRepo = new Mock <IBudgetBucketRepository>();
            this.mockStatementRepo    = new Mock <IStatementRepository>();

            this.mockStatementRepo.Setup(m => m.LoadAsync(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(Task.FromResult(this.testData))
            .Verifiable();

            this.mockBudgetBucketRepo
            .Setup(m => m.Buckets)
            .Returns(BudgetBucketTestData.BudgetModelTestData1Buckets);

            this.budgetBucketRepo = this.mockBudgetBucketRepo.Object;
            Arrange();
        }
        private LongTermSpendingTrendAnalyser Arrange(IBudgetBucketRepository bucketRepo = null)
        {
            if (bucketRepo == null)
            {
                var bucketRepositoryMock = new Mock <IBudgetBucketRepository>();
                var buckets = new List <BudgetBucket>
                {
                    StatementModelTestData.CarMtcBucket,
                    StatementModelTestData.HairBucket,
                    StatementModelTestData.PhoneBucket,
                    StatementModelTestData.PowerBucket,
                    StatementModelTestData.RegoBucket,
                    StatementModelTestData.IncomeBucket
                };
                bucketRepositoryMock.Setup(r => r.Buckets).Returns(buckets);
                bucketRepo = bucketRepositoryMock.Object;
            }

            return(new LongTermSpendingTrendAnalyser(bucketRepo));
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="XamlOnDiskBudgetRepository" /> class.
        /// </summary>
        public XamlOnDiskBudgetRepository(
            [NotNull] IBudgetBucketRepository bucketRepository,
            [NotNull] IDtoMapper<BudgetCollectionDto, BudgetCollection> mapper,
            [NotNull] IReaderWriterSelector readerWriterSelector)
        {
            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            if (mapper == null)
            {
                throw new ArgumentNullException(nameof(mapper));
            }

            if (readerWriterSelector == null) throw new ArgumentNullException(nameof(readerWriterSelector));

            this.budgetBucketRepository = bucketRepository;
            this.mapper = mapper;
            this.readerWriterSelector = readerWriterSelector;
        }
 public Mapper_BudgetCollectionDto_BudgetCollection(
     [NotNull] IBudgetBucketRepository bucketRepo,
     [NotNull] IDtoMapper <BudgetBucketDto, BudgetBucket> bucketMapper,
     [NotNull] IDtoMapper <BudgetModelDto, BudgetModel> budgetMapper)
 {
     if (bucketRepo == null)
     {
         throw new ArgumentNullException(nameof(bucketRepo));
     }
     if (bucketMapper == null)
     {
         throw new ArgumentNullException(nameof(bucketMapper));
     }
     if (budgetMapper == null)
     {
         throw new ArgumentNullException(nameof(budgetMapper));
     }
     this.bucketRepo   = bucketRepo;
     this.bucketMapper = bucketMapper;
     this.budgetMapper = budgetMapper;
 }
Exemple #60
0
        public DashboardService(
            [NotNull] IWidgetService widgetService,
            [NotNull] IBudgetBucketRepository bucketRepository,
            [NotNull] IBudgetRepository budgetRepository,
            [NotNull] ILogger logger,
            [NotNull] MonitorableDependencies monitorableDependencies)
        {
            if (widgetService == null)
            {
                throw new ArgumentNullException(nameof(widgetService));
            }

            if (bucketRepository == null)
            {
                throw new ArgumentNullException(nameof(bucketRepository));
            }

            if (budgetRepository == null)
            {
                throw new ArgumentNullException(nameof(budgetRepository));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (monitorableDependencies == null)
            {
                throw new ArgumentNullException(nameof(monitorableDependencies));
            }

            this.widgetService      = widgetService;
            this.bucketRepository   = bucketRepository;
            this.budgetRepository   = budgetRepository;
            this.logger             = logger;
            this.monitoringServices = monitorableDependencies;
            this.monitoringServices.DependencyChanged += OnMonitoringServicesDependencyChanged;
        }