private IEnumerable<ApplicationEvent> WhenStateIsInvalid(Guid appOperationId, Transfer transfer) { transfer.Fail(string.Format(Messages.TransferFailedUnknownReason, transfer.Id)); TransferRepository.Update(transfer); Logger.Error("Transfer #{0} is in invalid state.", transfer.Id); return Enumerable.Empty<ApplicationEvent>(); }
protected virtual IEnumerable<ApplicationEvent> WhenDepositFailed(Guid appOperationId, Transfer transfer) { transfer.Fail(string.Format(Messages.TransferFailed, transfer.Deposit.ErrorMessage)); var transactionName = TransactionReferenceBook.CompensationFor(transfer.Withdrawal); var compensationTransaction = Compensate(transfer.From, transfer, transactionName.Code, transactionName.Description); TransactionRepository.Create(compensationTransaction); TransferRepository.Update(transfer); var transactionModel = compensationTransaction.ToModel<Transaction, TransactionModel>(); return new List<ApplicationEvent> { new TransactionProgressEvent(appOperationId, transactionModel, transfer.Id) }; }
protected virtual IEnumerable<ApplicationEvent> WhenWithdrawalFailed(Guid appOperationId, Transfer transfer) { transfer.Fail(string.Format(Messages.TransferFailed, transfer.Withdrawal.ErrorMessage)); TransferRepository.Update(transfer); return Enumerable.Empty<ApplicationEvent>(); }