public async Task <Contract.EngageWithoutTransferAgreement.Response> Handle(Contract.EngageWithoutTransferAgreement.Request request, CancellationToken ct) { using (_transferRepository.StartTransaction()) { var transferCreatedEvent = Map(request); _transferRepository.Persist(transferCreatedEvent); if (transferCreatedEvent.PlayersContract.Salary is NoSalary) { var transferCompletedEvent = new TransferCompletedEvent { TransferId = transferCreatedEvent.TransferId }; await _transferRepository.Persist(transferCompletedEvent, ct); } await _transferRepository.CommitTransaction(ct); return(new Contract.EngageWithoutTransferAgreement.Response { TransferId = transferCreatedEvent.TransferId }); } }
public async Task Persist(TransferCompletedEvent e, CancellationToken ct) { await _transferEvents.InsertOneAsync(e, cancellationToken : ct); await _transfers.UpdateOneAsync(x => x.Id == e.TransferId, Builders <Transfer> .Update.Set(x => x.State, TransferState.Completed), cancellationToken : ct); }
public async Task Handle(TransferCompletedEvent evt, ICommandSender commandSender) { var transaction = await _paymentTransactionsRepository.GetByTransactionIdAsync(evt.OrderId); var tasks = _paymentNotifiers .Select(x => x.NotifyAsync(transaction)) .ToList(); await Task.WhenAll(tasks); }