예제 #1
0
 public ValidationReport Validate_candidate_transaction(DateTime transactionDate, string description, decimal amount, bool force)
 {
     return(new ValidationReport {
         DateValidatedForDeposit = CashbookValidation.Validate_transaction_date(TransactionTypes.Deposit, transactionDate, force),
         DateValidatedForWithdrawal = CashbookValidation.Validate_transaction_date(TransactionTypes.Withdrawal, transactionDate, force),
         DescriptionValidatedForWithdrawal = CashbookValidation.Validate_transaction_description(TransactionTypes.Withdrawal, description),
         AmountValidated = CashbookValidation.Validate_transaction_amount(amount),
     });
 }
예제 #2
0
        public void Withdraw(DateTime transactionDate, decimal amount, string description, bool force,
                             Action <Balance> onSuccess, Action <string> onError
                             )
        {
            CashbookValidation.Validate_transaction_data(TransactionTypes.Withdrawal, transactionDate, description, amount, force,
                                                         () => {
                this.repo.Make_withdrawal(transactionDate, Math.Abs(amount), description);

                var transactions = this.repo.Load_all_transactions().ToArray();
                var cb           = this.cashbookFactory(transactions);

                var newBalance = cb.Calculate_end_of_month_balance(transactionDate);
                onSuccess(newBalance);
            },
                                                         onError);
        }
예제 #3
0
        public void Deposit(DateTime transactionDate, decimal amount, string description, bool force,
                            Action <Balance> onSuccess, Action <string> onError
                            )
        {
            CashbookValidation.Validate_transaction_data(TransactionTypes.Deposit, transactionDate, description, amount, force,
                                                         () => {
                description = string.IsNullOrEmpty(description) ? "Deposit" : description;

                this.repo.Make_deposit(transactionDate, Math.Abs(amount), description);

                var transactions = this.repo.Load_all_transactions().ToArray();
                var cb           = this.cashbookFactory(transactions);

                var newBalance = cb.Calculate_end_of_month_balance(transactionDate);
                onSuccess(newBalance);
            },
                                                         onError);
        }