using DysonNetwork.Shared.Models; using Microsoft.AspNetCore.Http; namespace DysonNetwork.Pass.Account; public class ActionLogService( // GeoIpService geo, // FlushBufferService fbs ) { public void CreateActionLog(Guid accountId, string action, Dictionary meta) { var log = new ActionLog { Action = action, AccountId = accountId, Meta = meta, }; // fbs.Enqueue(log); } public void CreateActionLogFromRequest(string action, Dictionary meta, HttpRequest request, Shared.Models.Account? account = null) { var log = new ActionLog { Action = action, Meta = meta, UserAgent = request.Headers.UserAgent, IpAddress = request.HttpContext.Connection.RemoteIpAddress?.ToString(), // Location = geo.GetPointFromIp(request.HttpContext.Connection.RemoteIpAddress?.ToString()) }; if (request.HttpContext.Items["CurrentUser"] is Shared.Models.Account currentUser) log.AccountId = currentUser.Id; else if (account != null) log.AccountId = account.Id; else throw new ArgumentException("No user context was found"); if (request.HttpContext.Items["CurrentSession"] is Session currentSession) log.SessionId = currentSession.Id; // fbs.Enqueue(log); } }