Merge pull request #876 from ONLYOFFICE/feature/rooms-counter-new

Feature/rooms counter new
This commit is contained in:
Alexey Bannov 2022-10-14 19:23:38 +04:00 committed by GitHub
commit 669a5116d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 160 additions and 92 deletions

View File

@ -41,10 +41,10 @@ public interface ITagDao<T>
IAsyncEnumerable<Tag> GetTagsAsync(string[] names, TagType tagType); IAsyncEnumerable<Tag> GetTagsAsync(string[] names, TagType tagType);
IAsyncEnumerable<TagInfo> GetTagsInfoAsync(string searchText, TagType tagType, bool byName, int from = 0, int count = 0); IAsyncEnumerable<TagInfo> GetTagsInfoAsync(string searchText, TagType tagType, bool byName, int from = 0, int count = 0);
IAsyncEnumerable<TagInfo> GetTagsInfoAsync(IEnumerable<string> names); IAsyncEnumerable<TagInfo> GetTagsInfoAsync(IEnumerable<string> names);
IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag); IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag, Guid createdBy = default);
IEnumerable<Tag> SaveTags(Tag tag); IEnumerable<Tag> SaveTags(Tag tag);
Task<TagInfo> SaveTagInfoAsync(TagInfo tagInfo); Task<TagInfo> SaveTagInfoAsync(TagInfo tagInfo);
void UpdateNewTags(IEnumerable<Tag> tag); void UpdateNewTags(IEnumerable<Tag> tag, Guid createdBy = default);
void UpdateNewTags(Tag tag); void UpdateNewTags(Tag tag);
Task RemoveTagsAsync(IEnumerable<int> tagsIds); Task RemoveTagsAsync(IEnumerable<int> tagsIds);
Task RemoveTagsAsync(FileEntry<T> entry, IEnumerable<int> tagsIds); Task RemoveTagsAsync(FileEntry<T> entry, IEnumerable<int> tagsIds);

View File

@ -301,7 +301,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
return _mapper.Map<DbFilesTag, TagInfo>(tag.Entity); return _mapper.Map<DbFilesTag, TagInfo>(tag.Entity);
} }
public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tags) public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tags, Guid createdBy = default)
{ {
var result = new List<Tag>(); var result = new List<Tag>();
@ -332,7 +332,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
var createOn = _tenantUtil.DateTimeToUtc(_tenantUtil.DateTimeNow()); var createOn = _tenantUtil.DateTimeToUtc(_tenantUtil.DateTimeNow());
var cacheTagId = new Dictionary<string, int>(); var cacheTagId = new Dictionary<string, int>();
result.AddRange(tags.Select(t => SaveTagAsync(t, cacheTagId, createOn).Result)); result.AddRange(tags.Select(t => SaveTagAsync(t, cacheTagId, createOn, createdBy).Result));
tx.Commit(); tx.Commit();
}); });
@ -410,7 +410,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
filesDbContext.SaveChanges(); filesDbContext.SaveChanges();
} }
private async Task<Tag> SaveTagAsync(Tag t, Dictionary<string, int> cacheTagId, DateTime createOn) private async Task<Tag> SaveTagAsync(Tag t, Dictionary<string, int> cacheTagId, DateTime createOn, Guid createdBy = default)
{ {
using var filesDbContext = _dbContextFactory.CreateDbContext(); using var filesDbContext = _dbContextFactory.CreateDbContext();
@ -452,7 +452,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
TagId = id, TagId = id,
EntryId = (await MappingIDAsync(t.EntryId, true)).ToString(), EntryId = (await MappingIDAsync(t.EntryId, true)).ToString(),
EntryType = t.EntryType, EntryType = t.EntryType,
CreateBy = _authContext.CurrentAccount.ID, CreateBy = createdBy != default ? createdBy : _authContext.CurrentAccount.ID,
CreateOn = createOn, CreateOn = createOn,
Count = t.Count Count = t.Count
}; };
@ -463,7 +463,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
return t; return t;
} }
public void UpdateNewTags(IEnumerable<Tag> tags) public void UpdateNewTags(IEnumerable<Tag> tags, Guid createdBy = default)
{ {
if (tags == null || !tags.Any()) if (tags == null || !tags.Any())
{ {
@ -483,7 +483,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
foreach (var tag in tags) foreach (var tag in tags)
{ {
UpdateNewTagsInDbAsync(tag, createOn).Wait(); UpdateNewTagsInDbAsync(tag, createOn, createdBy).Wait();
} }
tx.Commit(); tx.Commit();
@ -506,17 +506,17 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
} }
} }
private Task UpdateNewTagsInDbAsync(Tag tag, DateTime createOn) private Task UpdateNewTagsInDbAsync(Tag tag, DateTime createOn, Guid createdBy = default)
{ {
if (tag == null) if (tag == null)
{ {
return Task.CompletedTask; return Task.CompletedTask;
} }
return InternalUpdateNewTagsInDbAsync(tag, createOn); return InternalUpdateNewTagsInDbAsync(tag, createOn, createdBy);
} }
private async Task InternalUpdateNewTagsInDbAsync(Tag tag, DateTime createOn) private async Task InternalUpdateNewTagsInDbAsync(Tag tag, DateTime createOn, Guid createdBy = default)
{ {
using var filesDbContext = _dbContextFactory.CreateDbContext(); using var filesDbContext = _dbContextFactory.CreateDbContext();
var mappedId = (await MappingIDAsync(tag.EntryId)).ToString(); var mappedId = (await MappingIDAsync(tag.EntryId)).ToString();
@ -527,7 +527,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
foreach (var f in forUpdate) foreach (var f in forUpdate)
{ {
f.CreateBy = _authContext.CurrentAccount.ID; f.CreateBy = createdBy != default ? createdBy : _authContext.CurrentAccount.ID;
f.CreateOn = createOn; f.CreateOn = createOn;
f.Count = tag.Count; f.Count = tag.Count;
} }
@ -967,7 +967,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
tempTags = tempTags.Concat(_projectsQuery(filesDbContext, tenantId, subject)); tempTags = tempTags.Concat(_projectsQuery(filesDbContext, tenantId, subject));
} }
if (!deepSearch) if (!deepSearch && parentFolder.RootFolderType != FolderType.VirtualRooms)
{ {
await foreach (var e in tempTags) await foreach (var e in tempTags)
{ {
@ -1022,6 +1022,7 @@ internal class TagDao<T> : AbstractDao, ITagDao<T>
result = result.Concat(_newTagsForSBoxQuery(filesDbContext, tenantId, subject, thirdpartyFolderIds)); result = result.Concat(_newTagsForSBoxQuery(filesDbContext, tenantId, subject, thirdpartyFolderIds));
} }
} }
if (parentFolder.FolderType == FolderType.VirtualRooms) if (parentFolder.FolderType == FolderType.VirtualRooms)
{ {
result = result.Concat(_newTagsThirdpartyRoomsQuery(filesDbContext, tenantId, subject)); result = result.Concat(_newTagsThirdpartyRoomsQuery(filesDbContext, tenantId, subject));

View File

@ -1592,7 +1592,7 @@ public class FileStorageService<T> //: IFileStorageService
var folderDao = GetFolderDao(); var folderDao = GetFolderDao();
folder = await folderDao.GetFolderAsync(folderId); folder = await folderDao.GetFolderAsync(folderId);
var result = await _fileMarker.MarkedItemsAsync(folder).ToListAsync(); var result = await _fileMarker.MarkedItemsAsync(folder).Where(e => e.FileEntryType == FileEntryType.File).ToListAsync();
result = new List<FileEntry>(_entryManager.SortEntries<T>(result, new OrderBy(SortedByType.DateAndTime, false))); result = new List<FileEntry>(_entryManager.SortEntries<T>(result, new OrderBy(SortedByType.DateAndTime, false)));

View File

@ -234,24 +234,29 @@ public class FileSecurity : IFileSecurity
var shares = await GetSharesAsync(entry); var shares = await GetSharesAsync(entry);
var copyShares = shares.ToList(); var copyShares = shares.ToList();
FileShareRecord defaultShareRecord; FileShareRecord[] defaultRecords;
switch (entry.RootFolderType) switch (entry.RootFolderType)
{ {
case FolderType.COMMON: case FolderType.COMMON:
defaultShareRecord = new FileShareRecord defaultRecords = new[]
{ {
Level = int.MaxValue, new FileShareRecord
EntryId = entry.Id, {
EntryType = entry.FileEntryType, Level = int.MaxValue,
Share = DefaultCommonShare, EntryId = entry.Id,
Subject = Constants.GroupEveryone.ID, EntryType = entry.FileEntryType,
TenantId = _tenantManager.GetCurrentTenant().Id, Share = DefaultCommonShare,
Owner = _authContext.CurrentAccount.ID Subject = Constants.GroupEveryone.ID,
TenantId = _tenantManager.GetCurrentTenant().Id,
Owner = _authContext.CurrentAccount.ID
}
}; };
if (!shares.Any()) if (!shares.Any())
{ {
var defaultShareRecord = defaultRecords.FirstOrDefault();
if ((defaultShareRecord.Share == FileShare.Read && action == FilesSecurityActions.Read) || if ((defaultShareRecord.Share == FileShare.Read && action == FilesSecurityActions.Read) ||
(defaultShareRecord.Share == FileShare.ReadWrite)) (defaultShareRecord.Share == FileShare.ReadWrite))
{ {
@ -265,47 +270,51 @@ public class FileSecurity : IFileSecurity
break; break;
case FolderType.USER: case FolderType.USER:
defaultShareRecord = new FileShareRecord defaultRecords = new[]
{ {
Level = int.MaxValue, new FileShareRecord
EntryId = entry.Id, {
EntryType = entry.FileEntryType, Level = int.MaxValue,
Share = DefaultMyShare, EntryId = entry.Id,
Subject = entry.RootCreateBy, EntryType = entry.FileEntryType,
TenantId = _tenantManager.GetCurrentTenant().Id, Share = DefaultMyShare,
Owner = entry.RootCreateBy Subject = entry.RootCreateBy,
TenantId = _tenantManager.GetCurrentTenant().Id,
Owner = entry.RootCreateBy
}
}; };
if (!shares.Any()) if (!shares.Any())
{ {
return new List<Guid> return new List<Guid>
{ {
entry.RootCreateBy entry.RootCreateBy
}; };
} }
break; break;
case FolderType.Privacy: case FolderType.Privacy:
defaultShareRecord = new FileShareRecord defaultRecords = new[]
{ {
Level = int.MaxValue, new FileShareRecord
EntryId = entry.Id, {
EntryType = entry.FileEntryType, Level = int.MaxValue,
Share = DefaultPrivacyShare, EntryId = entry.Id,
Subject = entry.RootCreateBy, EntryType = entry.FileEntryType,
TenantId = _tenantManager.GetCurrentTenant().Id, Share = DefaultPrivacyShare,
Owner = entry.RootCreateBy Subject = entry.RootCreateBy,
TenantId = _tenantManager.GetCurrentTenant().Id,
Owner = entry.RootCreateBy
}
}; };
if (!shares.Any()) if (!shares.Any())
{ {
return new List<Guid> return new List<Guid>
{ {
entry.RootCreateBy entry.RootCreateBy
}; };
} }
break; break;
case FolderType.BUNCH: case FolderType.BUNCH:
@ -327,43 +336,56 @@ public class FileSecurity : IFileSecurity
} }
// TODO: For Projects and other // TODO: For Projects and other
defaultShareRecord = null; defaultRecords = null;
break; break;
case FolderType.VirtualRooms: case FolderType.VirtualRooms:
defaultShareRecord = new FileShareRecord defaultRecords = new[]
{ {
Level = int.MaxValue, new FileShareRecord
EntryId = entry.Id, {
EntryType = entry.FileEntryType, Level = int.MaxValue,
Share = FileShare.Read, EntryId = entry.Id,
Subject = WebItemManager.DocumentsProductID, EntryType = entry.FileEntryType,
TenantId = _tenantManager.GetCurrentTenant().Id, Share = FileShare.Read,
Owner = entry.RootCreateBy Subject = WebItemManager.DocumentsProductID,
TenantId = _tenantManager.GetCurrentTenant().Id,
Owner = entry.RootCreateBy
},
new FileShareRecord
{
Level = int.MaxValue,
EntryId = entry.Id,
EntryType = entry.FileEntryType,
Share = FileShare.Read,
Subject = Constants.GroupAdmin.ID,
TenantId = _tenantManager.GetCurrentTenant().Id,
Owner = entry.RootCreateBy
}
}; };
if (!shares.Any()) if (!shares.Any())
{ {
if ((defaultShareRecord.Share == FileShare.Read && action == FilesSecurityActions.Read) || var users = new List<Guid>();
(defaultShareRecord.Share == FileShare.ReadWrite))
foreach (var defaultRecord in defaultRecords)
{ {
return _userManager.GetUsersByGroup(defaultShareRecord.Subject) users.AddRange(_userManager.GetUsersByGroup(defaultRecord.Subject).Where(x => x.Status == EmployeeStatus.Active).Select(y => y.Id));
.Where(x => x.Status == EmployeeStatus.Active).Select(y => y.Id).Distinct();
} }
return Enumerable.Empty<Guid>(); return users.Distinct();
} }
break; break;
default: default:
defaultShareRecord = null; defaultRecords = null;
break; break;
} }
if (defaultShareRecord != null) if (defaultRecords != null)
{ {
shares = shares.Concat(new[] { defaultShareRecord }); shares = shares.Concat(defaultRecords);
} }
var manyShares = shares.SelectMany(x => var manyShares = shares.SelectMany(x =>
@ -378,8 +400,7 @@ public class FileSecurity : IFileSecurity
} }
return new[] { x.Subject }; return new[] { x.Subject };
}) }).Distinct();
.Distinct();
var result = new List<Guid>(); var result = new List<Guid>();

View File

@ -594,7 +594,7 @@ internal abstract class ThirdPartyProviderDao<T> : ThirdPartyProviderDao, IDispo
return Task.FromResult(tagInfo); return Task.FromResult(tagInfo);
} }
public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag) public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag, Guid createdBy = default)
{ {
return new List<Tag>(); return new List<Tag>();
} }
@ -604,7 +604,7 @@ internal abstract class ThirdPartyProviderDao<T> : ThirdPartyProviderDao, IDispo
return new List<Tag>(); return new List<Tag>();
} }
public void UpdateNewTags(IEnumerable<Tag> tag) public void UpdateNewTags(IEnumerable<Tag> tag, Guid createdBy = default)
{ {
} }
@ -645,7 +645,7 @@ internal abstract class ThirdPartyProviderDao<T> : ThirdPartyProviderDao, IDispo
var filesDbContext = _dbContextFactory.CreateDbContext(); var filesDbContext = _dbContextFactory.CreateDbContext();
var entryIDs = await filesDbContext.ThirdpartyIdMapping var entryIDs = await filesDbContext.ThirdpartyIdMapping
.Where(r => r.Id.StartsWith(parentFolder.Id)) .Where(r => r.Id.StartsWith(PathPrefix))
.Select(r => r.HashId) .Select(r => r.HashId)
.ToListAsync(); .ToListAsync();

View File

@ -83,9 +83,9 @@ internal class ProviderTagDao : ProviderDaoBase, ITagDao<string>
return _tagDao.GetTagsAsync(names, tagType); return _tagDao.GetTagsAsync(names, tagType);
} }
public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag) public IEnumerable<Tag> SaveTags(IEnumerable<Tag> tag, Guid createdBy = default)
{ {
return _tagDao.SaveTags(tag); return _tagDao.SaveTags(tag, createdBy);
} }
public IEnumerable<Tag> SaveTags(Tag tag) public IEnumerable<Tag> SaveTags(Tag tag)
@ -93,9 +93,9 @@ internal class ProviderTagDao : ProviderDaoBase, ITagDao<string>
return _tagDao.SaveTags(tag); return _tagDao.SaveTags(tag);
} }
public void UpdateNewTags(IEnumerable<Tag> tag) public void UpdateNewTags(IEnumerable<Tag> tag, Guid createdBy = default)
{ {
_tagDao.UpdateNewTags(tag); _tagDao.UpdateNewTags(tag, createdBy);
} }
public void UpdateNewTags(Tag tag) public void UpdateNewTags(Tag tag)

View File

@ -722,10 +722,10 @@ public class EntryManager
var tagDao = _daoFactory.GetTagDao<int>(); var tagDao = _daoFactory.GetTagDao<int>();
var tags = tagDao.GetTagsAsync(_authContext.CurrentAccount.ID, TagType.Favorite); var tags = tagDao.GetTagsAsync(_authContext.CurrentAccount.ID, TagType.Favorite);
var fileIdsInt = Enumerable.Empty<int>(); var fileIdsInt = new List<int>();
var fileIdsString = Enumerable.Empty<string>(); var fileIdsString = new List<string>();
var folderIdsInt = Enumerable.Empty<int>(); var folderIdsInt = new List<int>();
var folderIdsString = Enumerable.Empty<string>(); var folderIdsString = new List<string>();
await foreach (var tag in tags) await foreach (var tag in tags)
{ {
@ -733,22 +733,22 @@ public class EntryManager
{ {
if (tag.EntryId is int) if (tag.EntryId is int)
{ {
fileIdsInt.Append((int)tag.EntryId); fileIdsInt.Add((int)tag.EntryId);
} }
else if (tag.EntryId is string) else if (tag.EntryId is string)
{ {
fileIdsString.Append((string)tag.EntryId); fileIdsString.Add((string)tag.EntryId);
} }
} }
else else
{ {
if (tag.EntryId is int) if (tag.EntryId is int)
{ {
folderIdsInt.Append((int)tag.EntryId); folderIdsInt.Add((int)tag.EntryId);
} }
else if (tag.EntryId is string) else if (tag.EntryId is string)
{ {
folderIdsString.Append((string)tag.EntryId); folderIdsString.Add((string)tag.EntryId);
} }
} }
} }

View File

@ -69,7 +69,7 @@ public class FileMarker
{ {
private readonly ICache _cache; private readonly ICache _cache;
private const string _cacheKeyFormat = "MarkedAsNew/{0}/folder_{1}"; private const string CacheKeyFormat = "MarkedAsNew/{0}/folder_{1}";
private readonly TenantManager _tenantManager; private readonly TenantManager _tenantManager;
private readonly UserManager _userManager; private readonly UserManager _userManager;
@ -151,7 +151,7 @@ public class FileMarker
userEntriesData.Add(userID, entries); userEntriesData.Add(userID, entries);
} }
RemoveFromCahce(projectsFolder, userID); RemoveFromCahce(projectsFolder, userID);
}); });
} }
else else
@ -166,6 +166,24 @@ public class FileMarker
if (obj.FileEntry.ProviderEntry) if (obj.FileEntry.ProviderEntry)
{ {
userIDs = userIDs.Where(u => !_userManager.IsVisitor(u)).ToList(); userIDs = userIDs.Where(u => !_userManager.IsVisitor(u)).ToList();
if (obj.FileEntry.RootFolderType == FolderType.VirtualRooms)
{
var parents = new List<Folder<T>>();
foreach (var folder in parentFolders)
{
if (DocSpaceHelper.IsRoom(folder.FolderType))
{
parents.Add(folder);
break;
}
parents.Add(folder);
}
parentFolders = parents;
}
} }
foreach (var parentFolder in parentFolders) foreach (var parentFolder in parentFolders)
@ -259,7 +277,25 @@ public class FileMarker
else if (obj.FileEntry.RootFolderType == FolderType.VirtualRooms) else if (obj.FileEntry.RootFolderType == FolderType.VirtualRooms)
{ {
var virtualRoomsFolderId = await _globalFolder.GetFolderVirtualRoomsAsync(_daoFactory); var virtualRoomsFolderId = await _globalFolder.GetFolderVirtualRoomsAsync(_daoFactory);
userIDs.ForEach(userID => RemoveFromCahce(virtualRoomsFolderId, userID));
if (obj.FileEntry.ProviderEntry)
{
var virtualRoomsFolder = await _daoFactory.GetFolderDao<int>().GetFolderAsync(virtualRoomsFolderId);
userIDs.ForEach(userID =>
{
if (userEntriesData.TryGetValue(userID, out var value))
{
value.Add(virtualRoomsFolder);
}
else
{
userEntriesData.Add(userID, new List<FileEntry> { virtualRoomsFolder });
}
RemoveFromCahce(virtualRoomsFolderId, userID);
});
}
} }
else if (obj.FileEntry.RootFolderType == FolderType.Privacy) else if (obj.FileEntry.RootFolderType == FolderType.Privacy)
{ {
@ -322,12 +358,12 @@ public class FileMarker
if (updateTags.Count > 0) if (updateTags.Count > 0)
{ {
tagDao.UpdateNewTags(updateTags); tagDao.UpdateNewTags(updateTags, obj.CurrentAccountId);
} }
if (newTags.Count > 0) if (newTags.Count > 0)
{ {
tagDao.SaveTags(newTags); tagDao.SaveTags(newTags, obj.CurrentAccountId);
} }
async Task GetNewTagsAsync<T1>(Guid userID, List<FileEntry<T1>> entries) async Task GetNewTagsAsync<T1>(Guid userID, List<FileEntry<T1>> entries)
@ -628,7 +664,8 @@ public class FileMarker
if (Equals(folder.Id, _globalFolder.GetFolderMy(this, _daoFactory)) || if (Equals(folder.Id, _globalFolder.GetFolderMy(this, _daoFactory)) ||
Equals(folder.Id, await _globalFolder.GetFolderCommonAsync(this, _daoFactory)) || Equals(folder.Id, await _globalFolder.GetFolderCommonAsync(this, _daoFactory)) ||
Equals(folder.Id, await _globalFolder.GetFolderShareAsync(_daoFactory))) Equals(folder.Id, await _globalFolder.GetFolderShareAsync(_daoFactory)) ||
Equals(folder.Id, await _globalFolder.GetFolderVirtualRoomsAsync(_daoFactory)))
{ {
var folderTags = tags.Where(tag => tag.EntryType == FileEntryType.Folder && (tag.EntryId is string)); var folderTags = tags.Where(tag => tag.EntryType == FileEntryType.Folder && (tag.EntryId is string));
@ -684,7 +721,7 @@ public class FileMarker
} }
continue; continue;
} }
var parentEntry = entryTagsProvider.Keys var parentEntry = entryTagsProvider.Keys
.FirstOrDefault(entryCountTag => Equals(entryCountTag.Id, entryTag.Key.ParentId)); .FirstOrDefault(entryCountTag => Equals(entryCountTag.Id, entryTag.Key.ParentId));
@ -764,8 +801,12 @@ public class FileMarker
: totalTags.FirstOrDefault(tag => tag.EntryType == FileEntryType.Folder && Equals(tag.EntryId, parent.Id)); : totalTags.FirstOrDefault(tag => tag.EntryType == FileEntryType.Folder && Equals(tag.EntryId, parent.Id));
totalTags = totalTags.Where(e => e != parentFolderTag).ToList(); totalTags = totalTags.Where(e => e != parentFolderTag).ToList();
var countSubNew = 0; var countSubNew = 0;
totalTags.ForEach(tag => countSubNew += tag.Count); totalTags.ForEach(tag =>
{
countSubNew += tag.Count;
});
if (parentFolderTag == null) if (parentFolderTag == null)
{ {
@ -773,6 +814,11 @@ public class FileMarker
parentFolderTag.Id = -1; parentFolderTag.Id = -1;
} }
if (parent.FolderType != FolderType.VirtualRooms && parent.RootFolderType == FolderType.VirtualRooms && parent.ProviderEntry)
{
countSubNew = parentFolderTag.Count;
}
if (parentFolderTag.Count != countSubNew) if (parentFolderTag.Count != countSubNew)
{ {
if (countSubNew > 0) if (countSubNew > 0)
@ -874,13 +920,13 @@ public class FileMarker
private void InsertToCahce(object folderId, int count) private void InsertToCahce(object folderId, int count)
{ {
var key = string.Format(_cacheKeyFormat, _authContext.CurrentAccount.ID, folderId); var key = string.Format(CacheKeyFormat, _authContext.CurrentAccount.ID, folderId);
_cache.Insert(key, count.ToString(), TimeSpan.FromMinutes(10)); _cache.Insert(key, count.ToString(), TimeSpan.FromMinutes(10));
} }
private int GetCountFromCahce(object folderId) private int GetCountFromCahce(object folderId)
{ {
var key = string.Format(_cacheKeyFormat, _authContext.CurrentAccount.ID, folderId); var key = string.Format(CacheKeyFormat, _authContext.CurrentAccount.ID, folderId);
var count = _cache.Get<string>(key); var count = _cache.Get<string>(key);
return count == null ? -1 : int.Parse(count); return count == null ? -1 : int.Parse(count);
@ -893,7 +939,7 @@ public class FileMarker
private void RemoveFromCahce(object folderId, Guid userId) private void RemoveFromCahce(object folderId, Guid userId)
{ {
var key = string.Format(_cacheKeyFormat, userId, folderId); var key = string.Format(CacheKeyFormat, userId, folderId);
_cache.Remove(key); _cache.Remove(key);
} }
} }