public MakePaymentResult MakePayment(MakePaymentRequest request) { var result = new MakePaymentResult { Success = false }; if (request == null) { return(result); } IAccountDataStore accountDataStore = _accountDataStoreFactory.BuildAccountDataStore(); IValidator validator = _validatorFactory.BuildValidator(request); Account account = accountDataStore.GetAccount(request.DebtorAccountNumber); if (account == null || !validator.AccountCanMakePayment(account)) { return(result); } account.Balance -= request.Amount; accountDataStore.UpdateAccount(account); result.Success = true; return(result); }
/// <inheritdoc /> public IEnumerable <ValidationResult> Validate <TCommand>(TCommand command) where TCommand : class, ICommand { command.Requires(typeof(TCommand).FullName) .IsNotNull(); var validator = validatorFactory.BuildValidator <TCommand>(); validator.Requires(typeof(IValidationHandler <TCommand>).FullName) .IsNotNull(); return(validator.Validate(command)); }