using System; using ASC.Common; using ASC.Common.Caching; namespace ASC.Data.Storage.Encryption { public class EncryptionServiceNotifier { private ICacheNotify СacheBackupProgress { get; } private ICache Cache { get; } public EncryptionServiceNotifier(ICacheNotify сacheBackupProgress) { Cache = AscCache.Memory; СacheBackupProgress = сacheBackupProgress; СacheBackupProgress.Subscribe((a) => { Cache.Insert(GetCacheKey(a.TenantId), a, DateTime.UtcNow.AddDays(1)); }, CacheNotifyAction.InsertOrUpdate); } public ProgressEncryption GetEncryptionProgress(int tenantId) { return Cache.Get(GetCacheKey(tenantId)); } private string GetCacheKey(int tenantId) => $"encryption{tenantId}"; } public static class EncryptionServiceNotifierExtension { public static DIHelper AddEncryptionServiceNotifierService(this DIHelper services) { services.TryAddSingleton(); return services; } } }