using Microsoft.Extensions.DependencyInjection; using Oqtane.Models; using Oqtane.Repository; using System; using System.Collections.Generic; using System.Linq; namespace Oqtane.Infrastructure { public class SyncManager : ISyncManager { private readonly IServiceScopeFactory ServiceScopeFactory; private List SyncEvents { get; set; } public SyncManager(IServiceScopeFactory ServiceScopeFactory) { this.ServiceScopeFactory = ServiceScopeFactory; SyncEvents = new List(); } private int TenantId { get { using (var scope = ServiceScopeFactory.CreateScope()) { return scope.ServiceProvider.GetRequiredService().GetTenant().TenantId; } } } public List GetSyncEvents(DateTime LastSyncDate) { return SyncEvents.Where(item => item.TenantId == TenantId && item.ModifiedOn >= LastSyncDate).ToList(); } public void AddSyncEvent(string EntityName, int EntityId) { SyncEvents.Add(new SyncEvent { TenantId = TenantId, EntityName = EntityName, EntityId = EntityId, ModifiedOn = DateTime.Now }); // trim sync events SyncEvents.RemoveAll(item => item.ModifiedOn < DateTime.Now.AddHours(-1)); } } }