Merge branch 'develop' into feature/thirdparty-integrations

This commit is contained in:
Ilya Oleshko 2020-11-06 15:30:35 +03:00
commit d8c403f662
9 changed files with 105 additions and 80 deletions

View File

@ -83,8 +83,10 @@ namespace ASC.Files.Core
{
Logger.ErrorFormat("GetBreadCrumbs {0} with null", session.FolderId);
return default;
}
return f.ID;
}
if (f is Folder<string> f1) return (T)Convert.ChangeType(f1.ID, typeof(T));
if (f is Folder<int> f2) return (T)Convert.ChangeType(f2.ID, typeof(T));
return (T)Convert.ChangeType(0, typeof(T));
})
: new List<T> { session.FolderId };

View File

@ -227,7 +227,7 @@ namespace ASC.Web.Files.Services.WCFService
}
}
public ItemList<T> GetPath(T folderId)
public ItemList<object> GetPath(T folderId)
{
var folderDao = GetFolderDao();
var folder = folderDao.GetFolder(folderId);
@ -235,7 +235,12 @@ namespace ASC.Web.Files.Services.WCFService
ErrorIf(folder == null, FilesCommonResource.ErrorMassage_FolderNotFound);
ErrorIf(!FileSecurity.CanRead(folder), FilesCommonResource.ErrorMassage_SecurityException_ViewFolder);
return new ItemList<T>(EntryManager.GetBreadCrumbs(folderId, folderDao).Select(f => f.ID));
return new ItemList<object>(EntryManager.GetBreadCrumbs(folderId, folderDao).Select(f =>
{
if (f is Folder<string> f1) return (object)f1.ID;
if (f is Folder<int> f2) return f2.ID;
return 0;
}));
}
public DataWrapper<T> GetFolderItems(T parentId, int from, int count, FilterType filter, bool subjectGroup, string ssubject, string searchText, bool searchInContent, bool withSubfolders, OrderBy orderBy)
@ -296,7 +301,8 @@ namespace ASC.Web.Files.Services.WCFService
var prevVisible = breadCrumbs.ElementAtOrDefault(breadCrumbs.Count() - 2);
if (prevVisible != null)
{
parent.ParentFolderID = prevVisible.ID;
if (prevVisible is Folder<string> f1) parent.ParentFolderID = (T)Convert.ChangeType(f1.ID, typeof(T));
if (prevVisible is Folder<int> f2) parent.ParentFolderID = (T)Convert.ChangeType(f2.ID, typeof(T));
}
parent.Shareable = FileSharing.CanSetAccess(parent)
@ -309,7 +315,12 @@ namespace ASC.Web.Files.Services.WCFService
{
Total = total,
Entries = new ItemList<FileEntry>(entries.ToList()),
FolderPathParts = new ItemList<T>(breadCrumbs.Select(f => f.ID)),
FolderPathParts = new ItemList<object>(breadCrumbs.Select(f =>
{
if (f is Folder<string> f1) return (object)f1.ID;
if (f is Folder<int> f2) return f2.ID;
return 0;
})),
FolderInfo = parent,
New = FileMarker.GetRootFoldersIdMarkedAsNew(parentId)
};
@ -579,27 +590,27 @@ namespace ASC.Web.Files.Services.WCFService
if (fileWrapper.TemplateId.Equals(default(T)))
{
var culture = UserManager.GetUsers(AuthContext.CurrentAccount.ID).GetCulture();
var storeTemplate = GetStoreTemplate();
var culture = UserManager.GetUsers(AuthContext.CurrentAccount.ID).GetCulture();
var storeTemplate = GetStoreTemplate();
var path = FileConstant.NewDocPath + culture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "default/";
}
var path = FileConstant.NewDocPath + culture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "default/";
}
path += "new" + fileExt;
path += "new" + fileExt;
try
{
using var stream = storeTemplate.GetReadStream("", path);
file.ContentLength = stream.CanSeek ? stream.Length : storeTemplate.GetFileSize(path);
file = fileDao.SaveFile(file, stream);
}
catch (Exception e)
{
throw GenerateException(e);
}
try
{
using var stream = storeTemplate.GetReadStream("", path);
file.ContentLength = stream.CanSeek ? stream.Length : storeTemplate.GetFileSize(path);
file = fileDao.SaveFile(file, stream);
}
catch (Exception e)
{
throw GenerateException(e);
}
}
else
{
@ -2253,46 +2264,46 @@ namespace ASC.Web.Files.Services.WCFService
{
if (services.TryAddScoped<FileStorageService<string>>())
{
services.TryAddScoped<FileStorageService<int>>();
//services.TryAddScoped<IFileStorageService, FileStorageService>();
return services
.AddGlobalService()
.AddGlobalStoreService()
.AddGlobalFolderHelperService()
.AddAuthContextService()
.AddUserManagerService()
.AddFilesLinkUtilityService()
.AddBaseCommonLinkUtilityService()
.AddCoreBaseSettingsService()
.AddCustomNamingPeopleService()
.AddDisplayUserSettingsService()
.AddPathProviderService()
.AddDaoFactoryService()
.AddFileMarkerService()
.AddFilesSettingsHelperService()
.AddFileUtilityService()
.AddFileSecurityService()
.AddFilesMessageService()
.AddFileShareLinkService()
.AddDocumentServiceConnectorService()
.AddEntryManagerService()
.AddDocumentServiceHelperService()
.AddThirdpartyConfigurationService()
.AddUrlShortener()
.AddDocuSignHelperService()
.AddDocuSignTokenService()
.AddFileConverterService()
.AddNotifyClientService()
.AddFileSharingService()
.AddDocumentServiceTrackerHelperService()
.AddSocketManagerService()
.AddFileOperationsManagerHelperService()
.AddFileSharingAceHelperService()
.AddTenantManagerService();
}
services.TryAddScoped<FileStorageService<int>>();
//services.TryAddScoped<IFileStorageService, FileStorageService>();
return services
.AddGlobalService()
.AddGlobalStoreService()
.AddGlobalFolderHelperService()
.AddAuthContextService()
.AddUserManagerService()
.AddFilesLinkUtilityService()
.AddBaseCommonLinkUtilityService()
.AddCoreBaseSettingsService()
.AddCustomNamingPeopleService()
.AddDisplayUserSettingsService()
.AddPathProviderService()
.AddDaoFactoryService()
.AddFileMarkerService()
.AddFilesSettingsHelperService()
.AddFileUtilityService()
.AddFileSecurityService()
.AddFilesMessageService()
.AddFileShareLinkService()
.AddDocumentServiceConnectorService()
.AddEntryManagerService()
.AddDocumentServiceHelperService()
.AddThirdpartyConfigurationService()
.AddUrlShortener()
.AddDocuSignHelperService()
.AddDocuSignTokenService()
.AddFileConverterService()
.AddNotifyClientService()
.AddFileSharingService()
.AddDocumentServiceTrackerHelperService()
.AddSocketManagerService()
.AddFileOperationsManagerHelperService()
.AddFileSharingAceHelperService()
.AddTenantManagerService();
}
return services;
}
return services;
}
}
public class FileModel<T>

View File

@ -127,6 +127,7 @@ namespace ASC.Files.Thirdparty
{
if (services.TryAddScoped<IProviderDao, ProviderAccountDao>())
{
services.TryAddScoped<CachedProviderAccountDao>();
services.TryAddSingleton<CachedProviderAccountDaoNotify>();
return services

View File

@ -529,7 +529,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
{
if (services.TryAddScoped<ProviderFileDao>())
{
services.TryAddScoped<File<string>>();
services.TryAddTransient<File<string>>();
services.TryAddScoped<IFileDao<string>, ProviderFileDao>();
return services

View File

@ -140,7 +140,7 @@ namespace ASC.Web.Files.Configuration
Additional = new Dictionary<string, object>
{
{ "Author", r.CreateByString.HtmlEncode() },
{ "Path", FolderPathBuilder(EntryManager.GetBreadCrumbs(r.FolderID, folderDao)) },
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(r.FolderID, folderDao)) },
{ "Size", FileSizeComment.FilesSizeToString(r.ContentLength) }
}
}
@ -157,7 +157,7 @@ namespace ASC.Web.Files.Configuration
Additional = new Dictionary<string, object>
{
{ "Author", f.CreateByString.HtmlEncode() },
{ "Path", FolderPathBuilder(EntryManager.GetBreadCrumbs(f.ID, folderDao)) },
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(f.ID, folderDao)) },
{ "IsFolder", true }
}
});
@ -165,7 +165,7 @@ namespace ASC.Web.Files.Configuration
return result.Concat(resultFolder).ToArray();
}
private static string FolderPathBuilder<T>(IEnumerable<Folder<T>> folders)
private static string FolderPathBuilder<T>(IEnumerable<FileEntry> folders)
{
var titles = folders.Select(f => f.Title).ToList();
const string separator = " \\ ";

View File

@ -37,7 +37,7 @@ namespace ASC.Web.Files.Services.WCFService
public int Total { get; set; }
[JsonPropertyName("path_parts")]
public ItemList<T> FolderPathParts { get; set; }
public ItemList<object> FolderPathParts { get; set; }
[JsonPropertyName("folder_info")]
public Folder<T> FolderInfo { get; set; }

View File

@ -112,18 +112,18 @@ namespace ASC.Web.Files.Utils
AuthContext = authContext;
}
public List<Folder<T>> GetBreadCrumbs<T>(T folderId)
public List<FileEntry> GetBreadCrumbs<T>(T folderId)
{
var folderDao = DaoFactory.GetFolderDao<T>();
return GetBreadCrumbs(folderId, folderDao);
}
public List<Folder<T>> GetBreadCrumbs<T>(T folderId, IFolderDao<T> folderDao)
public List<FileEntry> GetBreadCrumbs<T>(T folderId, IFolderDao<T> folderDao)
{
if (folderId == null) return new List<Folder<T>>();
var breadCrumbs = FileSecurity.FilterRead(folderDao.GetParentFolders(folderId)).ToList();
if (folderId == null) return new List<FileEntry>();
var breadCrumbs = FileSecurity.FilterRead(folderDao.GetParentFolders(folderId)).Cast<FileEntry>().ToList();
var firstVisible = breadCrumbs.ElementAtOrDefault(0);
var firstVisible = breadCrumbs.ElementAtOrDefault(0) as Folder<T>;
var rootId = 0;
if (firstVisible == null)
@ -160,10 +160,12 @@ namespace ASC.Web.Files.Utils
break;
}
}
var folderDaoInt = DaoFactory.GetFolderDao<int>();
if (rootId != 0)
{
breadCrumbs.Insert(0, folderDao.GetFolder((T)Convert.ChangeType(rootId, typeof(T))));
breadCrumbs.Insert(0, folderDaoInt.GetFolder(rootId));
}
return breadCrumbs;
@ -715,12 +717,12 @@ namespace ASC.Web.Files.Utils
}
public List<Folder<T>> GetBreadCrumbs<T>(T folderId)
public List<FileEntry> GetBreadCrumbs<T>(T folderId)
{
return BreadCrumbsManager.GetBreadCrumbs(folderId);
}
public List<Folder<T>> GetBreadCrumbs<T>(T folderId, IFolderDao<T> folderDao)
public List<FileEntry> GetBreadCrumbs<T>(T folderId, IFolderDao<T> folderDao)
{
return BreadCrumbsManager.GetBreadCrumbs(folderId, folderDao);
}

View File

@ -880,13 +880,13 @@ namespace ASC.Api.Documents
/// <category>Folders</category>
/// <returns>Parent folders</returns>
[Read("folder/{folderId}/path", DisableFormat = true)]
public IEnumerable<FolderWrapper<string>> GetFolderPath(string folderId)
public IEnumerable<FileEntryWrapper> GetFolderPath(string folderId)
{
return FilesControllerHelperString.GetFolderPath(folderId);
}
[Read("folder/{folderId:int}/path")]
public IEnumerable<FolderWrapper<int>> GetFolderPath(int folderId)
public IEnumerable<FileEntryWrapper> GetFolderPath(int folderId)
{
return FilesControllerHelperInt.GetFolderPath(folderId);
}

View File

@ -340,9 +340,18 @@ namespace ASC.Files.Helpers
return FolderWrapperHelper.Get(folder);
}
public IEnumerable<FolderWrapper<T>> GetFolderPath(T folderId)
public IEnumerable<FileEntryWrapper> GetFolderPath(T folderId)
{
return EntryManager.GetBreadCrumbs(folderId).Select(FolderWrapperHelper.Get);
return EntryManager.GetBreadCrumbs(folderId).Select(r =>
{
if (r is Folder<string> f1)
return FolderWrapperHelper.Get(f1);
if (r is Folder<int> f2)
return FolderWrapperHelper.Get(f2);
return default(FileEntryWrapper);
});
}
public FileWrapper<T> GetFileInfo(T fileId, int version = -1)