コード例 #1
0
        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
                });
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }