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); }