コード例 #1
0
        public async Task RegisterInboundAsync(RegisterInTxCommand cmd)
        {
            await ValidateWalletAddressHosterAsync(cmd.ToAddress, cmd.Blockchain);

            var txs = (await _transactionsService.GetByBcnIdentityAsync(
                           cmd.Blockchain,
                           cmd.IdentityType,
                           cmd.Identity)).ToList();

            if (!txs.Any())
            {
                _log.Info($"Incoming transaction registration [workflow = {cmd.WorkflowType}]", cmd.ToJson());

                ICreateTransactionCommand createCommand = MapToCreateCommand(cmd);

                await _transactionsService.CreateTransactionAsync(createCommand);

                switch (cmd.WorkflowType)
                {
                case WorkflowType.LykkePay:
                    await _paymentRequestService.UpdateStatusAsync(createCommand.WalletAddress);

                    break;

                case WorkflowType.Airlines:
                    await _walletHistoryService.PublishCashInAsync(Mapper.Map <WalletHistoryCommand>(cmd));

                    break;
                }

                return;
            }

            foreach (var tx in txs)
            {
                _log.Info($"Incoming transaction update [type={tx.TransactionType}]", cmd);

                IUpdateTransactionCommand updateCommand = MapToUpdateCommand(cmd, tx.TransactionType);

                await _transactionsService.UpdateAsync(updateCommand);

                switch (tx.TransactionType)
                {
                case TransactionType.Payment:
                    await _paymentRequestService.UpdateStatusAsync(tx.WalletAddress);

                    break;

                case TransactionType.Exchange:
                    var context = tx.ContextData.DeserializeJson <ExchangeTransactonContext>();
                    if (context != null)
                    {
                        await _walletHistoryService.SetTxHashAsync(context.HistoryOperationId, cmd.Hash);
                    }
                    break;
                }
            }
        }
コード例 #2
0
        private ICreateTransactionCommand MapToCreateCommand(RegisterInTxCommand cmd)
        {
            switch (cmd.WorkflowType)
            {
            case WorkflowType.LykkePay:
                return(Mapper.Map <CreateTransactionCommand>(cmd, MapConfirmed()));

            case WorkflowType.Airlines:
                return(Mapper.Map <RegisterCashinTxCommand>(cmd, MapConfirmed()));

            default:
                throw new UnexpectedWorkflowTypeException(cmd.WorkflowType);
            }
        }
コード例 #3
0
        private IUpdateTransactionCommand MapToUpdateCommand(
            RegisterInTxCommand cmd,
            TransactionType transactionType)
        {
            switch (transactionType)
            {
            case TransactionType.Payment:
                return(Mapper.Map <UpdateTransactionCommand>(cmd, MapConfirmed()));

            case TransactionType.Exchange:
                return(Mapper.Map <UpdateExchangeInTxCommand>(cmd, MapConfirmed()));

            case TransactionType.Settlement:
                return(Mapper.Map <UpdateSettlementInTxCommand>(cmd, MapConfirmed()));

            default:
                throw new UnexpectedTransactionTypeException(transactionType);
            }
        }