Files: added new checkconversion method's param

This commit is contained in:
pavelbannov 2021-12-08 20:17:50 +03:00
parent 36fa4131cc
commit 4a2342f39b
4 changed files with 38 additions and 27 deletions

View File

@ -48,6 +48,7 @@ using ASC.Data.Storage;
using ASC.ElasticSearch;
using ASC.FederatedLogin.LoginProviders;
using ASC.Files.Core;
using ASC.Files.Core.Model;
using ASC.Files.Core.Resources;
using ASC.Files.Core.Security;
using ASC.Files.Core.Services.NotifyService;
@ -1524,7 +1525,7 @@ namespace ASC.Web.Files.Services.WCFService
return FileOperationsManager.Delete(AuthContext.CurrentAccount.ID, TenantManager.GetCurrentTenant(), foldersId, filesId, false, true, false, GetHttpHeaders());
}
public List<FileOperationResult> CheckConversion(List<List<string>> filesInfoJSON, bool sync = false)
public List<FileOperationResult> CheckConversion(List<CheckConversionModel<T>> filesInfoJSON, bool sync = false)
{
if (filesInfoJSON == null || filesInfoJSON.Count == 0) return new List<FileOperationResult>();
@ -1533,17 +1534,15 @@ namespace ASC.Web.Files.Services.WCFService
var files = new List<KeyValuePair<File<T>, bool>>();
foreach (var fileInfo in filesInfoJSON)
{
var fileId = (T)Convert.ChangeType(fileInfo[0], typeof(T));
var file = int.TryParse(fileInfo[1], out var version) && version > 0
? fileDao.GetFile(fileId, version)
: fileDao.GetFile(fileId);
var file = fileInfo.Version > 0
? fileDao.GetFile(fileInfo.FileId, fileInfo.Version)
: fileDao.GetFile(fileInfo.FileId);
if (file == null)
{
var newFile = ServiceProvider.GetService<File<T>>();
newFile.ID = fileId;
newFile.Version = version;
newFile.ID = fileInfo.FileId;
newFile.Version = fileInfo.Version;
files.Add(new KeyValuePair<File<T>, bool>(newFile, true));
continue;
@ -1551,18 +1550,17 @@ namespace ASC.Web.Files.Services.WCFService
ErrorIf(!FileSecurity.CanRead(file), FilesCommonResource.ErrorMassage_SecurityException_ReadFile);
var startConvert = Convert.ToBoolean(fileInfo[2]);
if (startConvert && FileConverter.MustConvert(file))
if (fileInfo.StartConvert && FileConverter.MustConvert(file))
{
try
{
if (sync)
{
results.Add(FileConverter.ExecSync(file, fileInfo.Count > 3 ? fileInfo[3] : null));
results.Add(FileConverter.ExecSync(file, fileInfo.Password));
}
else
{
FileConverter.ExecAsync(file, false, fileInfo.Count > 3 ? fileInfo[3] : null);
FileConverter.ExecAsync(file, false, fileInfo.Password);
}
}
catch (Exception e)

View File

@ -1,7 +1,11 @@
namespace ASC.Files.Core.Model
{
public class CheckConversionModel
public class CheckConversionModel<T>
{
public T FileId { get; set; }
public bool Sync { get; set; }
public bool StartConvert { get; set; }
public int Version { get; set; }
public string Password { get; set; }
}
}

View File

@ -1179,15 +1179,17 @@ namespace ASC.Api.Documents
/// <param name="fileId"></param>
/// <returns>Operation result</returns>
[Update("file/{fileId}/checkconversion")]
public IEnumerable<ConversationResult<string>> StartConversion(string fileId, [FromBody(EmptyBodyBehavior = Microsoft.AspNetCore.Mvc.ModelBinding.EmptyBodyBehavior.Allow)] CheckConversionModel model)
public IEnumerable<ConversationResult<string>> StartConversion(string fileId, [FromBody(EmptyBodyBehavior = Microsoft.AspNetCore.Mvc.ModelBinding.EmptyBodyBehavior.Allow)] CheckConversionModel<string> model)
{
return FilesControllerHelperString.StartConversion(fileId, model?.Sync ?? false);
model.FileId = fileId;
return FilesControllerHelperString.StartConversion(model);
}
[Update("file/{fileId:int}/checkconversion")]
public IEnumerable<ConversationResult<int>> StartConversion(int fileId, [FromBody(EmptyBodyBehavior = Microsoft.AspNetCore.Mvc.ModelBinding.EmptyBodyBehavior.Allow)] CheckConversionModel model)
public IEnumerable<ConversationResult<int>> StartConversion(int fileId, [FromBody(EmptyBodyBehavior = Microsoft.AspNetCore.Mvc.ModelBinding.EmptyBodyBehavior.Allow)] CheckConversionModel<int> model)
{
return FilesControllerHelperInt.StartConversion(fileId, model?.Sync ?? false);
model.FileId = fileId;
return FilesControllerHelperInt.StartConversion(model);
}
/// <summary>
@ -1201,13 +1203,21 @@ namespace ASC.Api.Documents
[Read("file/{fileId}/checkconversion")]
public IEnumerable<ConversationResult<string>> CheckConversion(string fileId, bool start)
{
return FilesControllerHelperString.CheckConversion(fileId, start);
return FilesControllerHelperString.CheckConversion(new CheckConversionModel<string>()
{
FileId = fileId,
StartConvert = start
});
}
[Read("file/{fileId:int}/checkconversion")]
public IEnumerable<ConversationResult<int>> CheckConversion(int fileId, bool start)
{
return FilesControllerHelperInt.CheckConversion(fileId, start);
return FilesControllerHelperInt.CheckConversion(new CheckConversionModel<int>()
{
FileId = fileId,
StartConvert = start
});
}
/// <summary>
@ -2541,7 +2551,7 @@ namespace ASC.Api.Documents
/// Result file of operation.
/// </summary>
[JsonPropertyName("result")]
public FileWrapper<T> File { get; set; }
public object File { get; set; }
/// <summary>
/// Error during conversation.

View File

@ -381,17 +381,15 @@ namespace ASC.Files.Helpers
.Select(FileOperationWraperHelper.Get);
}
public IEnumerable<ConversationResult<T>> StartConversion(T fileId, bool sync = false)
public IEnumerable<ConversationResult<T>> StartConversion(CheckConversionModel<T> model)
{
return CheckConversion(fileId, true, sync);
model.StartConvert = true;
return CheckConversion(model);
}
public IEnumerable<ConversationResult<T>> CheckConversion(T fileId, bool start, bool sync = false)
public IEnumerable<ConversationResult<T>> CheckConversion(CheckConversionModel<T> model)
{
return FileStorageService.CheckConversion(new List<List<string>>
{
new List<string> { fileId.ToString(), "0", start.ToString() }
}, sync)
return FileStorageService.CheckConversion(new List<CheckConversionModel<T>>() { model })
.Select(r =>
{
var o = new ConversationResult<T>
@ -417,6 +415,7 @@ namespace ASC.Files.Helpers
}
catch (Exception e)
{
o.File = r.Result;
Logger.Error(e);
}
}