示例#1
0
        public Result <Error> ChargeMoneyWithResultsAndRefactoring(int id, decimal amount)
        {
            IPersonRepository repository = null;

            IBankAccount bankaccount = null;

            INotifier notifier = null;


            return(repository.FindWithResult(id)
                   .Bind(person => bankaccount.SearchAccountSummaryWithResult(person)
                         .Bind(accountsummary => IsThereEnoughMoney(accountsummary, amount))
                         .Bind(() => bankaccount.ChargeWithResult(person, amount))
                         .Bind(transaction => notifier.NotifyWithResult(transaction, person))
                         ));
        }
示例#2
0
        public Result <Error> ChargeMoneyWithResults(int id, decimal amount)
        {
            IPersonRepository repository = null;

            IBankAccount bankaccount = null;

            INotifier notifier = null;

            return(_repository.FindWithResult(id)
                   .OnSuccess(person => _bankaccount.SearchAccountSummaryWithResult(person)
                              .OnSuccess(accountsummary =>
            {
                if (accountsummary.Total > amount)
                {
                    return _bankaccount.ChargeWithResult(person, amount)
                    .OnSuccess(transaction => notifier.Notify(transaction, person));
                }
                else
                {
                    return Failure(new Error());
                }
            })));
        }