public ArticleController(SSPContext context) { _context = context; }
public void SyncActions(IConfiguration config, SSPContext db, ILogger logger) { var action_pos_Row = db.Constants.FirstOrDefault(x => x.Id == "action_pos"); var seq = Convert.ToInt32(action_pos_Row.Value); //logger.LogInfo($"Current seq is " + seq); var actionsResult = eos.GetActions("signature.bp", seq + 1, 1 - 1).Result; if (actionsResult.actions != null && actionsResult.actions.Count() != 0) { for (var i = 0; i < actionsResult.actions.Count; i++) { var act = actionsResult.actions[i]; try { switch (act.action_trace.act.name) { case "publish": { var tb_rows_pos_Row = db.Constants.FirstOrDefault(x => x.Id == "tb_rows_pos"); var tbRowsSeq = Convert.ToInt32(tb_rows_pos_Row.Value); var rowsResult = eos.GetTableRows <PublishRow>(new EosSharp.Core.Api.v1.GetTableRowsRequest() { code = "signature.bp", scope = "signature.bp", table = "signs", lower_bound = tbRowsSeq.ToString(), limit = 1, json = true }).Result; var dbRow = db.Ariticle.FirstOrDefault(x => x.TransactionId == act.action_trace.trx_id); var chainTbRow = rowsResult.rows.FirstOrDefault(); if (dbRow == null) { if (act.block_time <= DateTime.UtcNow.AddMinutes(-1)) { action_pos_Row.Value = act.account_action_seq.ToString(); tb_rows_pos_Row.Value = (++tbRowsSeq).ToString(); } } else { dbRow.SignId = chainTbRow.id.ToString(); dbRow.State = 1; dbRow.FissionFactor = chainTbRow.fission_factor; action_pos_Row.Value = act.account_action_seq.ToString(); tb_rows_pos_Row.Value = (++tbRowsSeq).ToString(); } } break; default: { action_pos_Row.Value = act.account_action_seq.ToString(); } break; } db.SaveChanges(); } catch (Exception ex) { logger.LogError(ex.ToString()); } } } }