private async Task SessionReplyMessageReceivedAsync(SessionMessageEvent <SessionReplyMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (!_originatorSessionsDict.TryGetValue(transaction.SessionId, out var originatorSession)) { return; //todo: handle this case. } transaction.CounterPartyVasp = evt.Message.Vasp; if (evt.Message.Message.MessageCode == SessionReplyMessage.GetMessageCode(SessionReplyMessage.SessionReplyMessageCode.SessionAccepted)) { transaction.Status = TransactionStatus.SessionConfirmed; await originatorSession.TransferRequestAsync( _transactionDataService.GetOriginatorFromTx(transaction), _transactionDataService.GetBeneficiaryFromTx(transaction), transaction.Asset, transaction.Amount); transaction.Status = TransactionStatus.TransferRequested; } else { transaction.Status = TransactionStatus.SessionDeclined; transaction.SessionDeclineCode = evt.Message.Message.MessageCode; } await _transactionsRepository.UpdateAsync(transaction); }
private async Task TransferRequestMessageReceivedAsync(SessionMessageEvent <TransferRequestMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (transaction == null || transaction.Status != TransactionStatus.SessionConfirmed) { return; //todo: handle this case. } transaction.Status = TransactionStatus.TransferRequested; _transactionDataService.FillTransactionData(transaction, evt.Message); await _transactionsRepository.UpdateAsync(transaction); }
private async Task TransferDispatchMessageReceivedAsync(SessionMessageEvent <TransferDispatchMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (transaction == null || transaction.Status != TransactionStatus.TransferAllowed) { return; //todo: handle this case. } transaction.TransactionHash = evt.Message.Transaction.TransactionId; transaction.SendingAddress = evt.Message.Transaction.SendingAddress; transaction.TransactionDateTime = evt.Message.Transaction.DateTime; transaction.Status = TransactionStatus.TransferDispatched; await _transactionsRepository.UpdateAsync(transaction); }
private async Task SessionRequestMessageReceivedAsync(SessionMessageEvent <SessionRequestMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (transaction == null) { return; //todo: handle this case. } transaction.CounterPartyVasp = evt.Message.Vasp; transaction.Status = TransactionStatus.SessionRequested; await _transactionsRepository.UpdateAsync(transaction); if (_vaspCodeManager.IsAutoConfirmedVaspCode(transaction.CounterPartyVasp.GetVaspCode())) { await SendSessionReplyAsync(transaction.Id, SessionReplyMessage.SessionReplyMessageCode.SessionAccepted); } }
private async Task TransferConfirmationMessageReceivedAsync(SessionMessageEvent <TransferConfirmationMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (transaction == null || transaction.Status != TransactionStatus.TransferDispatched) { return; //todo: handle this case. } transaction.Status = TransactionStatus.TransferConfirmed; await _transactionsRepository.UpdateAsync(transaction); if (!_originatorSessionsDict.TryGetValue(transaction.SessionId, out var originatorSession)) { return; //todo: handle this case. } await originatorSession.TerminateAsync(TerminationMessage.TerminationMessageCode.SessionClosedTransferOccured); await _transactionsRepository.UpdateAsync(transaction); }
private async Task TransferReplyMessageReceivedAsync(SessionMessageEvent <TransferReplyMessage> evt) { var transaction = await _transactionsRepository.GetBySessionIdAsync(evt.SessionId); if (transaction == null || transaction.Status != TransactionStatus.TransferRequested) { return; //todo: handle this case. } if (evt.Message.Message.MessageCode == TransferReplyMessage.GetMessageCode(TransferReplyMessage.TransferReplyMessageCode.TransferAccepted)) { transaction.Status = TransactionStatus.TransferAllowed; transaction.DestinationAddress = evt.Message.DestinationAddress; await _transactionsRepository.UpdateAsync(transaction); } else { transaction.Status = TransactionStatus.TransferForbidden; transaction.TransferDeclineCode = evt.Message.Message.MessageCode; } await _transactionsRepository.UpdateAsync(transaction); }