internal static void AddTxSummary(AccountTxSummary s) { var context = new AccountTxSummaryDataContext(); context.AccountTxSummaries.InsertOnSubmit(entity: s); context.SubmitChanges(); }
private static async void ScanTransactions(Account userAccount) { try { var tClient = new TransactionDataClient(Con); var request = tClient.BeginGetAllTransactions(ar => { try { var txs = ar.Content.data.Where(e => e.transaction?.otherTrans?.type == 257 || e.transaction?.type == 257).ToList(); foreach (var t in txs) { if (userAccount.LastTransactionHash == txs?[0]?.meta.innerHash?.data || userAccount.LastTransactionHash == txs?[0]?.meta?.hash?.data) { userAccount.LastTransactionHash = txs?[0].transaction.type == 4100 ? txs?[0]?.meta.innerHash?.data : txs?[0]?.meta?.hash?.data; break; } if (userAccount.LastTransactionHash == t.meta?.hash?.data || userAccount.LastTransactionHash == t.meta.innerHash.data) { userAccount.LastTransactionHash = txs?[0].transaction.type == 4100 ? txs?[0]?.meta.innerHash?.data : txs?[0]?.meta?.hash?.data; AccountUtils.UpdateAccount(usrAcc: userAccount); break; } if (!userAccount.CheckTxs) { continue; } try { var summary = new AccountTxSummary { AmountIn = t.transaction.recipient == userAccount.EncodedAddress ? t.transaction.amount : 0, AmountOut = t.transaction.recipient != userAccount.EncodedAddress ? t.transaction.amount : 0, MonitoredAccount = userAccount.EncodedAddress, Recipient = t.transaction.type == 257 ? t.transaction.recipient : t.transaction.otherTrans.recipient, Sender = AddressEncoding.ToEncoded(network: 0x68, publicKey: new PublicKey(key: t.transaction.type == 257 ? t.transaction.signer : t.transaction.otherTrans.signer)), DateOfInput = DateTime.Now, OwnedByUser = userAccount.OwnedByUser }; Notify(a: userAccount, t: t); SummaryUtils.AddTxSummary(s: summary); } catch (Exception e) { if (e.Message.Contains("blocked")) { AccountUtils.DeleteAccountsByUser(userAccount.OwnedByUser); NodeUtils.DeleteUserNodes(userAccount.OwnedByUser); UserUtils.DeleteUser(userAccount.OwnedByUser); } else { Console.WriteLine("Trans scanner line 112: " + e.StackTrace); } } } } catch (Exception e) { Console.WriteLine(value: e); if (e.Message.Contains("blocked")) { AccountUtils.DeleteAccountsByUser(userAccount.OwnedByUser); NodeUtils.DeleteUserNodes(userAccount.OwnedByUser); UserUtils.DeleteUser(userAccount.OwnedByUser); } } }, userAccount.EncodedAddress); request.AsyncWaitHandle.WaitOne(); } catch (Exception e) { Console.WriteLine("Transaction scanner line 136: " + e.StackTrace); } }