Files: fix create file in thirdparty

This commit is contained in:
pavelbannov 2020-11-15 18:34:47 +03:00
parent 47020b7a01
commit 7c228a78e5
2 changed files with 37 additions and 29 deletions

View File

@ -588,7 +588,7 @@ namespace ASC.Web.Files.Services.WCFService
file.Title = FileUtility.ReplaceFileExtension(fileWrapper.Title, fileExt);
}
if (fileWrapper.TemplateId.Equals(default(T)))
if (fileWrapper.TemplateId == null || fileWrapper.TemplateId.Equals(default(T)))
{
var culture = UserManager.GetUsers(AuthContext.CurrentAccount.ID).GetCulture();
var storeTemplate = GetStoreTemplate();

View File

@ -104,7 +104,7 @@ namespace ASC.Web.Files.Utils
private TenantManager TenantManager { get; }
private UserManager UserManager { get; }
private IDaoFactory DaoFactory { get; }
private GlobalFolder GlobalFolder { get; }
private GlobalFolder GlobalFolder { get; }
private FileSecurity FileSecurity { get; }
private CoreBaseSettings CoreBaseSettings { get; }
private AuthContext AuthContext { get; }
@ -125,7 +125,7 @@ namespace ASC.Web.Files.Utils
TenantManager = tenantManager;
UserManager = userManager;
DaoFactory = daoFactory;
GlobalFolder = globalFolder;
GlobalFolder = globalFolder;
FileSecurity = fileSecurity;
CoreBaseSettings = coreBaseSettings;
AuthContext = authContext;
@ -150,7 +150,7 @@ namespace ASC.Web.Files.Utils
var userIDs = obj.UserIDs;
var userEntriesData = new Dictionary<Guid, List<FileEntry<T>>>();
var userEntriesData = new Dictionary<Guid, List<FileEntry>>();
if (obj.FileEntry.RootFolderType == FolderType.BUNCH)
{
@ -158,7 +158,7 @@ namespace ASC.Web.Files.Utils
parentFolders.Add(folderDao.GetFolder(GlobalFolder.GetFolderProjects<T>(DaoFactory)));
var entries = new List<FileEntry<T>> { obj.FileEntry };
var entries = new List<FileEntry> { obj.FileEntry };
entries = entries.Concat(parentFolders).ToList();
userIDs.ForEach(userID =>
@ -194,26 +194,27 @@ namespace ASC.Web.Files.Utils
if (userEntriesData.ContainsKey(userID))
userEntriesData[userID].Add(parentFolder);
else
userEntriesData.Add(userID, new List<FileEntry<T>> { parentFolder });
userEntriesData.Add(userID, new List<FileEntry> { parentFolder });
})
);
if (obj.FileEntry.RootFolderType == FolderType.USER)
{
var folderShare = folderDao.GetFolder(GlobalFolder.GetFolderShare<T>(DaoFactory));
{
var folderDaoInt = DaoFactory.GetFolderDao<int>();
var folderShare = folderDaoInt.GetFolder(GlobalFolder.GetFolderShare(DaoFactory));
foreach (var userID in userIDs)
{
var userFolderId = folderDao.GetFolderIDUser(false, userID);
var userFolderId = GlobalFolder.GetFolderMy(this, DaoFactory);
if (Equals(userFolderId, 0)) continue;
Folder<T> rootFolder = null;
Folder<int> rootFolder = null;
if (obj.FileEntry.ProviderEntry)
{
rootFolder = obj.FileEntry.RootFolderCreator == userID
? folderDao.GetFolder(userFolderId)
? folderDaoInt.GetFolder(userFolderId)
: folderShare;
}
else if (!Equals(obj.FileEntry.RootFolderId, userFolderId))
@ -230,7 +231,7 @@ namespace ASC.Web.Files.Utils
if (userEntriesData.ContainsKey(userID))
userEntriesData[userID].Add(rootFolder);
else
userEntriesData.Add(userID, new List<FileEntry<T>> { rootFolder });
userEntriesData.Add(userID, new List<FileEntry> { rootFolder });
RemoveFromCahce(rootFolder.ID, userID);
}
@ -247,7 +248,7 @@ namespace ASC.Web.Files.Utils
if (userEntriesData.ContainsKey(userID))
userEntriesData[userID].Add(commonFolder);
else
userEntriesData.Add(userID, new List<FileEntry<T>> { commonFolder });
userEntriesData.Add(userID, new List<FileEntry> { commonFolder });
RemoveFromCahce(GlobalFolder.GetFolderCommon(this, DaoFactory), userID);
});
@ -266,7 +267,7 @@ namespace ASC.Web.Files.Utils
if (userEntriesData.ContainsKey(userID))
userEntriesData[userID].Add(rootFolder);
else
userEntriesData.Add(userID, new List<FileEntry<T>> { rootFolder });
userEntriesData.Add(userID, new List<FileEntry> { rootFolder });
RemoveFromCahce(rootFolder.ID, userID);
}
@ -277,7 +278,7 @@ namespace ASC.Web.Files.Utils
if (userEntriesData.ContainsKey(userID))
userEntriesData[userID].Add(obj.FileEntry);
else
userEntriesData.Add(userID, new List<FileEntry<T>> { obj.FileEntry });
userEntriesData.Add(userID, new List<FileEntry> { obj.FileEntry });
});
}
@ -291,25 +292,32 @@ namespace ASC.Web.Files.Utils
continue;
var entries = userEntriesData[userID].Distinct().ToList();
var exist = tagDao.GetNewTags(userID, entries).ToList();
var update = exist.Where(t => t.EntryType == FileEntryType.Folder).ToList();
update.ForEach(t => t.Count++);
updateTags.AddRange(update);
entries.ForEach(entry =>
{
if (entry != null && exist.All(tag => tag != null && !tag.EntryId.Equals(entry.ID)))
{
newTags.Add(Tag.New(userID, entry));
}
});
GetNewTags(userID, entries.OfType<FileEntry<int>>().ToList());
GetNewTags(userID, entries.OfType<FileEntry<string>>().ToList());
}
if (updateTags.Any())
tagDao.UpdateNewTags(updateTags);
if (newTags.Any())
tagDao.SaveTags(newTags);
tagDao.SaveTags(newTags);
void GetNewTags<T1>(Guid userID, List<FileEntry<T1>> entries)
{
var tagDao1 = DaoFactory.GetTagDao<T1>();
var exist = tagDao1.GetNewTags(userID, entries).ToList();
var update = exist.Where(t => t.EntryType == FileEntryType.Folder).ToList();
update.ForEach(t => t.Count++);
updateTags.AddRange(update);
entries.ForEach(entry =>
{
if (entry != null && exist.All(tag => tag != null && !tag.EntryId.Equals(entry.ID)))
{
newTags.Add(Tag.New(userID, entry));
}
});
}
}
public void MarkAsNew<T>(FileEntry<T> fileEntry, List<Guid> userIDs = null)