diff --git a/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs b/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs index 417284e28..d00ec47d2 100644 --- a/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs +++ b/src/MasterData.Core/Configuration/DataManagerServiceExtensions.cs @@ -1,5 +1,6 @@ using JJMasterData.Core.DataManager; using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.DataManager.Services; using JJMasterData.Core.DataManager.Services.Abstractions; using Microsoft.Extensions.DependencyInjection; @@ -23,11 +24,11 @@ public static IServiceCollection AddDataManagerServices(this IServiceCollection services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped(); -#if NET services.AddScoped(); -#endif services.AddScoped(); services.AddScoped(); diff --git a/src/MasterData.Core/DataDictionary/Services/ElementImportService.cs b/src/MasterData.Core/DataDictionary/Services/ElementImportService.cs index 6d1942a29..14b290fcd 100644 --- a/src/MasterData.Core/DataDictionary/Services/ElementImportService.cs +++ b/src/MasterData.Core/DataDictionary/Services/ElementImportService.cs @@ -10,7 +10,7 @@ namespace JJMasterData.Core.DataDictionary.Services; public class ElementImportService(IDataDictionaryRepository dataDictionaryRepository) { - public async Task Import(MemoryStream file) + public async Task Import(Stream file) { file.Seek(0, SeekOrigin.Begin); @@ -20,9 +20,8 @@ public async Task Import(MemoryStream file) return true; } - -#if NET - public async Task ImportZipFile(MemoryStream ms) + + public async Task ImportZipFile(Stream ms) { using var zip = new ZipArchive(ms, ZipArchiveMode.Read, leaveOpen: true); @@ -45,5 +44,4 @@ private static IEnumerable GetFormElements(ZipArchive zip) yield return formElement; } } -#endif -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/DataHelper.cs b/src/MasterData.Core/DataManager/DataHelper.cs index 487598f65..bf32c83aa 100644 --- a/src/MasterData.Core/DataManager/DataHelper.cs +++ b/src/MasterData.Core/DataManager/DataHelper.cs @@ -257,4 +257,4 @@ public static void RemoveNullValues(Dictionary? values) values.Remove(key); } } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs b/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs index a6586928e..a1d18d1e3 100644 --- a/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs +++ b/src/MasterData.Core/DataManager/Exportation/Abstractions/DataExportationWriterBase.cs @@ -7,7 +7,6 @@ using System.Web; using JJMasterData.Commons.Data.Entity.Repository; using JJMasterData.Commons.Exceptions; -using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Commons.Tasks; using JJMasterData.Commons.Tasks.Progress; using JJMasterData.Commons.Util; @@ -15,7 +14,7 @@ using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataManager.Exportation.Configuration; using JJMasterData.Core.DataManager.Expressions; -using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.DataManager.Models; using JJMasterData.Core.UI.Components; using Microsoft.Extensions.Localization; @@ -25,7 +24,6 @@ namespace JJMasterData.Core.DataManager.Exportation.Abstractions; public abstract class DataExportationWriterBase( - IEncryptionService encryptionService, ExpressionsService expressionsService, IStringLocalizer stringLocalizer, IOptionsSnapshot options, @@ -35,27 +33,22 @@ public abstract class DataExportationWriterBase( public event EventHandler OnProgressChanged; protected const int RecordsPerPage = 100000; - + + private List _fields; + #region "Properties" private DataExportationReporter _processReporter; - private List _fields; - private FormFilePathBuilder _pathBuilder; - private IEncryptionService EncryptionService { get; } = encryptionService; private ExpressionsService ExpressionsService { get; } = expressionsService; protected IStringLocalizer StringLocalizer { get; } = stringLocalizer; private IOptionsSnapshot Options { get; } = options; private ILogger Logger { get; } = logger; - private FormFilePathBuilder PathBuilder => _pathBuilder ??= new FormFilePathBuilder(FormElement); - - public string AbsoluteUri { get; internal set; } - private string GetFolderPath(FormElementField field, Dictionary values) - { - return PathBuilder.GetFolderPath(field, values); - } + internal FileDownloaderFactory FileDownloaderFactory { get; set; } + internal IFileStorage FileStorage { get; set; } + internal string AbsoluteUri { get; set; } protected List VisibleFields { @@ -133,30 +126,12 @@ protected List VisibleFields /// /// Path where the files are generated. /// - public string FolderPath + public string FolderKey { get { var path = Options.Value.ExportationFolderPath; - string folderPath = DataExportationHelper.GetFolderPath(FormElement, path, UserId); - - CreateFolderPathIfNotExits(folderPath); - - return folderPath; - } - } - - private static void CreateFolderPathIfNotExits(string folderPath) - { - try - { - if (folderPath != null && !Directory.Exists(folderPath)) - Directory.CreateDirectory(folderPath); - } - catch (Exception ex) - { - const string message = "Error on create directory, set a valid ExportationFolderPath on JJMasterData Options."; - throw new JJMasterDataException(message, ex); + return DataExportationHelper.GetFolderPath(FormElement, path, UserId); } } @@ -178,14 +153,27 @@ public async Task RunWorkerAsync(CancellationToken token) Reporter(ProcessReporter); - var filePath = Path.Combine(FolderPath, GetFilePath()); + var fileName = GetFileName(); + var tempFilePath = Path.GetTempFileName(); - using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite)) + try { - await GenerateDocument(fs, token); + await using (var fs = new FileStream(tempFilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 81920, true)) + { + await GenerateDocument(fs, token); + } + + await using var readStream = new FileStream(tempFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, 81920, true); + await FileStorage.SaveAsync(FolderKey, fileName, readStream, true, token); + } + finally + { + if (File.Exists(tempFilePath)) + File.Delete(tempFilePath); } - ProcessReporter.FilePath = filePath; + ProcessReporter.FolderKey = FolderKey; + ProcessReporter.FileName = fileName; ProcessReporter.EndDate = DateTime.Now; ProcessReporter.HasError = false; @@ -201,14 +189,6 @@ public async Task RunWorkerAsync(CancellationToken token) case ThreadAbortException: ProcessReporter.Message = StringLocalizer["Process aborted by the user."]; break; - case IOException: - if (FileIO.IsFileLocked(FolderPath)) - ProcessReporter.Message = - StringLocalizer[ - "File is already being used by another process. Try downloading it from \"Recently generated files\"."]; - else - goto default; - break; case JJMasterDataException: ProcessReporter.Message = ex.Message; break; @@ -219,8 +199,6 @@ public async Task RunWorkerAsync(CancellationToken token) break; } - if (File.Exists(FolderPath) && !FileIO.IsFileLocked(FolderPath)) - File.Delete(FolderPath); } finally { @@ -236,7 +214,8 @@ protected void Reporter(DataExportationReporter processReporter) public abstract Task GenerateDocument(Stream ms, CancellationToken token); - protected string GetFileLink(FormElementField field, Dictionary row, string value) + protected string GetFileLink(FormElement formElement, FormElementField field, Dictionary row, + string value) { if (!field.DataFile!.ExportAsLink) return null; @@ -248,11 +227,16 @@ protected string GetFileLink(FormElementField field, Dictionary if (files.Length != 1) return null; - var filePath = GetFolderPath(field, row) + value; - return JJFileDownloader.GetExternalDownloadLink(EncryptionService, AbsoluteUri, filePath); + var fileName = Path.GetFileName(files[0]); + if (string.IsNullOrEmpty(fileName)) + return null; + + var downloader = FileDownloaderFactory.Create(formElement, field, row, fileName); + + return new Uri(new Uri(AbsoluteUri), downloader.GetDownloadUrl(AbsoluteUri)).AbsoluteUri; } - private string GetFilePath() + private string GetFileName() { string fileName; var exportActionFileName = FormElement.Options.GridToolbarActions.ExportAction.FileName; diff --git a/src/MasterData.Core/DataManager/Exportation/DataExportationHelper.cs b/src/MasterData.Core/DataManager/Exportation/DataExportationHelper.cs index 04d40b074..9570c84ff 100644 --- a/src/MasterData.Core/DataManager/Exportation/DataExportationHelper.cs +++ b/src/MasterData.Core/DataManager/Exportation/DataExportationHelper.cs @@ -6,7 +6,7 @@ namespace JJMasterData.Core.DataManager.Exportation; -internal static class DataExportationHelper +public static class DataExportationHelper { /// /// Path where the files are generated. @@ -28,4 +28,4 @@ public static string GetFolderPath(JJDataExportation dataExportation) var path = dataExportation.MasterDataOptions.ExportationFolderPath; return GetFolderPath(dataExportation.FormElement , path, dataExportation.UserId); } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/Exportation/DataExportationReporter.cs b/src/MasterData.Core/DataManager/Exportation/DataExportationReporter.cs index 4d781ecbf..31b43bb47 100644 --- a/src/MasterData.Core/DataManager/Exportation/DataExportationReporter.cs +++ b/src/MasterData.Core/DataManager/Exportation/DataExportationReporter.cs @@ -5,29 +5,28 @@ namespace JJMasterData.Core.DataManager.Exportation; public class DataExportationReporter : ProgressReporter { - private int _totalProcessed; public int TotalProcessed { - get => _totalProcessed; + get; set { - _totalProcessed = value; + field = value; UpdatePercentage(); } } - private int _totalOfRecords; public int TotalOfRecords { - get => _totalOfRecords; + get; set { - _totalOfRecords = value; + field = value; UpdatePercentage(); } } - public string FilePath { get; set; } + public string FolderKey { get; set; } + public string FileName { get; set; } private void UpdatePercentage() { diff --git a/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs b/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs index f50cd3e77..b5b3851c9 100644 --- a/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs +++ b/src/MasterData.Core/DataManager/Exportation/DataExportationWriterFactory.cs @@ -3,6 +3,7 @@ using JJMasterData.Commons.Tasks; using JJMasterData.Core.DataManager.Exportation.Abstractions; using JJMasterData.Core.DataManager.Exportation.Configuration; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.UI.Components; using JJMasterData.Core.UI.Events.Args; using Microsoft.Extensions.DependencyInjection; @@ -81,12 +82,14 @@ public DataExportationWriterBase GetInstance(JJDataExportation dataExportation) return writer; } - private static void ConfigureWriter(JJDataExportation dataExportation, DataExportationWriterBase writer) + private void ConfigureWriter(JJDataExportation dataExportation, DataExportationWriterBase writer) { writer.FormElement = dataExportation.FormElement; writer.Configuration = dataExportation.ExportOptions; writer.UserId = dataExportation.UserId; writer.ProcessOptions = dataExportation.ProcessOptions; + writer.FileDownloaderFactory = serviceProvider.GetRequiredService(); + writer.FileStorage = serviceProvider.GetRequiredService(); writer.AbsoluteUri = dataExportation.CurrentContext.HttpContext!.Request.GetAbsoluteUri(); } diff --git a/src/MasterData.Core/DataManager/Exportation/ExcelWriter.cs b/src/MasterData.Core/DataManager/Exportation/ExcelWriter.cs index dac7327d2..1eed1a7a2 100644 --- a/src/MasterData.Core/DataManager/Exportation/ExcelWriter.cs +++ b/src/MasterData.Core/DataManager/Exportation/ExcelWriter.cs @@ -9,7 +9,6 @@ using JJMasterData.Commons.Data.Entity.Models; using JJMasterData.Commons.Data.Entity.Repository; using JJMasterData.Commons.Data.Entity.Repository.Abstractions; -using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Commons.Tasks; using JJMasterData.Core.Configuration.Options; using JJMasterData.Core.DataDictionary.Models; @@ -27,14 +26,11 @@ namespace JJMasterData.Core.DataManager.Exportation; public class ExcelWriter( ExpressionsService expressionsService, DataItemService dataItemService, - IEncryptionService encryptionService, IStringLocalizer stringLocalizer, IOptionsSnapshot options, ILoggerFactory loggerFactory, IEntityRepository entityRepository) - : DataExportationWriterBase( - encryptionService, - expressionsService, + : DataExportationWriterBase(expressionsService, stringLocalizer, options, loggerFactory.CreateLogger()), IExcelWriter @@ -175,7 +171,7 @@ private async ValueTask CreateCell(FormElementField field, Dictionary{value}"; else @@ -226,4 +222,4 @@ private async Task GenerateHeader(StreamWriter sw) await sw.WriteLineAsync("\t\t\t"); } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/Exportation/TextWriter.cs b/src/MasterData.Core/DataManager/Exportation/TextWriter.cs index 1478f06ac..381520f5c 100644 --- a/src/MasterData.Core/DataManager/Exportation/TextWriter.cs +++ b/src/MasterData.Core/DataManager/Exportation/TextWriter.cs @@ -7,7 +7,6 @@ using JJMasterData.Commons.Data.Entity.Models; using JJMasterData.Commons.Data.Entity.Repository; using JJMasterData.Commons.Data.Entity.Repository.Abstractions; -using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Commons.Tasks; using JJMasterData.Core.Configuration.Options; using JJMasterData.Core.DataManager.Exportation.Abstractions; @@ -21,15 +20,12 @@ namespace JJMasterData.Core.DataManager.Exportation; public class TextWriter( - IEncryptionService encryptionService, - ExpressionsService expressionsService, + ExpressionsService expressionsService, IStringLocalizer stringLocalizer, IOptionsSnapshot options, ILoggerFactory logger, IEntityRepository entityRepository) - : DataExportationWriterBase( - encryptionService, - expressionsService, + : DataExportationWriterBase(expressionsService, stringLocalizer, options, logger.CreateLogger()), ITextWriter diff --git a/src/MasterData.Core/DataManager/IO/FormFileContent.cs b/src/MasterData.Core/DataManager/IO/FormFileContent.cs index 47a75d536..28c1ace92 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileContent.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileContent.cs @@ -1,11 +1,12 @@ using System; +using System.IO; namespace JJMasterData.Core.DataManager.IO; public class FormFileContent { public string FileName { get; set; } - public byte[] Bytes { get; init; } + public Stream Stream { get; set; } public long Length { get; set;} public DateTime LastWriteTime { get; set; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/IO/FormFileManager.cs b/src/MasterData.Core/DataManager/IO/FormFileManager.cs index 40801a17b..c56f0528a 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileManager.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileManager.cs @@ -2,64 +2,58 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using JJMasterData.Commons.Exceptions; +using JJMasterData.Commons.Tasks; using JJMasterData.Commons.Util; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.DataManager.Models; -using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI.Events.Args; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace JJMasterData.Core.DataManager.IO; -public class FormFileManager(string memoryFilesSessionName, - IHttpContextAccessor httpContext, - IStringLocalizer stringLocalizer, +public class FormFileManager( + string draftId, + ITemporaryUploadStore temporaryUploadStore, + IFileStorage fileStorage, + IStringLocalizer stringLocalizer, ILogger logger) { - public event EventHandler OnBeforeCreateFile; - public event EventHandler OnBeforeDeleteFile; - public event EventHandler OnBeforeRenameFile; - - /// - /// Session variable name - /// - private string MemoryFilesSessionName { get; } = $"{memoryFilesSessionName}_files"; - - /// - /// Always apply changes from files on disk, - /// if it is false, keep it in memory - /// Default: true - /// + public event AsyncEventHandler OnBeforeCreateFileAsync; + public event AsyncEventHandler OnBeforeDeleteFileAsync; + public event AsyncEventHandler OnBeforeRenameFileAsync; + + public string DraftId { get; } = string.IsNullOrWhiteSpace(draftId) + ? temporaryUploadStore.CreateDraftId() + : temporaryUploadStore.GetDraftFolderKey(draftId); + public bool AutoSave { get; set; } = true; + public string FolderKey { get; set; } - /// - /// Full Directory Path. - /// (Optional) If the path is not given, all files will be stored in the session. - /// - /// - /// The path is OS agnostic, you can use for example C:\Temp\Files\ or /home/gumbarros/Documents/Files, - /// but beware where you're deploying your application. - /// - public string FolderPath { get; set; } - - public List MemoryFiles - { - get => httpContext.HttpContext!.Session.GetObject>(MemoryFilesSessionName); - set => httpContext.HttpContext!.Session.SetObject(MemoryFilesSessionName, value); - } + private string DraftFolderKey => temporaryUploadStore.GetDraftFolderKey(DraftId); - public List GetFiles() + public async Task> GetFilesAsync(bool preferTemporaryFiles = false) { - List files = null; + var files = new List(); - if (!AutoSave || string.IsNullOrEmpty(FolderPath)) - files = MemoryFiles; + if (!string.IsNullOrEmpty(FolderKey)) + files.AddRange(await GetStorageFilesAsync(fileStorage, FolderKey, false)); - return files ?? GetPhysicalFiles(); + files.AddRange(await GetStorageFilesAsync(temporaryUploadStore, DraftFolderKey, true)); + + var mergedFiles = files + .GroupBy(file => file.Content.FileName) + .Select(group => group.OrderByDescending(file => file.IsTemporary).First()) + .ToList(); + + return preferTemporaryFiles && mergedFiles.Exists(file => file.IsTemporary) + ? mergedFiles.Where(file => file.IsTemporary).ToList() + : mergedFiles; } - public void RenameFile(string currentName, string newName) + public async Task RenameFileAsync(string currentName, string newName) { if (string.IsNullOrEmpty(currentName)) throw new ArgumentNullException(nameof(currentName)); @@ -67,119 +61,96 @@ public void RenameFile(string currentName, string newName) if (string.IsNullOrWhiteSpace(newName)) throw new ArgumentNullException(stringLocalizer["Required file name"]); + currentName = Path.GetFileName(currentName); + newName = Path.GetFileName(newName); + if (!FileIO.GetFileNameExtension(currentName).Equals(FileIO.GetFileNameExtension(newName))) throw new JJMasterDataException(stringLocalizer["The file extension must remain the same"]); - var files = GetFiles(); - if (files.Exists(x => x.Content.FileName.Equals(newName))) + if ((await GetFilesAsync()).Exists(x => x.Content.FileName.Equals(newName))) throw new JJMasterDataException(stringLocalizer["A file with the name {0} already exists", newName]); - if (OnBeforeRenameFile != null) + if (OnBeforeRenameFileAsync != null) { var args = new FormRenameFileEventArgs(currentName, newName); - OnBeforeRenameFile.Invoke(this, args); + await OnBeforeRenameFileAsync(this, args); if (!string.IsNullOrEmpty(args.ErrorMessage)) throw new JJMasterDataException(args.ErrorMessage); } - if (AutoSave && !string.IsNullOrEmpty(FolderPath)) - { - File.Move(Path.Combine(FolderPath,currentName), Path.Combine(FolderPath, newName)); - } - else - { - var file = files.Find(x => x.Content.FileName.Equals(currentName)); - if (file == null) - throw new JJMasterDataException(stringLocalizer["file {0} not found!", currentName]); - - files.Remove(file); - - file.Content.FileName = newName; - file.OldName ??= currentName; - - file.IsRenamed = true; - files.Add(file); - - MemoryFiles = files; - } + var file = await GetFileAsync(currentName) ?? throw new JJMasterDataException(stringLocalizer["file {0} not found!", currentName]); + var storage = file.IsTemporary || string.IsNullOrEmpty(FolderKey) + ? temporaryUploadStore + : fileStorage; + var folderKey = file.IsTemporary || string.IsNullOrEmpty(FolderKey) + ? DraftFolderKey + : FolderKey; + + await storage.RenameAsync(folderKey, currentName, newName); } - public FormFileInfo GetFile(string fileName) + public async Task GetFileAsync(string fileName) { - var files = GetFiles(); - var file = files.Find(x => fileName.Equals(x.Content.FileName) || fileName.Equals(x.OldName)); - - return file; + fileName = Path.GetFileName(fileName); + return (await GetFilesAsync()).Find(x => fileName.Equals(x.Content.FileName) || fileName.Equals(x.OldName)); } - public string GetFilePath(string fileName) + public async Task GetFileReferenceAsync(string fileName) { - return Path.Combine(FolderPath, fileName); + var file = await GetFileAsync(fileName); + if (file == null) + throw new JJMasterDataException(stringLocalizer["file {0} not found!", fileName]); + + return FileStorageReference.Create( + file.IsTemporary ? DraftFolderKey : FolderKey, + file.Content.FileName, + file.IsTemporary); } - public void CreateFile(FormFileContent fileContent, bool replaceIfExists) + public async Task CreateFileAsync(FormFileContent fileContent, bool replaceIfExists) { if (fileContent == null) throw new ArgumentNullException(nameof(fileContent)); - string fileName = fileContent.FileName; + fileContent.FileName = Path.GetFileName(fileContent.FileName); - if (OnBeforeCreateFile != null) + if (OnBeforeCreateFileAsync != null) { var args = new FormUploadFileEventArgs(fileContent); - OnBeforeCreateFile.Invoke(this, args); + await OnBeforeCreateFileAsync(this, args); string errorMessage = args.ErrorMessage; if (!string.IsNullOrEmpty(errorMessage)) { var exception = new JJMasterDataException(errorMessage); - logger.LogError(exception,"Error OnBeforeCreateFile"); + logger.LogError(exception, "Error OnBeforeCreateFile"); throw exception; } - } - if (replaceIfExists && CountFiles() > 0) - DeleteAll(); + if (replaceIfExists && await CountFilesAsync() > 0) + await DeleteAllAsync(); - if (fileName?.LastIndexOf("\\") > 0) - // ReSharper disable once ReplaceSubstringWithRangeIndexer - fileName = fileName.Substring(fileName.LastIndexOf("\\", StringComparison.Ordinal) + 1); + var storage = AutoSave && !string.IsNullOrEmpty(FolderKey) + ? fileStorage + : temporaryUploadStore; + var folderKey = AutoSave && !string.IsNullOrEmpty(FolderKey) + ? FolderKey + : DraftFolderKey; - if (AutoSave && !string.IsNullOrEmpty(FolderPath)) - { - SavePhysicalFile(fileContent); - } - else - { - var files = GetFiles(); - var currentFile = files.Find(x => x.Content.FileName.Equals(fileName)); - if (currentFile == null) - { - var file = new FormFileInfo - { - Content = fileContent - }; - files.Add(file); - } - else - { - currentFile.Content = fileContent; - currentFile.Deleted = false; - } - - MemoryFiles = files; - } + await storage.SaveAsync(folderKey, fileContent.FileName, fileContent.Stream, true); } - public void DeleteFile(string fileName) + public async Task DeleteFileAsync(string fileName) { - if (OnBeforeDeleteFile != null) + fileName = Path.GetFileName(fileName); + + if (OnBeforeDeleteFileAsync != null) { var args = new FormDeleteFileEventArgs(fileName); - OnBeforeDeleteFile.Invoke(this, args); - + await OnBeforeDeleteFileAsync(this, args); + if (!string.IsNullOrEmpty(args.ErrorMessage)) { var exception = new JJMasterDataException(args.ErrorMessage); @@ -188,125 +159,58 @@ public void DeleteFile(string fileName) } } - if (AutoSave && !string.IsNullOrEmpty(FolderPath)) - { - File.Delete(Path.Combine(FolderPath, fileName)); - } - else - { - var files = GetFiles(); - var file = files.Find(x => x.Content.FileName.Equals(fileName)); - if (file != null) - { - if (!file.IsInMemory) - file.Deleted = true; - else - files.Remove(file); - } + var file = await GetFileAsync(fileName); + if (file == null) + return; - MemoryFiles = files; - } + var storage = file.IsTemporary ? temporaryUploadStore : fileStorage; + var folderKey = file.IsTemporary ? DraftFolderKey : FolderKey; + await storage.DeleteAsync(folderKey, fileName); } - public void DeleteAll() + public async Task DeleteAllAsync() { - if (!string.IsNullOrEmpty(FolderPath)) - { - if (Directory.Exists(FolderPath)) - Directory.Delete(FolderPath, true); - } + await temporaryUploadStore.DeleteFolderAsync(DraftFolderKey); - MemoryFiles = null; + if (AutoSave && !string.IsNullOrEmpty(FolderKey)) + await fileStorage.DeleteFolderAsync(FolderKey); } - public int CountFiles() + public async Task CountFilesAsync() { - var listFiles = GetFiles(); - return listFiles.Count(x => !x.Deleted); + return (await GetFilesAsync()).Count(x => !x.Deleted); } - public void SaveMemoryFiles(string folderPath, bool deleteExistingFiles = false) + public async Task PromoteTemporaryFilesAsync(string folderKey, bool deleteExistingFiles = false) { - if (string.IsNullOrEmpty(folderPath)) - throw new ArgumentNullException(nameof(folderPath)); - - if (MemoryFiles == null) - return; - - if (!Directory.Exists(folderPath)) - Directory.CreateDirectory(folderPath); + if (string.IsNullOrEmpty(folderKey)) + throw new ArgumentNullException(nameof(folderKey)); - FolderPath = folderPath; - - if (deleteExistingFiles) - { - foreach (var filePath in Directory.GetFiles(FolderPath)) - File.Delete(filePath); - } - - foreach (var file in MemoryFiles) - { - string fileName = file.Content.FileName; - if (file.Deleted) - { - string filename = string.IsNullOrEmpty(file.OldName) ? fileName : file.OldName; - File.Delete(folderPath + filename); - } - else if (!string.IsNullOrEmpty(file.OldName) && !file.IsInMemory) - { - File.Move(folderPath + file.OldName, folderPath + fileName); - } - else if (file.Content.Bytes != null && file.IsInMemory) - { - SavePhysicalFile(file.Content); - } - } - - MemoryFiles = null; + FolderKey = folderKey; + await temporaryUploadStore.PromoteAsync(DraftId, fileStorage, folderKey, deleteExistingFiles); } - private List GetPhysicalFiles() + public Task OpenReadAsync(FileStorageReference reference) { - var formFileInfoList = new List(); - if (string.IsNullOrEmpty(FolderPath)) - return formFileInfoList; - - var directory = new DirectoryInfo(FolderPath); - if (directory.Exists) - { - var files = directory.GetFiles(); - foreach (var file in files) - { - formFileInfoList.Add(new FormFileInfo - { - Content = - { - FileName = file.Name, - Length = file.Length, - LastWriteTime = file.LastWriteTime, - } - }); - } - } - return formFileInfoList; + var storage = reference.IsTemporary ? temporaryUploadStore : fileStorage; + return storage.OpenReadAsync(reference.FolderKey, reference.FileName); } - private void SavePhysicalFile(FormFileContent file) + private static async Task> GetStorageFilesAsync(IFileStorage storage, string folderKey, bool temporary) { - if (file == null) - throw new ArgumentNullException(nameof(file)); - - if (string.IsNullOrEmpty(FolderPath)) - throw new ArgumentNullException(nameof(FolderPath)); + if (string.IsNullOrEmpty(folderKey)) + return []; - if (!Directory.Exists(FolderPath)) - Directory.CreateDirectory(FolderPath); - - var fileFullName = Path.Combine(FolderPath, file.FileName); - using var ms = new MemoryStream(file.Bytes); - using var fileStream = File.Create(fileFullName); - ms.Seek(0, SeekOrigin.Begin); - ms.CopyTo(fileStream); - fileStream.Close(); + return (await storage.ListAsync(folderKey)) + .Select(file => new FormFileInfo + { + IsTemporary = temporary, + Content = + { + FileName = file.FileName, + Length = file.Length, + LastWriteTime = file.LastWriteTime + } + }); } } diff --git a/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs b/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs index 63598e230..b04c3ac20 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileManagerFactory.cs @@ -1,15 +1,45 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; +using JJMasterData.Core.DataManager.IO.Storage; +using Microsoft.Extensions.Primitives; namespace JJMasterData.Core.DataManager.IO; -public class FormFileManagerFactory(IHttpContextAccessor httpContext, IStringLocalizer stringLocalizer, ILoggerFactory loggerFactory) +public class FormFileManagerFactory( + IHttpContextAccessor httpContext, + ITemporaryUploadStore temporaryUploadStore, + IFileStorage fileStorage, + IStringLocalizer stringLocalizer, + ILoggerFactory loggerFactory) { - public FormFileManager Create(string memoryFilesSessionName) + public FormFileManager Create(string uploadName) { - return new FormFileManager(memoryFilesSessionName, httpContext, stringLocalizer, + var request = httpContext.HttpContext?.Request; + var draftId = GetFormValue(request, $"{uploadName}-draft-id"); + if (string.IsNullOrEmpty(draftId)) + draftId = request == null ? null : GetFirstValue(request.Query["draftId"]); + + return CreateWithDraft(draftId); + } + + public FormFileManager CreateWithDraft(string draftId) + { + return new FormFileManager(draftId, temporaryUploadStore, fileStorage, stringLocalizer, loggerFactory.CreateLogger()); } -} \ No newline at end of file + + private static string GetFirstValue(StringValues values) + { + return values.Count == 0 ? null : values[0]; + } + + private static string GetFormValue(HttpRequest request, string key) + { + if (request?.HasFormContentType != true) + return null; + + return GetFirstValue(request.Form[key]); + } +} diff --git a/src/MasterData.Core/DataManager/IO/FormFilePathBuilder.cs b/src/MasterData.Core/DataManager/IO/FormFilePathBuilder.cs deleted file mode 100644 index b2e42409d..000000000 --- a/src/MasterData.Core/DataManager/IO/FormFilePathBuilder.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using JJMasterData.Commons.Util; -using JJMasterData.Core.DataDictionary.Models; - -namespace JJMasterData.Core.DataManager.IO; - -public class FormFilePathBuilder(FormElement formElement) -{ - public string GetFolderPath(FormElementField field, Dictionary formValues) - { - if (field.DataFile == null) - throw new ArgumentException(@$"{nameof(FormElementField.DataFile)} not defined.", field.Name); - - //Pks concat with underline - var pkValues = DataHelper.ParsePkValues(formElement, formValues, '_'); - - //Path configured in the dictionary - var path = field.DataFile.FolderPath; - - if (string.IsNullOrEmpty(path)) - throw new ArgumentException(@$"{nameof(FormElementField.DataFile.FolderPath)} cannot be empty.", field.Name); - - var separator = Path.DirectorySeparatorChar; - - if (path.Contains("{app.path}")) - { - var appPath = FileIO.GetApplicationPath().TrimEnd(separator); - - path = path.Replace("{app.path}", appPath); - } - - path = Path.Combine(path, pkValues); - - if (!path.EndsWith(separator.ToString())) - path += separator; - - return path; - } -} diff --git a/src/MasterData.Core/DataManager/IO/FormFileService.cs b/src/MasterData.Core/DataManager/IO/FormFileService.cs index 70b96b9ee..2d0cd45c8 100644 --- a/src/MasterData.Core/DataManager/IO/FormFileService.cs +++ b/src/MasterData.Core/DataManager/IO/FormFileService.cs @@ -1,27 +1,28 @@ using System.Collections.Generic; +using System.Threading.Tasks; using JJMasterData.Core.DataDictionary.Models; +using JJMasterData.Core.DataManager.IO.Storage; namespace JJMasterData.Core.DataManager.IO; -public class FormFileService(FormFileManagerFactory formFileManagerFactory) +public class FormFileService(FormFileManagerFactory formFileManagerFactory, IFileStorage fileStorage) { - public void SaveFormMemoryFiles(FormElement formElement, Dictionary primaryKeys) + public async Task SaveFormTemporaryFilesAsync(FormElement formElement, Dictionary values) { var uploadFields = formElement.Fields.FindAll(x => x.Component == FormComponent.File); if (uploadFields.Count == 0) return; - var pathBuilder = new FormFilePathBuilder(formElement); foreach (var field in uploadFields) { - var folderPath = pathBuilder.GetFolderPath(field, primaryKeys); + var folderKey = fileStorage.GetFolderKey(formElement, field, values); var manager = formFileManagerFactory.Create($"{field.Name}-upload-view-files"); - manager.SaveMemoryFiles(folderPath, deleteExistingFiles: !field.DataFile.MultipleFile); + await manager.PromoteTemporaryFilesAsync(folderKey, deleteExistingFiles: !field.DataFile.MultipleFile); } } - public void DeleteFiles(FormElement formElement, Dictionary primaryKeys) + public async Task DeleteFilesAsync(FormElement formElement, Dictionary primaryKeys) { var fileFields = formElement.Fields.FindAll(x => x.Component == FormComponent.File); if (fileFields.Count == 0) @@ -30,8 +31,8 @@ public void DeleteFiles(FormElement formElement, Dictionary prim foreach (var field in fileFields) { var manager = formFileManagerFactory.Create($"{field.Name}-upload-view-files"); - manager.FolderPath = new FormFilePathBuilder(formElement).GetFolderPath(field, primaryKeys); - manager.DeleteAll(); + manager.FolderKey = fileStorage.GetFolderKey(formElement, field, primaryKeys); + await manager.DeleteAllAsync(); } } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/DiskFileStorage.cs b/src/MasterData.Core/DataManager/IO/Storage/DiskFileStorage.cs new file mode 100644 index 000000000..605160fe2 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/DiskFileStorage.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using JJMasterData.Commons.Util; +using JJMasterData.Core.DataDictionary.Models; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public class DiskFileStorage : IFileStorage +{ + public virtual string GetFolderKey(FormElement formElement, FormElementField field, Dictionary values) + { + if (field.DataFile == null) + throw new ArgumentException(@$"{nameof(FormElementField.DataFile)} not defined.", field.Name); + + if (string.IsNullOrEmpty(field.DataFile.FolderPath)) + throw new ArgumentException(@$"{nameof(FormElementField.DataFile.FolderPath)} cannot be empty.", field.Name); + + var pkValues = DataHelper.ParsePkValues(formElement, values, '_'); + return CombineKey(ResolveFolderPath(field.DataFile.FolderPath), pkValues); + } + + public async Task SaveAsync(string folderKey, string fileName, Stream content, bool replaceIfExists = true, CancellationToken cancellationToken = default) + { + var folderPath = ResolveFolderPath(folderKey); + Directory.CreateDirectory(folderPath); + + var filePath = GetFilePath(folderPath, fileName); + var mode = replaceIfExists ? FileMode.Create : FileMode.CreateNew; + + if (content.CanSeek) + content.Seek(0, SeekOrigin.Begin); + + await using var fileStream = new FileStream(filePath, mode, FileAccess.Write, FileShare.None, 81920, true); + await content.CopyToAsync(fileStream, cancellationToken); + } + + public Task OpenReadAsync(string folderKey, string fileName, CancellationToken cancellationToken = default) + { + var filePath = GetFilePath(ResolveFolderPath(folderKey), fileName); + Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 81920, true); + return Task.FromResult(stream); + } + + public Task DeleteAsync(string folderKey, string fileName, CancellationToken cancellationToken = default) + { + var filePath = GetFilePath(ResolveFolderPath(folderKey), fileName); + if (File.Exists(filePath)) + File.Delete(filePath); + else + throw new KeyNotFoundException("File not found"); + + return Task.CompletedTask; + } + + public Task DeleteFolderAsync(string folderKey, CancellationToken cancellationToken = default) + { + var folderPath = ResolveFolderPath(folderKey); + if (Directory.Exists(folderPath)) + Directory.Delete(folderPath, true); + + return Task.CompletedTask; + } + + public Task RenameAsync(string folderKey, string currentName, string newName, CancellationToken cancellationToken = default) + { + var folderPath = ResolveFolderPath(folderKey); + var currentPath = GetFilePath(folderPath, currentName); + var newPath = GetFilePath(folderPath, newName); + + if (!File.Exists(currentPath)) + throw new KeyNotFoundException("File not found"); + + File.Move(currentPath, newPath, true); + return Task.CompletedTask; + } + + public Task> ListAsync(string folderKey, CancellationToken cancellationToken = default) + { + var folderPath = ResolveFolderPath(folderKey); + if (!Directory.Exists(folderPath)) + return Task.FromResult(new List()); + + var files = new DirectoryInfo(folderPath) + .EnumerateFiles() + .Select(file => new FileStorageItem + { + FileName = file.Name, + Length = file.Length, + LastWriteTime = file.LastWriteTime + }) + .ToList(); + + return Task.FromResult(files); + } + + protected virtual string ResolveFolderPath(string folderKey) + { + if (string.IsNullOrEmpty(folderKey)) + throw new ArgumentNullException(nameof(folderKey)); + + var separator = Path.DirectorySeparatorChar; + var folderPath = folderKey.Replace("{app.path}", FileIO.GetApplicationPath().TrimEnd(separator)); + + return Path.GetFullPath(folderPath); + } + + protected static string CombineKey(string rootKey, string childKey) + { + return string.IsNullOrEmpty(childKey) ? rootKey : $"{rootKey.TrimEnd('/', '\\')}/{childKey}"; + } + + private static string GetFilePath(string folderPath, string fileName) + { + fileName = Path.GetFileName(fileName); + return Path.Combine(folderPath, fileName); + } +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/FileStorageItem.cs b/src/MasterData.Core/DataManager/IO/Storage/FileStorageItem.cs new file mode 100644 index 000000000..fe2aca2d3 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/FileStorageItem.cs @@ -0,0 +1,10 @@ +using System; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public sealed class FileStorageItem +{ + public string FileName { get; init; } + public long Length { get; init; } + public DateTime LastWriteTime { get; init; } +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/FileStorageReference.cs b/src/MasterData.Core/DataManager/IO/Storage/FileStorageReference.cs new file mode 100644 index 000000000..169d0a612 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/FileStorageReference.cs @@ -0,0 +1,40 @@ +using System.IO; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public sealed class FileStorageReference +{ + public string Key { get; init; } = string.Empty; + public bool IsTemporary { get; init; } + + public string FolderKey + { + get + { + var index = Key?.LastIndexOf('/') ?? -1; + return index < 0 ? string.Empty : Key[..index]; + } + } + + public string FileName => GetSafeFileName(Key); + + public static FileStorageReference Create(string folderKey, string fileName, bool isTemporary) + { + var normalizedFolderKey = folderKey?.TrimEnd('/', '\\').Replace('\\', '/'); + var safeFileName = GetSafeFileName(fileName); + var key = string.IsNullOrEmpty(normalizedFolderKey) + ? safeFileName + : $"{normalizedFolderKey}/{safeFileName}"; + + return new FileStorageReference + { + Key = key, + IsTemporary = isTemporary + }; + } + + private static string GetSafeFileName(string value) + { + return Path.GetFileName(value?.Replace('\\', '/') ?? string.Empty); + } +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/IFileStorage.cs b/src/MasterData.Core/DataManager/IO/Storage/IFileStorage.cs new file mode 100644 index 000000000..04da946b9 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/IFileStorage.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using JJMasterData.Core.DataDictionary.Models; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public interface IFileStorage +{ + string GetFolderKey(FormElement formElement, FormElementField field, Dictionary values); + Task SaveAsync(string folderKey, string fileName, Stream content, bool replaceIfExists = true, CancellationToken cancellationToken = default); + Task OpenReadAsync(string folderKey, string fileName, CancellationToken cancellationToken = default); + Task DeleteAsync(string folderKey, string fileName, CancellationToken cancellationToken = default); + Task DeleteFolderAsync(string folderKey, CancellationToken cancellationToken = default); + Task RenameAsync(string folderKey, string currentName, string newName, CancellationToken cancellationToken = default); + Task> ListAsync(string folderKey, CancellationToken cancellationToken = default); +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/ITemporaryUploadStore.cs b/src/MasterData.Core/DataManager/IO/Storage/ITemporaryUploadStore.cs new file mode 100644 index 000000000..809e279a2 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/ITemporaryUploadStore.cs @@ -0,0 +1,15 @@ +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public interface ITemporaryUploadStore : IFileStorage +{ + string CreateDraftId(); + string GetDraftFolderKey(string draftId); + Task SaveUploadAsync(string draftId, string fileName, Stream content, bool replaceIfExists = true, CancellationToken cancellationToken = default); + Task PromoteAsync(string draftId, IFileStorage destinationStorage, string destinationFolderKey, bool deleteExistingFiles = false, CancellationToken cancellationToken = default); + Task CleanupExpiredAsync(TimeSpan maxAge, CancellationToken cancellationToken = default); +} diff --git a/src/MasterData.Core/DataManager/IO/Storage/TemporaryDiskUploadStore.cs b/src/MasterData.Core/DataManager/IO/Storage/TemporaryDiskUploadStore.cs new file mode 100644 index 000000000..d564eeab2 --- /dev/null +++ b/src/MasterData.Core/DataManager/IO/Storage/TemporaryDiskUploadStore.cs @@ -0,0 +1,89 @@ +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace JJMasterData.Core.DataManager.IO.Storage; + +public sealed class TemporaryDiskUploadStore : DiskFileStorage, ITemporaryUploadStore +{ + private readonly string _rootPath = Path.Combine(Path.GetTempPath(), "jjmasterdata", "uploads"); + + public string CreateDraftId() + { + CleanupExpiredCore(TimeSpan.FromHours(12)); + return Guid.NewGuid().ToString("N"); + } + + public string GetDraftFolderKey(string draftId) + { + draftId = NormalizeDraftId(draftId); + if (string.IsNullOrWhiteSpace(draftId)) + throw new ArgumentNullException(nameof(draftId)); + + return draftId; + } + + public Task SaveUploadAsync(string draftId, string fileName, Stream content, bool replaceIfExists = true, CancellationToken cancellationToken = default) + { + return SaveAsync(GetDraftFolderKey(draftId), fileName, content, replaceIfExists, cancellationToken); + } + + public async Task PromoteAsync(string draftId, IFileStorage destinationStorage, string destinationFolderKey, bool deleteExistingFiles = false, CancellationToken cancellationToken = default) + { + var draftFolderKey = GetDraftFolderKey(draftId); + var files = await ListAsync(draftFolderKey, cancellationToken); + if (files.Count == 0) + return; + + if (deleteExistingFiles) + await destinationStorage.DeleteFolderAsync(destinationFolderKey, cancellationToken); + + foreach (var file in files) + { + await using var stream = await OpenReadAsync(draftFolderKey, file.FileName, cancellationToken); + await destinationStorage.SaveAsync(destinationFolderKey, file.FileName, stream, true, cancellationToken); + } + + await DeleteFolderAsync(draftFolderKey, cancellationToken); + } + + public Task CleanupExpiredAsync(TimeSpan maxAge, CancellationToken cancellationToken = default) + { + CleanupExpiredCore(maxAge); + return Task.CompletedTask; + } + + private void CleanupExpiredCore(TimeSpan maxAge) + { + if (!Directory.Exists(_rootPath)) + return; + + var threshold = DateTime.Now.Subtract(maxAge); + foreach (var directory in new DirectoryInfo(_rootPath).EnumerateDirectories()) + { + if (directory.LastWriteTime < threshold) + directory.Delete(true); + } + } + + protected override string ResolveFolderPath(string folderKey) + { + var draftId = GetDraftFolderKey(folderKey); + return Path.Combine(_rootPath, draftId); + } + + private static string NormalizeDraftId(string draftId) + { + if (string.IsNullOrWhiteSpace(draftId)) + return draftId; + + draftId = draftId.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)[0]; + draftId = Path.GetFileName(draftId); + + if (!Guid.TryParseExact(draftId, "N", out _)) + throw new ArgumentException("Invalid temporary upload draft id.", nameof(draftId)); + + return draftId; + } +} diff --git a/src/MasterData.Core/DataManager/Models/FormFileInfo.cs b/src/MasterData.Core/DataManager/Models/FormFileInfo.cs index 361bb137b..4f8de82b8 100644 --- a/src/MasterData.Core/DataManager/Models/FormFileInfo.cs +++ b/src/MasterData.Core/DataManager/Models/FormFileInfo.cs @@ -23,5 +23,5 @@ public FormFileInfo() public string FileName => Content.FileName ?? OldName; - public bool IsInMemory => Content.Bytes != null; + public bool IsTemporary { get; set; } } diff --git a/src/MasterData.Core/DataManager/Services/ElementFileService.cs b/src/MasterData.Core/DataManager/Services/ElementFileService.cs index ad9d7fd6a..40200a60b 100644 --- a/src/MasterData.Core/DataManager/Services/ElementFileService.cs +++ b/src/MasterData.Core/DataManager/Services/ElementFileService.cs @@ -10,37 +10,32 @@ using JJMasterData.Commons.Data.Entity.Repository.Abstractions; using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataDictionary.Repository.Abstractions; -using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; using Microsoft.AspNetCore.Http; namespace JJMasterData.Core.DataManager.Services; -public class ElementFileService(IDataDictionaryRepository dictionaryRepository, IEntityRepository entityRepository) +public class ElementFileService( + IDataDictionaryRepository dictionaryRepository, + IEntityRepository entityRepository, + IFileStorage fileStorage) { - public async Task GetElementFileAsync(string elementName, string pkValues, string fieldName, string? fileName) + public async Task GetElementFileAsync(string elementName, string pkValues, string fieldName, string? fileName) { var formElement = await dictionaryRepository.GetFormElementAsync(elementName); fileName = Path.GetFileName(fileName); var field = formElement.Fields.First(f => f.Name == fieldName); + var folderKey = fileStorage.GetFolderKey(formElement, field, DataHelper.GetPkValues(formElement, pkValues, ',')); - var builder = new FormFilePathBuilder(formElement); - - var path = builder.GetFolderPath(field, DataHelper.GetPkValues(formElement, pkValues, ',')); - - string? file; if (string.IsNullOrEmpty(fileName)) - file = Directory.GetFiles(path).FirstOrDefault(); - else - file = Directory.GetFiles(path).FirstOrDefault(f => f.EndsWith(fileName)); + fileName = (await fileStorage.ListAsync(folderKey)).FirstOrDefault()?.FileName; - if (file == null) + if (string.IsNullOrEmpty(fileName)) return null; - var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read); - - return fileStream; + return await fileStorage.OpenReadAsync(folderKey, fileName); } @@ -96,38 +91,19 @@ private async Task SetEntityFileAsync(FormElement formElement, FormElementField await entityRepository.SetValuesAsync(formElement, values); } - private static async Task SetPhysicalFileAsync( + private async Task SetPhysicalFileAsync( FormElement formElement, FormElementField field, string pkValues, IFormFile file) { - var builder = new FormFilePathBuilder(formElement); - var hashValues = DataHelper.GetPkValues(formElement, pkValues, ','); - - var path = builder.GetFolderPath(field, hashValues); - - if (!Directory.Exists(path)) - Directory.CreateDirectory(path); + var folderKey = fileStorage.GetFolderKey(formElement, field, hashValues); var fileName = Path.GetFileName(file.FileName); - if (field.DataFile!.MultipleFile) - { - foreach (var fileInfo in new DirectoryInfo(path).EnumerateFiles()) - { - if (fileInfo.Name == fileName) - { - fileInfo.Delete(); - } - } - } - - await using var fileStream = - new FileStream(Path.Combine(path, fileName), FileMode.OpenOrCreate, FileAccess.ReadWrite); - - await file.CopyToAsync(fileStream); + await using var uploadStream = file.OpenReadStream(); + await fileStorage.SaveAsync(folderKey, fileName, uploadStream, true); } public async Task DeleteFileAsync(string elementName, string fieldName, string pkValues, string fileName) @@ -141,24 +117,16 @@ public async Task DeleteFileAsync(string elementName, string fieldName, string p fileName = Path.GetFileName(fileName); - DeletePhysicalFile(formElement, field, pkValues, fileName); + await DeletePhysicalFileAsync(formElement, field, pkValues, fileName); await DeleteEntityFileAsync(formElement, field, pkValues, fileName); } - private static void DeletePhysicalFile(FormElement formElement, FormElementField field, string pkValues, string fileName) + private async Task DeletePhysicalFileAsync(FormElement formElement, FormElementField field, string pkValues, string fileName) { - var builder = new FormFilePathBuilder(formElement); - - var path = builder.GetFolderPath(field, DataHelper.GetPkValues(formElement, pkValues, ',')); - fileName = Path.GetFileName(fileName); - - var filePath = Path.Combine(path, fileName); - - if (File.Exists(filePath)) - File.Delete(filePath); - else - throw new KeyNotFoundException("File not found"); + var folderKey = fileStorage.GetFolderKey(formElement, field, DataHelper.GetPkValues(formElement, pkValues, ',')); + + await fileStorage.DeleteAsync(folderKey, fileName); } private async Task DeleteEntityFileAsync(Element element, FormElementField field, string pkValues, string fileName) @@ -201,23 +169,14 @@ public async Task RenameFileAsync(string elementName, string fieldName, string p oldName = Path.GetFileName(oldName); newName = Path.GetFileName(newName); - RenamePhysicalFile(formElement, field, pkValues, oldName, newName); + await RenamePhysicalFileAsync(formElement, field, pkValues, oldName, newName); await RenameEntityFileAsync(formElement,field, pkValues, oldName, newName); } - private static void RenamePhysicalFile(FormElement formElement, FormElementField field, string pkValues, string oldName, string newName) + private async Task RenamePhysicalFileAsync(FormElement formElement, FormElementField field, string pkValues, string oldName, string newName) { - var builder = new FormFilePathBuilder(formElement); - - var path = builder.GetFolderPath(field, DataHelper.GetPkValues(formElement, pkValues, ',')); - - var oldFilePath = Path.Combine(path, oldName); - var newFilePath = Path.Combine(path, newName); - - if (File.Exists(oldFilePath)) - File.Move(oldFilePath, newFilePath); - else - throw new KeyNotFoundException("File not found"); + var folderKey = fileStorage.GetFolderKey(formElement, field, DataHelper.GetPkValues(formElement, pkValues, ',')); + await fileStorage.RenameAsync(folderKey, oldName, newName); } private async Task RenameEntityFileAsync(FormElement formElement, FormElementField field, string pkValues, string oldName, @@ -246,4 +205,4 @@ private async Task RenameEntityFileAsync(FormElement formElement, FormElementFie await entityRepository.SetValuesAsync(formElement, values); } } -#endif \ No newline at end of file +#endif diff --git a/src/MasterData.Core/DataManager/Services/FieldValidationService.cs b/src/MasterData.Core/DataManager/Services/FieldValidationService.cs index 36886aa36..3b995befd 100644 --- a/src/MasterData.Core/DataManager/Services/FieldValidationService.cs +++ b/src/MasterData.Core/DataManager/Services/FieldValidationService.cs @@ -317,4 +317,4 @@ private static string GetFieldLinkHtml(string fieldName, string? label) return link.ToString(); } -} +} \ No newline at end of file diff --git a/src/MasterData.Core/DataManager/Services/FormService.cs b/src/MasterData.Core/DataManager/Services/FormService.cs index 31bb2100a..d9ab8e2ec 100644 --- a/src/MasterData.Core/DataManager/Services/FormService.cs +++ b/src/MasterData.Core/DataManager/Services/FormService.cs @@ -103,7 +103,7 @@ public async Task UpdateAsync(FormElement formElement, Dictionary InsertAsync(FormElement formElement, Dictionary> InsertOrReplaceAsync(FormElement await auditLogService.LogAsync(formElement, dataContext, values, letter.Result); if (dataContext.Source == DataContextSource.Form) - formFileService.SaveFormMemoryFiles(formElement, values); + await formFileService.SaveFormTemporaryFilesAsync(formElement, values); switch (letter.Result) { @@ -288,7 +288,7 @@ public async Task DeleteAsync(FormElement formElement, Dictionary? OnFileUploaded; public event AsyncEventHandler? OnFileUploadedAsync; - public async Task UploadFileAsync(FormFileContent formFile, string? allowedTypes = null) + public async Task UploadFileAsync(IFormFile file, string? allowedTypes = null) { UploadAreaResultDto dto = new(); + await using var stream = file.OpenReadStream(); + var formFile = new FormFileContent + { + FileName = Path.GetFileName(file.FileName), + Stream = stream, + Length = file.Length, + LastWriteTime = DateTime.Now + }; + try { var message = string.Empty; ValidateAllowedExtensions(formFile.FileName, allowedTypes); - + var args = new FormUploadFileEventArgs(formFile); OnFileUploaded?.Invoke(this, args); if (OnFileUploadedAsync != null) - { await OnFileUploadedAsync.Invoke(this, args); - } if (formFile.FileName.Contains(",")) { @@ -46,9 +53,7 @@ public async Task UploadFileAsync(FormFileContent formFile, var errorMessage = args.ErrorMessage; if (args.SuccessMessage != null) - { message = args.SuccessMessage; - } if (!string.IsNullOrEmpty(errorMessage)) { @@ -66,36 +71,9 @@ public async Task UploadFileAsync(FormFileContent formFile, return dto; } - /// - /// Recovers the file after the POST - /// - private FormFileContent? GetFile(string fileName) + public bool TryGetFile(string fileName, out IFormFile? formFile) { - var fileData = currentContext.HttpContext!.Request.Form.Files[fileName]; - - if (fileData is null) - return null; - - using var stream = new MemoryStream(); - string filename = fileData.FileName; - - fileData.CopyTo(stream); - - var content = new FormFileContent - { - FileName = filename, - Bytes = stream.ToArray(), - Length = stream.Length, - LastWriteTime = DateTime.Now - }; - - return content; - } - - public bool TryGetFile(string fileName, out FormFileContent? formFile) - { - formFile = GetFile(fileName); - + formFile = currentContext.HttpContext!.Request.Form.Files[fileName]; return formFile != null; } @@ -142,6 +120,7 @@ private void ValidateAllowedExtensions(string filename, string? allowedTypes) ".ps1", ".scr", ".sct", + ".sh", ".shb", ".sys", ".vb", diff --git a/src/MasterData.Core/MasterData.Core.csproj b/src/MasterData.Core/MasterData.Core.csproj index 76e0ba4ea..0a1dba044 100644 --- a/src/MasterData.Core/MasterData.Core.csproj +++ b/src/MasterData.Core/MasterData.Core.csproj @@ -71,7 +71,10 @@ ComponentResult.cs - + + ComponentResult.cs + + ComponentResult.cs diff --git a/src/MasterData.Core/UI/Components/Controls/TextFile/JJTextFile.cs b/src/MasterData.Core/UI/Components/Controls/TextFile/JJTextFile.cs index e8d47972a..dd2ee5970 100644 --- a/src/MasterData.Core/UI/Components/Controls/TextFile/JJTextFile.cs +++ b/src/MasterData.Core/UI/Components/Controls/TextFile/JJTextFile.cs @@ -8,7 +8,7 @@ using JJConsulting.Html.Extensions; using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Core.DataDictionary.Models; -using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; using Microsoft.AspNetCore.Http; using JJMasterData.Core.UI.Routing; @@ -18,6 +18,7 @@ namespace JJMasterData.Core.UI.Components; public sealed class JJTextFile(IHttpContextAccessor request, IComponentFactory componentFactory, + IFileStorage fileStorage, IStringLocalizer stringLocalizer, IEncryptionService encryptionService) : ControlBase(request) @@ -49,8 +50,6 @@ public override string Tooltip public FormElement FormElement { get; set; } - private FormFilePathBuilder PathBuilder => field ??= new FormFilePathBuilder(FormElement); - private RouteContext RouteContext { get @@ -81,7 +80,7 @@ public JJUploadView UploadView field.RenameAction.SetVisible(true); if (HasPk()) - field.FolderPath = GetFolderPath(); + field.FolderKey = GetFolderKey(); var dataFile = FormElementField.DataFile!; field.UploadArea.Multiple = dataFile.MultipleFile; @@ -94,9 +93,6 @@ public JJUploadView UploadView field.UploadArea.RouteContext.ComponentContext = ComponentContext.TextFileFileUpload; field.UploadArea.QueryStringParams["fieldName"] = FieldName; field.ViewGallery = dataFile.ViewGallery; - - if (dataFile.ShowAsUploadView) - field.GridView.EmptyDataText = null; if (!Enabled || PageState is PageState.View) field.Disable(); @@ -130,12 +126,12 @@ protected internal override async ValueTask GetHtmlBuilderAsync() if (FormElementField.DataFile!.ShowAsUploadView) { var uploadViewHtml = ((RenderedComponentResult)await GetUploadViewResultAsync()).HtmlBuilder; - uploadViewHtml.Append(GetHiddenInputHtml()); + uploadViewHtml.Append(await GetHiddenInputsHtmlAsync()); return uploadViewHtml; } if (!Enabled) - UploadView.ClearMemoryFiles(); + await UploadView.ClearTemporaryFilesAsync(); var textGroup = componentFactory.Controls.TextGroup.Create(); textGroup.CssClass = CssClass; @@ -143,7 +139,7 @@ protected internal override async ValueTask GetHtmlBuilderAsync() textGroup.ReadOnly = true; textGroup.Tooltip = Tooltip; textGroup.Attributes = Attributes; - textGroup.Text = GetPresentationText(); + textGroup.Text = await GetPresentationTextAsync(); var button = new JJLinkButton { @@ -157,7 +153,7 @@ protected internal override async ValueTask GetHtmlBuilderAsync() var html = new HtmlBuilder(); html.Append(await textGroup.GetHtmlBuilderAsync()); - html.Append(GetHiddenInputHtml()); + html.Append(await GetHiddenInputsHtmlAsync()); return html; } @@ -171,31 +167,41 @@ private async Task GetUploadViewResultAsync() var html = new HtmlBuilder(); html.Append(uploadViewResult.HtmlBuilder); - html.AppendScript(Scripts.GetRefreshInputsScript()); + html.AppendScript(await Scripts.GetRefreshInputsScriptAsync()); return new RenderedComponentResult(html); } - private HtmlBuilder GetHiddenInputHtml() + private async Task GetHiddenInputsHtmlAsync() { - var input = new HtmlBuilder(HtmlTag.Input); - input.WithAttribute("type", "hidden") + var fileName = await GetFileNameAsync(); + var draftId = UploadView.DraftId; + var html = new HtmlBuilder(); + html.Append(HtmlTag.Input, input => + { + input.WithAttribute("type", "hidden") .WithNameAndId(Name) - .WithAttribute("value", GetFileName()); - return input; + .WithAttribute("value", fileName); + }); + html.Append(HtmlTag.Input, input => + { + input.WithAttribute("type", "hidden") + .WithNameAndId(GetDraftInputName()) + .WithAttribute("value", draftId); + }); + return html; } - public void SaveMemoryFiles() + public Task PromoteTemporaryFilesAsync() { - string folderPath = GetFolderPath(); var uploadView = UploadView; - uploadView.SaveMemoryFiles(folderPath); + return uploadView.PromoteTemporaryFilesAsync(GetFolderKey()); } - public void DeleteAll() + public Task DeleteAllAsync() { var uploadView = UploadView; - uploadView.FolderPath = GetFolderPath(); - uploadView.DeleteAll(); + uploadView.FolderKey = GetFolderKey(); + return uploadView.DeleteAllAsync(); } private bool HasPk() { @@ -206,15 +212,17 @@ private bool HasPk() return pkFields.All(pkField => FormStateValues.ContainsKey(pkField.Name) && !string.IsNullOrEmpty(FormStateValues[pkField.Name]?.ToString())); } - public string GetFolderPath() + public string GetFolderKey() { - return PathBuilder.GetFolderPath(FormElementField, FormStateValues); + return fileStorage.GetFolderKey(FormElement, FormElementField, FormStateValues); } - internal string GetFileName() + internal string GetDraftInputName() => $"{FormElementField.Name}-upload-view-files-draft-id"; + + internal async Task GetFileNameAsync() { string fileNames = string.Empty; - var listFile = UploadView.GetFiles().FindAll(x => !x.Deleted); + var listFile = (await UploadView.GetFilesAsync()).FindAll(x => !x.Deleted); foreach (var file in listFile) { if (fileNames != string.Empty) @@ -226,9 +234,9 @@ internal string GetFileName() return fileNames; } - internal string GetPresentationText() + internal async Task GetPresentationTextAsync() { - var files = UploadView.GetFiles().FindAll(x => !x.Deleted); + var files = (await UploadView.GetFilesAsync()).FindAll(x => !x.Deleted); return files.Count switch { @@ -238,7 +246,7 @@ internal string GetPresentationText() }; } - internal HtmlBuilder GetButtonGroupHtml() + internal async Task GetButtonGroupHtmlAsync() { if (string.IsNullOrEmpty(Text)) return new HtmlBuilder(string.Empty); @@ -270,21 +278,23 @@ internal HtmlBuilder GetButtonGroupHtml() private JJLinkButton GetLinkButton(string filename) { - var btn = new JJLinkButton(); - btn.IconClass = "fa fa-cloud-download"; - btn.Text = filename; - btn.Attributes.Add("onclick", "event.stopPropagation()"); - btn.UrlAction = GetDownloadLink(filename); - btn.IsGroup = true; - - return btn; + return new JJLinkButton + { + IconClass = "fa fa-cloud-download", + Text = filename, + UrlAction = GetDownloadLink(filename), + IsGroup = true, + Attributes = + { + {"onclick", "event.stopPropagation()"} + } + }; } private string GetDownloadLink(string fileName) { - var filePath = GetFolderPath() + fileName; var fileDownloader = componentFactory.Downloader.Create(); - fileDownloader.FilePath = filePath; + fileDownloader.FileReference = FileStorageReference.Create(GetFolderKey(), fileName, false); return fileDownloader.GetDownloadUrl(); } } diff --git a/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileFactory.cs b/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileFactory.cs index 28b774ede..a5abb8250 100644 --- a/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileFactory.cs +++ b/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileFactory.cs @@ -1,6 +1,7 @@ using System; using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Core.DataDictionary.Models; +using JJMasterData.Core.DataManager.IO.Storage; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; @@ -10,12 +11,13 @@ internal sealed class TextFileFactory( IHttpContextAccessor request, IComponentFactory componentFactory, IEncryptionService encryptionService, + IFileStorage fileStorage, IStringLocalizer stringLocalizer) : IControlFactory { public JJTextFile Create() { - return new JJTextFile(request,componentFactory, stringLocalizer, encryptionService); + return new JJTextFile(request,componentFactory, fileStorage, stringLocalizer, encryptionService); } public JJTextFile Create(FormElement formElement, FormElementField field, ControlContext context) @@ -44,4 +46,4 @@ public JJTextFile Create(FormElement formElement, FormElementField field, Contro return textFile; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileScripts.cs b/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileScripts.cs index 58c14bd50..84b40a9b2 100644 --- a/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileScripts.cs +++ b/src/MasterData.Core/UI/Components/Controls/TextFile/TextFileScripts.cs @@ -1,7 +1,7 @@ #nullable enable using System.Web; -using JJMasterData.Core.Extensions; +using System.Threading.Tasks; using JJMasterData.Core.UI.Routing; namespace JJMasterData.Core.UI.Components; @@ -16,19 +16,19 @@ public string GetShowScript() var routeContext = RouteContext.FromFormElement(textFile.FormElement, ComponentContext.TextFileUploadView); - return $"TextFileHelper.showUploadView('{textFile.FieldName}','{title}','{textFile.EncryptionService.EncryptObject(routeContext)}');"; + return $"TextFileHelper.showUploadView('{textFile.FieldName}','{title}','{textFile.EncryptionService.EncryptObject(routeContext)}','{textFile.GetDraftInputName()}');"; } public string GetRefreshScript() { var routeContext = RouteContext.FromFormElement(textFile.FormElement, ComponentContext.TextFileUploadView); - return $"TextFileHelper.refresh('{textFile.FieldName}','{textFile.EncryptionService.EncryptObject(routeContext)}')"; + return $"TextFileHelper.refresh('{textFile.FieldName}','{textFile.EncryptionService.EncryptObject(routeContext)}','{textFile.GetDraftInputName()}')"; } - public string GetRefreshInputsScript() + public async Task GetRefreshInputsScriptAsync() { - return $"TextFileHelper.refreshInputs('{textFile.Name}','{textFile.GetPresentationText()}','{textFile.GetFileName()}')"; + return $"TextFileHelper.refreshInputs('{textFile.Name}','{await textFile.GetPresentationTextAsync()}','{await textFile.GetFileNameAsync()}')"; } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/UI/Components/DataPanel/JJDataPanel.cs b/src/MasterData.Core/UI/Components/DataPanel/JJDataPanel.cs index f6b3bd164..18858ff7e 100644 --- a/src/MasterData.Core/UI/Components/DataPanel/JJDataPanel.cs +++ b/src/MasterData.Core/UI/Components/DataPanel/JJDataPanel.cs @@ -221,7 +221,7 @@ protected override async Task BuildResultAsync() case ComponentContext.LookupDescription: return await GetFieldResultAsync(); case ComponentContext.DownloadFile: - return ComponentFactory.Downloader.Create().GetDownloadResult(); + return await ComponentFactory.Downloader.Create().GetDownloadResultAsync(); case ComponentContext.DataPanelReload: { var html = await GetHtmlBuilderAsync(); diff --git a/src/MasterData.Core/UI/Components/Exportation/DataExportationFactory.cs b/src/MasterData.Core/UI/Components/Exportation/DataExportationFactory.cs index db40d87aa..17d0b7340 100644 --- a/src/MasterData.Core/UI/Components/Exportation/DataExportationFactory.cs +++ b/src/MasterData.Core/UI/Components/Exportation/DataExportationFactory.cs @@ -7,6 +7,7 @@ using JJMasterData.Core.DataManager; using JJMasterData.Core.DataManager.Exportation; using JJMasterData.Core.DataManager.Expressions; +using JJMasterData.Core.DataManager.IO.Storage; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; @@ -17,6 +18,7 @@ namespace JJMasterData.Core.UI.Components; internal class DataExportationFactory( IDataDictionaryRepository dataDictionaryRepository, IMasterDataUser masterDataUser, + IUrlHelper urlHelper, ExpressionsService expressionsService, IOptionsSnapshot options, IBackgroundTaskManager backgroundTaskManager, @@ -25,6 +27,7 @@ internal class DataExportationFactory( ILoggerFactory loggerFactory, IComponentFactory componentFactory, IEncryptionService encryptionService, + IFileStorage fileStorage, DataExportationWriterFactory dataExportationWriterFactory ) : IFormElementComponentFactory { @@ -39,6 +42,7 @@ public JJDataExportation Create(FormElement formElement) return new JJDataExportation( formElement, masterDataUser, + urlHelper, expressionsService, options, backgroundTaskManager, @@ -47,6 +51,7 @@ public JJDataExportation Create(FormElement formElement) loggerFactory, httpContext, encryptionService, + fileStorage, dataExportationWriterFactory); } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/UI/Components/Exportation/DataExportationSettings.cs b/src/MasterData.Core/UI/Components/Exportation/DataExportationSettings.cs index 2b2cffb36..b315e60af 100644 --- a/src/MasterData.Core/UI/Components/Exportation/DataExportationSettings.cs +++ b/src/MasterData.Core/UI/Components/Exportation/DataExportationSettings.cs @@ -1,17 +1,18 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using JJConsulting.FontAwesome; using JJConsulting.Html; using JJConsulting.Html.Bootstrap.Components; using JJConsulting.Html.Bootstrap.Extensions; using JJConsulting.Html.Bootstrap.Models; using JJConsulting.Html.Extensions; -using JJMasterData.Commons.Util; using JJMasterData.Core.DataDictionary; using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataManager.Exportation; using JJMasterData.Core.DataManager.Exportation.Configuration; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.Html; using Microsoft.Extensions.Localization; @@ -21,14 +22,14 @@ internal sealed class DataExportationSettings(JJDataExportation dataExportation) { private readonly IStringLocalizer _stringLocalizer = dataExportation.StringLocalizer; - internal HtmlBuilder GetHtmlBuilder() + internal async Task GetHtmlBuilderAsync() { var html = new HtmlBuilder(HtmlTag.Div); - var folderPath = DataExportationHelper.GetFolderPath(dataExportation); + var folderKey = DataExportationHelper.GetFolderPath(dataExportation); html.WithCssClass("container-fluid"); - html.Append(GetFormHtmlElement(folderPath)); + html.Append(await GetFormHtmlElementAsync(folderKey)); html.AppendHr(); html.AppendDiv(div => { @@ -64,7 +65,7 @@ internal HtmlBuilder GetHtmlBuilder() return html; } - private HtmlBuilder GetFormHtmlElement(string exportationFolderPath) + private async Task GetFormHtmlElementAsync(string exportationFolderKey) { var div = new HtmlBuilder(HtmlTag.Div); div.WithCssClass("row"); @@ -79,7 +80,7 @@ private HtmlBuilder GetFormHtmlElement(string exportationFolderPath) div.Append(GetFirstLineField()); - div.Append(GetFilesCollapsePanelHtmlBuilder(exportationFolderPath)); + div.Append(await GetFilesCollapsePanelHtmlBuilderAsync(exportationFolderKey)); div.Append(HtmlTag.Div, div => { @@ -281,9 +282,9 @@ private JJAlert GetTooManyRecordsAlert(string name) return alert; } - private HtmlBuilder GetFilesCollapsePanelHtmlBuilder(string exportationFolderPath) + private async Task GetFilesCollapsePanelHtmlBuilderAsync(string exportationFolderKey) { - var files = GetGeneratedFiles(exportationFolderPath); + var files = await GetGeneratedFilesAsync(exportationFolderKey); var filesCount = files.Count; var panel = new JJCollapsePanel { @@ -298,7 +299,7 @@ private HtmlBuilder GetFilesCollapsePanelHtmlBuilder(string exportationFolderPat return panel.GetHtmlBuilder()?.WithCssClass($"col-sm-12 {BootstrapHelper.FormGroup}"); } - private HtmlBuilder GetLastFilesHtml(List files) + private HtmlBuilder GetLastFilesHtml(List files) { if (files == null || files.Count == 0) return new HtmlBuilder(_stringLocalizer["No recently generated files."]); @@ -306,11 +307,8 @@ private HtmlBuilder GetLastFilesHtml(List files) var html = new HtmlBuilder(HtmlTag.Div); foreach (var file in files) { - if (FileIO.IsFileLocked(file)) - continue; - - var icon = JJDataExportation.GetFileIcon(file.Extension); - string url = dataExportation.GetDownloadUrl(file.FullName); + var icon = JJDataExportation.GetFileIcon(Path.GetExtension(file.FileName)); + string url = dataExportation.GetDownloadUrl(file.FileName); var div = new HtmlBuilder(HtmlTag.Div); div.WithCssClass("mb-1"); @@ -320,7 +318,7 @@ private HtmlBuilder GetLastFilesHtml(List files) { a.WithAttribute("href", url); a.WithAttribute("title", "Download"); - a.AppendText(file.Name); + a.AppendText(file.FileName); }); html.Append(div); @@ -329,17 +327,12 @@ private HtmlBuilder GetLastFilesHtml(List files) return html; } - private static List GetGeneratedFiles(string exportationFolderPath) + private async Task> GetGeneratedFilesAsync(string exportationFolderKey) { - var list = new List(); - - var oDir = new DirectoryInfo(exportationFolderPath); - - if (oDir.Exists) - list.AddRange(oDir.GetFiles("*", SearchOption.AllDirectories)); - - return list.OrderByDescending(f => f.CreationTime).ToList(); + return (await dataExportation.FileStorage.ListAsync(exportationFolderKey)) + .OrderByDescending(f => f.LastWriteTime) + .ToList(); } private bool PdfWriterExists() => dataExportation.DataExportationWriterFactory.PdfWriterExists(); -} \ No newline at end of file +} diff --git a/src/MasterData.Core/UI/Components/Exportation/JJDataExportation.cs b/src/MasterData.Core/UI/Components/Exportation/JJDataExportation.cs index 70c997d65..a2f8c668d 100644 --- a/src/MasterData.Core/UI/Components/Exportation/JJDataExportation.cs +++ b/src/MasterData.Core/UI/Components/Exportation/JJDataExportation.cs @@ -15,15 +15,13 @@ using JJMasterData.Commons.Tasks; using JJMasterData.Commons.Util; using JJMasterData.Core.Configuration.Options; -using JJMasterData.Core.DataDictionary; using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataManager; using JJMasterData.Core.DataManager.Exportation; using JJMasterData.Core.DataManager.Exportation.Abstractions; using JJMasterData.Core.DataManager.Exportation.Configuration; using JJMasterData.Core.DataManager.Expressions; -using JJMasterData.Core.Html; -using Microsoft.AspNetCore.Http; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.UI.Events.Args; using Microsoft.Extensions.Localization; @@ -62,6 +60,8 @@ public ExportOptions ExportOptions internal DataExportationScripts Scripts => field ??= new DataExportationScripts(this); internal IComponentFactory ComponentFactory { get; } + internal IFileStorage FileStorage { get; } + public IUrlHelper UrlHelper { get; } public DataExportationWriterFactory DataExportationWriterFactory { get; } #endregion @@ -70,6 +70,7 @@ public ExportOptions ExportOptions internal JJDataExportation( FormElement formElement, IMasterDataUser masterDataUser, + IUrlHelper urlHelper, ExpressionsService expressionsService, IOptionsSnapshot masterDataOptions, IBackgroundTaskManager backgroundTaskManager, @@ -78,9 +79,12 @@ internal JJDataExportation( ILoggerFactory loggerFactory, IHttpContextAccessor currentContext, IEncryptionService encryptionService, + IFileStorage fileStorage, DataExportationWriterFactory dataExportationWriterFactory) : base(currentContext, masterDataUser, expressionsService, backgroundTaskManager, loggerFactory.CreateLogger(),encryptionService,stringLocalizer) { + FileStorage = fileStorage; + UrlHelper = urlHelper; DataExportationWriterFactory = dataExportationWriterFactory; ComponentFactory = componentFactory; CurrentContext = currentContext; @@ -89,16 +93,16 @@ internal JJDataExportation( } #endregion - protected override Task BuildResultAsync() + protected override async Task BuildResultAsync() { ComponentResult result; if (IsRunning()) result = new ContentComponentResult(new DataExportationLog(this).GetLoadingHtml()); else - result = new ContentComponentResult(new DataExportationSettings(this).GetHtmlBuilder()); + result = new ContentComponentResult(await new DataExportationSettings(this).GetHtmlBuilderAsync()); - return Task.FromResult(result); + return result; } internal static JJIcon GetFileIcon(string ext) @@ -110,31 +114,30 @@ internal static JJIcon GetFileIcon(string ext) return new JJIcon(FontAwesomeIcon.FileTextO); } - internal string GetDownloadUrl(string filePath) + internal string GetDownloadUrl(string fileName) { - var downloader = ComponentFactory.Downloader.Create(); - downloader.FilePath = filePath; - return downloader.GetDownloadUrl(); + return UrlHelper.ActionLink("Exportation", "File", new { Area = "MasterData", elementName = FormElement.Name, fileName }); } private string GetFinishedMessageHtml(DataExportationReporter reporter) { if (!reporter.HasError) { - string url = GetDownloadUrl(reporter.FilePath); + string url = GetDownloadUrl(reporter.FileName); var html = new HtmlBuilder(HtmlTag.Div); if (reporter.HasError) { - var panel = new JJValidationSummary(); - panel.ShowCloseButton = false; - panel.Title = reporter.Message; + var panel = new JJValidationSummary + { + ShowCloseButton = false, + Title = reporter.Message + }; html.AppendComponent(panel); } else { - var file = new FileInfo(reporter.FilePath); - var icon = GetFileIcon(file.Extension); + var icon = GetFileIcon(Path.GetExtension(reporter.FileName)); icon.CssClass = "fa-3x "; html.Append(HtmlTag.Div, div => @@ -176,7 +179,7 @@ private string GetFinishedMessageHtml(DataExportationReporter reporter) a.WithAttribute("href", url); a.AppendComponent(icon); a.Append(HtmlTag.Br); - a.AppendText(file.Name); + a.AppendText(reporter.FileName); }); div.Append(HtmlTag.Br); div.Append(HtmlTag.Br); @@ -228,10 +231,10 @@ public async Task ExecuteExportationAsync(DictionaryListResult await exporter.RunWorkerAsync(CancellationToken.None); - var downloader = ComponentFactory.Downloader.Create(); - downloader.FilePath = exporter.ProcessReporter.FilePath; - - return downloader.GetDirectDownloadResult(); + var stream = await exporter.FileStorage.OpenReadAsync( + exporter.ProcessReporter.FolderKey, + exporter.ProcessReporter.FileName); + return new FileStreamComponentResult(stream, exporter.ProcessReporter.FileName); } internal void ExportFileInBackground(Dictionary filter, OrderByData orderByData) diff --git a/src/MasterData.Core/UI/Components/FileComponentResult.cs b/src/MasterData.Core/UI/Components/FileComponentResult.cs deleted file mode 100644 index 39f7df46d..000000000 --- a/src/MasterData.Core/UI/Components/FileComponentResult.cs +++ /dev/null @@ -1,32 +0,0 @@ -#nullable enable -#if NET -using System.IO; -using System.Threading.Tasks; -using JJMasterData.Commons.Util; -using Microsoft.AspNetCore.Mvc; -#endif - -namespace JJMasterData.Core.UI.Components; - -public sealed class FileComponentResult(string filePath) : ComponentResult -#if NET - ,IActionResult -#endif -{ - private string FilePath { get; } = filePath; - public override string Content => FilePath; - -#if NET - public Task ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext context) - { - var fileName = Path.GetFileName(FilePath); - - var fileContentResult = new PhysicalFileResult(FilePath, MimeTypeUtil.GetMimeType(fileName)) - { - FileDownloadName = fileName - }; - - return fileContentResult.ExecuteResultAsync(context); - } -#endif -} \ No newline at end of file diff --git a/src/MasterData.Core/UI/Components/FilePathComponentResult.cs b/src/MasterData.Core/UI/Components/FilePathComponentResult.cs new file mode 100644 index 000000000..f885aaf09 --- /dev/null +++ b/src/MasterData.Core/UI/Components/FilePathComponentResult.cs @@ -0,0 +1,14 @@ +#nullable enable +#if NET +using System.IO; +#endif + +namespace JJMasterData.Core.UI.Components; + +public sealed class FilePathComponentResult(string filePath) : FileStreamComponentResult(stream: CreateStream(filePath), Path.GetFileName(filePath)) +{ + private static FileStream CreateStream(string filePath) + { + return new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 81920, true); + } +} diff --git a/src/MasterData.Core/UI/Components/FileStreamComponentResult.cs b/src/MasterData.Core/UI/Components/FileStreamComponentResult.cs new file mode 100644 index 000000000..c0bfbad0b --- /dev/null +++ b/src/MasterData.Core/UI/Components/FileStreamComponentResult.cs @@ -0,0 +1,25 @@ +#nullable enable + +using System.IO; +using System.Threading.Tasks; +using JJMasterData.Commons.Util; + + +namespace JJMasterData.Core.UI.Components; + +public class FileStreamComponentResult( + Stream stream, + string fileName) : ComponentResult, IActionResult +{ + public override string Content => fileName; + + public Task ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext context) + { + var fileStreamResult = new FileStreamResult(stream, MimeTypeUtil.GetMimeType(fileName)) + { + FileDownloadName = fileName + }; + + return fileStreamResult.ExecuteResultAsync(context); + } +} diff --git a/src/MasterData.Core/UI/Components/FormView/JJFormView.cs b/src/MasterData.Core/UI/Components/FormView/JJFormView.cs index 91b07402d..30861f28c 100644 --- a/src/MasterData.Core/UI/Components/FormView/JJFormView.cs +++ b/src/MasterData.Core/UI/Components/FormView/JJFormView.cs @@ -531,7 +531,7 @@ internal async Task GetFormResultAsync() case ComponentContext.SearchBoxFilter: return await GetGridViewResult(); case ComponentContext.DownloadFile: - return ComponentFactory.Downloader.Create().GetDownloadResult(); + return await ComponentFactory.Downloader.Create().GetDownloadResultAsync(); case ComponentContext.AuditLogView: return await AuditLogView.GetResultAsync(); case ComponentContext.DataImportation or ComponentContext.DataImportationFileUpload: @@ -638,7 +638,9 @@ private async Task GetSaveActionResult() Dictionary errors; if (PageState is PageState.Insert || IsInsertAtGridView) + { errors = await InsertFormValuesAsync(values); + } else errors = await UpdateFormValuesAsync(values); @@ -725,8 +727,6 @@ private Task GetCancelActionResult() { PageState = PageState.List; - ClearTempFiles(); - return GridView.GetResultAsync(); } @@ -1694,18 +1694,6 @@ public async ValueTask> ValidateFieldsAsync(Dictionar return errors; } - - private void ClearTempFiles() - { - var uploadFields = FormElement.Fields.FindAll(x => x.Component == FormComponent.File); - foreach (var field in uploadFields) - { - string sessionName = $"{field.Name}-upload-view_jjfiles"; - if (CurrentContext.HttpContext!.Session.Keys.Contains(sessionName)) - CurrentContext.HttpContext!.Session.Remove(sessionName); - } - } - public async ValueTask GetFormStateDataAsync() { if (_formStateData != null) diff --git a/src/MasterData.Core/UI/Components/GridView/GridTableBody.cs b/src/MasterData.Core/UI/Components/GridView/GridTableBody.cs index 9fa883887..776b448c0 100644 --- a/src/MasterData.Core/UI/Components/GridView/GridTableBody.cs +++ b/src/MasterData.Core/UI/Components/GridView/GridTableBody.cs @@ -236,7 +236,7 @@ private async ValueTask GetGridFieldHtml(FormElementField field, var controlContext = new ControlContext(formStateData, _name, stringValue); var controlFactory = gridView.ComponentFactory.Controls; var textFile = controlFactory.Create(gridView.FormElement, field, controlContext); - cell = textFile.GetButtonGroupHtml(); + cell = await textFile.GetButtonGroupHtmlAsync(); } else { diff --git a/src/MasterData.Core/UI/Components/GridView/JJGridView.cs b/src/MasterData.Core/UI/Components/GridView/JJGridView.cs index b9db0123c..580b76b36 100644 --- a/src/MasterData.Core/UI/Components/GridView/JJGridView.cs +++ b/src/MasterData.Core/UI/Components/GridView/JJGridView.cs @@ -668,7 +668,7 @@ protected override async Task BuildResultAsync() return await GetExportationResult(); if (ComponentContext is ComponentContext.DownloadFile) - return ComponentFactory.Downloader.Create().GetDownloadResult(); + return await ComponentFactory.Downloader.Create().GetDownloadResultAsync(); if (ComponentContext is ComponentContext.GridViewRow) { diff --git a/src/MasterData.Core/UI/Components/IO/FileDownloader/FileDownloaderFactory.cs b/src/MasterData.Core/UI/Components/IO/FileDownloader/FileDownloaderFactory.cs index 5150259f9..929c1b56b 100644 --- a/src/MasterData.Core/UI/Components/IO/FileDownloader/FileDownloaderFactory.cs +++ b/src/MasterData.Core/UI/Components/IO/FileDownloader/FileDownloaderFactory.cs @@ -1,19 +1,35 @@ +using System; +using System.Collections.Generic; using JJMasterData.Commons.Security.Cryptography.Abstractions; +using JJMasterData.Core.DataDictionary.Models; +using JJMasterData.Core.DataManager.IO.Storage; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Logging; namespace JJMasterData.Core.UI.Components; public sealed class FileDownloaderFactory(IHttpContextAccessor httpContext, + IFileStorage fileStorage, + ITemporaryUploadStore temporaryUploadStore, IEncryptionService encryptionService, - IStringLocalizer stringLocalizer, - ILoggerFactory loggerFactory) + IStringLocalizer stringLocalizer) { public JJFileDownloader Create() { - return new JJFileDownloader(httpContext, encryptionService, stringLocalizer, - loggerFactory.CreateLogger()); + return new JJFileDownloader(httpContext, fileStorage, temporaryUploadStore, encryptionService, stringLocalizer); } - -} \ No newline at end of file + + public JJFileDownloader Create(FileStorageReference fileReference) + { + var downloader = Create(); + downloader.FileReference = fileReference; + return downloader; + } + + public JJFileDownloader Create(FormElement formElement, FormElementField field, Dictionary values, string fileName, bool isTemporary = false) + { + var storage = isTemporary ? temporaryUploadStore : fileStorage; + var folderKey = storage.GetFolderKey(formElement, field, values); + return Create(FileStorageReference.Create(folderKey, fileName, isTemporary)); + } +} diff --git a/src/MasterData.Core/UI/Components/IO/FileDownloader/JJFileDownloader.cs b/src/MasterData.Core/UI/Components/IO/FileDownloader/JJFileDownloader.cs index 54de4751d..97d4206fe 100644 --- a/src/MasterData.Core/UI/Components/IO/FileDownloader/JJFileDownloader.cs +++ b/src/MasterData.Core/UI/Components/IO/FileDownloader/JJFileDownloader.cs @@ -1,178 +1,82 @@ using System; -using System.IO; +using System.Threading.Tasks; using System.Web; using JJConsulting.Html; using JJConsulting.Html.Bootstrap.Abstractions; -using JJConsulting.Html.Bootstrap.Components; -using JJConsulting.Html.Bootstrap.Extensions; -using JJConsulting.Html.Extensions; using JJMasterData.Commons.Exceptions; -using JJMasterData.Commons.Extensions; using JJMasterData.Commons.Security.Cryptography.Abstractions; -using JJMasterData.Commons.Util; -using JJMasterData.Core.Extensions; -using Microsoft.AspNetCore.Http; - +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.UI.Routing; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Logging; namespace JJMasterData.Core.UI.Components; public class JJFileDownloader( IHttpContextAccessor currentContext, + IFileStorage fileStorage, + ITemporaryUploadStore temporaryUploadStore, IEncryptionService encryptionService, - IStringLocalizer stringLocalizer, - ILogger logger) + IStringLocalizer stringLocalizer) : HtmlComponent { - public const string DirectDownloadParameter = "directDownloadFilePath"; - public const string DownloadParameter = "downloadFilePath"; - - public string FilePath { get; set; } - public bool IsExternalLink { get; set; } + public const string FileTokenParameter = "downloadFileToken"; + + public FileStorageReference FileReference { get; set; } internal IHttpContextAccessor CurrentContext { get; } = currentContext; internal IStringLocalizer StringLocalizer { get; } = stringLocalizer; - internal ILogger Logger { get; } = logger; internal IEncryptionService EncryptionService { get; } = encryptionService; - - + protected override HtmlBuilder BuildHtml() { - if (string.IsNullOrEmpty(FilePath)) - throw new JJMasterDataException(StringLocalizer["Invalid file path or badly formatted URL"]); - - if (IsExternalLink) - return GetDownloadHtmlElement(); - - GetDirectDownloadResult(); + if (FileReference == null) + throw new JJMasterDataException(StringLocalizer["Invalid file reference"]); - return null; + return new HtmlBuilder(); } - private HtmlBuilder GetDownloadHtmlElement() - { - var file = new FileInfo(FilePath); - string fileName = file.Name; - string size = Format.FormatFileSize(file.Length); - string lastWriteTime = file.LastWriteTime.ToDateTimeString(); - string url = CurrentContext.HttpContext!.Request.GetAbsoluteUri().Replace(DirectDownloadParameter, DownloadParameter); - - var htmlTitle = new JJTitle - { - Title = StringLocalizer["Downloading"], - SubTitle = fileName.ToLower() - }; - - var html = HtmlBuilder.Div() - .AppendComponent(htmlTitle) - .AppendSection(section => - { - section.WithCssClass("container mt-3"); - section.AppendDiv(div => - { - div.WithCssClass("jumbotron px-3 py-4 px-sm-4 py-sm-5 bg-light rounded-3 mb-3"); - div.AppendDiv(div => - { - div.AppendH1(h1 => - { - h1.AppendComponent(new JJIcon("fa fa-cloud-download text-info")); - h1.AppendText(fileName); - }); - div.Append(HtmlTag.P,p => - { - p.AppendText($"{StringLocalizer["File Size:"]} {size}"); - p.Append(HtmlTag.Br); - p.AppendText($"{StringLocalizer["Last write time:"]} {lastWriteTime}"); - }); - div.AppendHr(hr => - { - hr.WithCssClass("my-4"); - }); - div.Append(HtmlTag.P, p => - { - p.AppendText(StringLocalizer["You are downloading file {0}.", fileName]); - p.AppendText(" "); - p.AppendText($"{StringLocalizer["If the download not start automatically"]}, "); - p.Append(HtmlTag.A, a => - { - a.WithAttribute("href", url); - a.AppendText(StringLocalizer["click here."]); - }); - }); - }); - }); - }); - return html; - } - - internal FileComponentResult GetDirectDownloadResult() + public async Task GetDirectDownloadResultAsync() { - if (string.IsNullOrEmpty(FilePath)) - throw new ArgumentNullException(nameof(FilePath)); + if (FileReference == null) + throw new ArgumentNullException(nameof(FileReference)); - if (!File.Exists(FilePath)) - { - var exception = new JJMasterDataException(StringLocalizer["File {0} not found!", Path.GetFileName(FilePath)]); - Logger.LogError(exception, "File {FilePath} not found!", FilePath); - throw exception; - } - - return new FileComponentResult(FilePath); + var storage = FileReference.IsTemporary ? temporaryUploadStore : fileStorage; + var stream = await storage.OpenReadAsync(FileReference.FolderKey, FileReference.FileName); + return new FileStreamComponentResult(stream, FileReference.FileName); } - - public FileComponentResult GetDownloadResult() - { - bool isExternalLink = false; - string criptFilePath = CurrentContext.HttpContext!.Request.Query[DownloadParameter]; - if (criptFilePath == null) - { - criptFilePath = CurrentContext.HttpContext!.Request.Query[DirectDownloadParameter]; - isExternalLink = true; - } - - if (criptFilePath == null) - throw new JJMasterDataException("Invalid file path or badly formatted URL"); - string filePath = EncryptionService.DecryptStringWithUrlUnescape(criptFilePath); + public async Task GetDownloadResultAsync() + { + var token = CurrentContext.HttpContext!.Request.Query[FileTokenParameter].ToString(); + if (string.IsNullOrEmpty(token)) + throw new JJMasterDataException("Invalid file token."); - FilePath = filePath ?? throw new JJMasterDataException("Invalid file path or badly formatted URL"); - IsExternalLink = isExternalLink; + var fileToken = EncryptionService.DecryptObject(token); - return GetDirectDownloadResult(); + FileReference = fileToken; + + return await GetDirectDownloadResultAsync(); } - + public string GetDownloadUrl() { - var url = CurrentContext.HttpContext!.Request.GetAbsoluteUri(); - var encryptedFilePath = EncryptionService.EncryptStringWithUrlEscape(FilePath); - - var uriBuilder = new UriBuilder(url); - var query = HttpUtility.ParseQueryString(uriBuilder.Query); - var routeContext = new RouteContext( ComponentContext.DownloadFile); - var encryptedRouteContext = EncryptionService.EncryptObject(routeContext); - - query["routeContext"] = encryptedRouteContext; - query[DirectDownloadParameter] = encryptedFilePath; - - uriBuilder.Query = query.ToString()!; - - return uriBuilder.Uri.PathAndQuery; + return GetDownloadUrl(CurrentContext.HttpContext!.Request.GetAbsoluteUri()); } - public static string GetExternalDownloadLink(IEncryptionService encryptionService, string absoluteUri, string filePath) + public string GetDownloadUrl(string absoluteUri) { + if (FileReference == null) + throw new ArgumentNullException(nameof(FileReference)); + var uriBuilder = new UriBuilder(absoluteUri); var query = HttpUtility.ParseQueryString(uriBuilder.Query); - var routeContext = new RouteContext( ComponentContext.DownloadFile); - var encryptedRouteContext = encryptionService.EncryptObject(routeContext); - var encryptedFilePath = encryptionService.EncryptStringWithUrlEscape(filePath); - query["routeContext"] = encryptedRouteContext; - query[DirectDownloadParameter] = encryptedFilePath; + var routeContext = new RouteContext(ComponentContext.DownloadFile); + + query["routeContext"] = EncryptionService.EncryptObject(routeContext); + query[FileTokenParameter] = EncryptionService.EncryptObject(FileReference); uriBuilder.Query = query.ToString()!; - return uriBuilder.Uri.AbsoluteUri; + return uriBuilder.Uri.PathAndQuery; } } diff --git a/src/MasterData.Core/UI/Components/IO/UploadArea/JJUploadArea.cs b/src/MasterData.Core/UI/Components/IO/UploadArea/JJUploadArea.cs index b51dcb522..09db223a1 100644 --- a/src/MasterData.Core/UI/Components/IO/UploadArea/JJUploadArea.cs +++ b/src/MasterData.Core/UI/Components/IO/UploadArea/JJUploadArea.cs @@ -149,7 +149,7 @@ protected override async Task BuildResultAsync() return new RenderedComponentResult(GetUploadAreaHtmlBuilder()); } - public async Task GetFileUploadResultAsync(FormFileContent formFile) + public async Task GetFileUploadResultAsync(IFormFile formFile) { if (OnFileUploaded != null) _uploadAreaService.OnFileUploaded += OnFileUploaded; diff --git a/src/MasterData.Core/UI/Components/IO/UploadView/JJUploadView.cs b/src/MasterData.Core/UI/Components/IO/UploadView/JJUploadView.cs index f9b63834c..5d1b2e220 100644 --- a/src/MasterData.Core/UI/Components/IO/UploadView/JJUploadView.cs +++ b/src/MasterData.Core/UI/Components/IO/UploadView/JJUploadView.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Data; using System.Globalization; using System.IO; using System.Linq; @@ -13,15 +12,14 @@ using JJConsulting.Html.Bootstrap.Models; using JJConsulting.Html.Extensions; using JJMasterData.Commons.Exceptions; -using JJMasterData.Commons.Extensions; using JJMasterData.Commons.Security.Cryptography.Abstractions; +using JJMasterData.Commons.Tasks; using JJMasterData.Commons.Util; -using JJMasterData.Core.DataDictionary.Models; using JJMasterData.Core.DataDictionary.Models.Actions; using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.DataManager.Models; using Microsoft.AspNetCore.Http; -using JJMasterData.Core.Tasks; using JJMasterData.Core.UI.Events.Args; using JJMasterData.Core.UI.Routing; @@ -42,21 +40,18 @@ public class JJUploadView : AsyncComponent { private const string FileName = "Name"; private const string FileNameJs = "NameJS"; - private const string Size = "Size"; - private const string LastWriteTime = "LastWriteTime"; private UrlRedirectAction _downloadAction; private ScriptAction _deleteAction; private ScriptAction _renameAction; - private JJGridView _gridView; private JJUploadArea _uploadArea; private FormFileManager _formFileManager; private UploadViewScripts _scripts; private RouteContext _routeContext; - public event EventHandler OnBeforeCreateFile; - public event EventHandler OnBeforeDeleteFile; - public event EventHandler OnBeforeRenameFile; + public event AsyncEventHandler OnBeforeCreateFileAsync; + public event AsyncEventHandler OnBeforeDeleteFileAsync; + public event AsyncEventHandler OnBeforeRenameFileAsync; public event EventHandler OnBeforeDownloadFile; internal string ParentName { get; set; } @@ -80,14 +75,9 @@ public class JJUploadView : AsyncComponent /// public bool AutoSave { get; set; } = true; - /// - /// Full Directory Path. - /// (Optional) If the path is not given, all files will be stored in the session. - /// - /// - /// Example: C:\temp\files\ (Windows) or /tmp/Files (Linux) - /// - public string FolderPath { get; set; } + public string FolderKey { get; set; } + + public string DraftId => FormFileManager.DraftId; public JJUploadArea UploadArea { @@ -97,9 +87,10 @@ public JJUploadArea UploadArea return _uploadArea; _uploadArea = ComponentFactory.UploadArea.Create(); - _uploadArea.OnFileUploaded += OnFileUploaded; + _uploadArea.OnFileUploadedAsync += OnFileUploadedAsync; _uploadArea.JsCallback = JsCallback; _uploadArea.Name = $"{Name}-files"; + _uploadArea.QueryStringParams["draftId"] = FormFileManager.DraftId; return _uploadArea; } @@ -107,92 +98,6 @@ public JJUploadArea UploadArea public string JsCallback { get; set; } = "getMasterDataForm().submit()"; - public JJGridView GridView - { - get - { - var files = GetFilesDataTable(); - - if (_gridView != null) - { - _gridView.DataSource = EnumerableHelper.ConvertToDictionaryList(files); - return _gridView; - } - - _gridView = ComponentFactory.GridView.Create(new FormElement(files)); - _gridView.FormElement.Name = Name; - _gridView.FormElement.ParentName = ParentName; - _gridView.FormElement.Title = Title; - _gridView.FormElement.SubTitle = SubTitle; - _gridView.FormElement.TitleSize = TitleSize; - _gridView.FormElement.Icon = Icon; - - _gridView.DataSource = EnumerableHelper.ConvertToDictionaryList(files); - _gridView.TotalOfRecords = files.Rows.Count; - - if(_gridView.FormElement.Fields.Contains("NameJS")) - _gridView.FormElement.Fields["NameJS"].VisibleExpression = "val:0"; - - if (_gridView.FormElement.Fields.Contains("LastWriteTime")) - _gridView.FormElement.Fields["LastWriteTime"].Label = "Last Modified"; - - _gridView.FormElement.Options.GridToolbarActions.InsertAction.SetVisible(false); - - _gridView.Name = $"{Name}-grid-view"; - _gridView.UserValues = UserValues; - _gridView.ShowPaging = false; - _gridView.ShowTitle = false; - - - _gridView.FilterAction.SetVisible(false); - _gridView.EmptyDataText = StringLocalizer["There is no files to display."]; - _gridView.ShowHeaderWhenEmpty = false; - - _gridView.ViewAction.SetVisible(false); - _gridView.EditAction.SetVisible(false); - _gridView.DeleteAction.SetVisible(false); - _gridView.ExportAction.SetVisible(false); - _gridView.RefreshAction.SetVisible(false); - _gridView.ConfigAction.SetVisible(false); - - _gridView.TableActions.Add(DownloadAction); - - _gridView.OnRenderActionAsync += (_, args) => - { - if(args.ActionName.Equals(_downloadAction.Name)) - { - var fileName = args.FieldValues["Name"].ToString(); - var file = FormFileManager.GetFile(fileName); - var isInMemory = file?.IsInMemory ?? false; - var isRenamed = file?.IsRenamed ?? false; - if (isInMemory || isRenamed) - { - args.LinkButton.Enabled = false; - args.LinkButton.Tooltip = StringLocalizer["Save your form to download this file."]; - } - else - { - var downloader = ComponentFactory.Downloader.Create(); - downloader.FilePath = FormFileManager.GetFilePath(fileName); - args.LinkButton.UrlAction = downloader.GetDownloadUrl(); - } - } - - return ValueTaskHelper.CompletedTask; - }; - - _gridView.TableActions.Add(RenameAction); - _gridView.TableActions.Add(DeleteAction); - - - _gridView.FormElement.Options.Grid.RecordsPerPage = int.MaxValue; - _gridView.FormElement.Options.Grid.ShowPagging = false; - _gridView.FormElement.Options.Grid.ShowToolBar = false; - - return _gridView; - } - } - public UrlRedirectAction DownloadAction => _downloadAction ??= new UrlRedirectAction { @@ -246,13 +151,13 @@ private FormFileManager FormFileManager { if (_formFileManager == null) { - _formFileManager = new FormFileManager($"{Name}-files", CurrentContext,StringLocalizer, LoggerFactory.CreateLogger()); - _formFileManager.OnBeforeCreateFile += OnBeforeCreateFile; - _formFileManager.OnBeforeDeleteFile += OnBeforeDeleteFile; - _formFileManager.OnBeforeRenameFile += OnBeforeRenameFile; + _formFileManager = FormFileManagerFactory.Create($"{Name}-files"); + _formFileManager.OnBeforeCreateFileAsync += OnBeforeCreateFileAsync; + _formFileManager.OnBeforeDeleteFileAsync += OnBeforeDeleteFileAsync; + _formFileManager.OnBeforeRenameFileAsync += OnBeforeRenameFileAsync; } _formFileManager.AutoSave = AutoSave; - _formFileManager.FolderPath = FolderPath; + _formFileManager.FolderKey = FolderKey; return _formFileManager; } } @@ -261,6 +166,7 @@ private FormFileManager FormFileManager private IHttpContextAccessor CurrentContext { get; } private IComponentFactory ComponentFactory { get; } + private FormFileManagerFactory FormFileManagerFactory { get; } private IEncryptionService EncryptionService { get; } protected RouteContext RouteContext @@ -283,12 +189,14 @@ protected RouteContext RouteContext public JJUploadView( IHttpContextAccessor currentContext, IComponentFactory componentFactory, + FormFileManagerFactory formFileManagerFactory, IEncryptionService encryptionService, IStringLocalizer stringLocalizer, ILoggerFactory loggerFactory) { CurrentContext = currentContext; ComponentFactory = componentFactory; + FormFileManagerFactory = formFileManagerFactory; EncryptionService = encryptionService; StringLocalizer = stringLocalizer; LoggerFactory = loggerFactory; @@ -304,7 +212,7 @@ protected override async Task BuildResultAsync() if (RouteContext.ComponentContext is ComponentContext.DownloadFile) { var downloader = ComponentFactory.Downloader.Create(); - return downloader.GetDownloadResult(); + return await downloader.GetDownloadResultAsync(); } var uploadAreaResult = await UploadArea.GetResultAsync(); @@ -324,7 +232,7 @@ public async Task GetUploadViewResult() var uploadAction = CurrentContext.HttpContext!.Request.GetFormValue($"upload-view-action-{Name}"); if (!string.IsNullOrEmpty(uploadAction)) { - var result = GetUploadActionResult(uploadAction); + var result = await GetUploadActionResultAsync(uploadAction); if (result is RenderedComponentResult renderedComponent) { @@ -356,16 +264,7 @@ public async Task GetUploadViewResult() } else { - var result = await GetGridViewResult(); - - if (result is RenderedComponentResult renderedComponent) - { - html.Append(renderedComponent.HtmlBuilder); - } - else - { - return result; - } + html.Append(await GetFilesTableHtmlAsync()); } html.AppendComponent(await GetPreviewModalHtml()); @@ -375,7 +274,7 @@ public async Task GetUploadViewResult() return new RenderedComponentResult(html); } - private ComponentResult GetUploadActionResult(string uploadViewAction) + private async Task GetUploadActionResultAsync(string uploadViewAction) { var fileName = CurrentContext.HttpContext!.Request.GetFormValue($"upload-view-file-name-{Name}"); try @@ -383,11 +282,11 @@ private ComponentResult GetUploadActionResult(string uploadViewAction) switch (uploadViewAction) { case "deleteFile": - return GetDeleteFileResult(fileName); + return await GetDeleteFileResultAsync(fileName); case "downloadFile": - return GetDownloadFileResult(Path.Combine(FormFileManager.FolderPath, fileName)); + return await GetDownloadFileResultAsync(fileName); case "renameFile": - return GetRenameFileResult(fileName); + return await GetRenameFileResultAsync(fileName); } } catch (Exception ex) @@ -410,7 +309,8 @@ private HtmlBuilder GetUploadAreaHtml() { var html = new HtmlBuilder() .AppendHiddenInput($"upload-view-action-{Name}") - .AppendHiddenInput($"upload-view-file-name-{Name}"); + .AppendHiddenInput($"upload-view-file-name-{Name}") + .AppendHiddenInput($"{Name}-files-draft-id", FormFileManager.DraftId); if (!ShowAddFiles) return html; @@ -441,23 +341,12 @@ private HtmlBuilder GetHtmlFormPanel() return panelContent; } - private Task GetGridViewResult() - { - return GridView.GetResultAsync(); - - } - private async Task GetGalleryHtml() { - var files = GetFiles().FindAll(x => !x.Deleted); + var files = (await GetFilesAsync()).FindAll(x => !x.Deleted); if (files.Count == 0) return new JJAlert{Title = StringLocalizer["There is no files to display."]}.GetHtmlBuilder(); - foreach (var ac in GridView.TableActions) - { - ac.IsGroup = false; - } - var row = new HtmlBuilder(HtmlTag.Div) .WithCssClass("row"); @@ -467,14 +356,13 @@ private async Task GetGalleryHtml() var col = new HtmlBuilder(HtmlTag.Div); col.WithCssClass("col-sm-3"); - var fileValues = ConvertFormFileToDictionary(file); - var formStateData = new FormStateData(fileValues, UserValues, PageState.List); - var actionsHtml = await GridView.Table.Body.GetActionsHtmlListAsync(formStateData); + var previewHtml = await GetHtmlGalleryPreview(file.FileName); + var actionsHtml = await GetActionsHtmlListAsync(file.FileName); col.Append(HtmlTag.Ul, ul => { ul.WithCssClass("list-group list-group-flush"); - ul.Append(GetHtmlGalleryPreview(file.FileName)); + ul.Append(previewHtml); ul.AppendRange(GetGalleryListItems(file)); @@ -484,7 +372,10 @@ private async Task GetGalleryHtml() li.Append(HtmlTag.Table, table => { table.WithCssClass("table-gallery"); - table.AppendRange(actionsHtml); + table.Append(HtmlTag.Tr, tr => + { + tr.AppendRange(actionsHtml); + }); }); }); }); @@ -513,7 +404,7 @@ private HtmlBuilder GetHtmlGalleryListItem(string label, string value) .AppendText(value); } - private HtmlBuilder GetHtmlGalleryPreview(string fileName) + private async Task GetHtmlGalleryPreview(string fileName) { var html = new HtmlBuilder(HtmlTag.Li) .WithCssClass("list-group-item"); @@ -523,7 +414,7 @@ private HtmlBuilder GetHtmlGalleryPreview(string fileName) case ".png": case ".jpg": case ".jpeg": - html.Append(GetHtmlImageBox(fileName)); + html.Append(await GetHtmlImageBox(fileName)); break; case ".mp4": html.WithCssClass("text-center"); @@ -584,24 +475,11 @@ private static HtmlBuilder GetHtmlItemBox(string fileName, string cssIcon, strin return div; } - private HtmlBuilder GetHtmlImageBox(string fileName) + private async Task GetHtmlImageBox(string fileName) { - var file = FormFileManager.GetFile(fileName); - - string src; - - if (file.IsInMemory) - { - var base64 = Convert.ToBase64String(file.Content.Bytes.ToArray()); - src = $"data:image/{Path.GetExtension(fileName).Replace(".", "")};base64,{base64}"; - } - else - { - var filePath = Path.Combine(FormFileManager.FolderPath, fileName); - var downloader = ComponentFactory.Downloader.Create(); - downloader.FilePath = filePath; - src = downloader.GetDownloadUrl(); - } + var downloader = ComponentFactory.Downloader.Create(); + downloader.FileReference = await FormFileManager.GetFileReferenceAsync(fileName); + var src = downloader.GetDownloadUrl(); var html = new HtmlBuilder(HtmlTag.Img); @@ -621,19 +499,6 @@ private static HtmlBuilder GetHtmlVideoBox(string fileName) return html; } - private static Dictionary ConvertFormFileToDictionary(FormFileContent file) - { - var dictionary = new Dictionary - { - { FileName, file.FileName }, - { LastWriteTime, file.LastWriteTime }, - { Size, file.Length }, - { FileNameJs, file.FileName.Replace("'", "\\'") } - }; - - return dictionary; - } - private async Task GetPreviewModalHtml() { var html = new HtmlBuilder(HtmlTag.Div); @@ -710,34 +575,123 @@ private async Task GetPreviewModalHtml() return modal; } - private DataTable GetFilesDataTable() + private async Task GetFilesTableHtmlAsync() { - var files = FormFileManager.GetFiles(); - var dt = new DataTable(); - dt.Columns.Add(FileName, typeof(string)); - dt.Columns.Add(Size, typeof(string)); - dt.Columns.Add(LastWriteTime, typeof(string)); - dt.Columns.Add(FileNameJs, typeof(string)); - - foreach (var fileInfo in files.Where(f => !f.Deleted)) - { - var content = fileInfo.Content; - var dataRow = dt.NewRow(); - dataRow["Name"] = content.FileName; - dataRow["Size"] = Format.FormatFileSize(content.Length); - dataRow["LastWriteTime"] = content.LastWriteTime.ToDateTimeString(); - dataRow["NameJS"] = HttpUtility.JavaScriptStringEncode(content.FileName); - dt.Rows.Add(dataRow); + var files = (await GetFilesAsync()) + .Where(f => !f.Deleted) + .Select(f => f.Content) + .ToList(); + + if (files.Count == 0) + return new JJAlert { Title = StringLocalizer["There is no files to display."] }.GetHtmlBuilder(); + + var table = new HtmlBuilder(HtmlTag.Table) + .WithCssClass("table table-striped table-hover table-sm"); + + var visibleActionCount = GetVisibleActionsCount(); + + table.Append(HtmlTag.Thead, thead => + { + thead.Append(HtmlTag.Tr, tr => + { + tr.Append(HtmlTag.Th, th => th.AppendText(StringLocalizer["Name"])); + tr.Append(HtmlTag.Th, th => th.AppendText(StringLocalizer["Size"])); + tr.Append(HtmlTag.Th, th => th.AppendText(StringLocalizer["Last Modified"])); + + for (var i = 0; i < visibleActionCount; i++) + { + tr.Append(HtmlTag.Th, th => th.WithCssClass("table-action")); + } + }); + }); + + var tbody = new HtmlBuilder(HtmlTag.Tbody); + foreach (var file in files) + { + var actionsHtml = await GetActionsHtmlListAsync(file.FileName); + tbody.Append(HtmlTag.Tr, tr => + { + tr.Append(HtmlTag.Td, td => td.AppendText(file.FileName)); + tr.Append(HtmlTag.Td, td => td.AppendText(Format.FormatFileSize(file.Length))); + tr.Append(HtmlTag.Td, td => td.AppendText(file.LastWriteTime.ToString(CultureInfo.CurrentCulture))); + tr.AppendRange(actionsHtml); + }); } - return dt; + table.Append(tbody); + return table; } - private void OnFileUploaded(object sender, FormUploadFileEventArgs args) + private int GetVisibleActionsCount() + { + var count = 0; + + if (DownloadAction.IsVisible) + count++; + + if (RenameAction.IsVisible) + count++; + + if (DeleteAction.IsVisible) + count++; + + return count; + } + + private async Task> GetActionsHtmlListAsync(string fileName) + { + List actions = []; + + if (DownloadAction.IsVisible) + { + var downloader = ComponentFactory.Downloader.Create(); + downloader.FileReference = await FormFileManager.GetFileReferenceAsync(fileName); + actions.Add(CreateActionCell(DownloadAction, urlAction: downloader.GetDownloadUrl())); + } + + if (RenameAction.IsVisible) + actions.Add(CreateActionCell(RenameAction, onClientClick: GetActionScript(RenameAction, fileName))); + + if (DeleteAction.IsVisible) + actions.Add(CreateActionCell(DeleteAction, onClientClick: GetActionScript(DeleteAction, fileName))); + + return actions; + } + + private static HtmlBuilder CreateActionCell(BasicAction action, string urlAction = null, string onClientClick = null) + { + var td = new HtmlBuilder(HtmlTag.Td); + td.WithCssClass("table-action"); + td.AppendComponent(CreateActionButton(action, urlAction, onClientClick)); + + return td; + } + + private static JJLinkButton CreateActionButton(BasicAction action, string urlAction = null, string onClientClick = null) + { + return new JJLinkButton + { + Text = action.ShowTitle ? action.Text : null, + Tooltip = action.Tooltip, + UrlAction = urlAction, + OnClientClick = onClientClick, + IconClass = $"{action.Icon.CssClass} fa-fw", + ShowAsButton = action.ShowAsButton, + CssClass = action.CssClass + }; + } + + private static string GetActionScript(ScriptAction action, string fileName) + { + var fileNameJs = HttpUtility.JavaScriptStringEncode(fileName); + return action.OnClientClick?.Replace($"{{{FileNameJs}}}", fileNameJs); + } + + private async ValueTask OnFileUploadedAsync(object sender, FormUploadFileEventArgs args) { try { - CreateFile(args.File); + await CreateFileAsync(args.File); args.SuccessMessage = "File successfully created."; } catch (Exception ex) @@ -746,12 +700,12 @@ private void OnFileUploaded(object sender, FormUploadFileEventArgs args) } } - private RenderedComponentResult GetRenameFileResult(string fileName) + private async Task GetRenameFileResultAsync(string fileName) { var names = fileName.Split(';'); var currentName = names[0]; var newName = names[1]; - RenameFile(currentName, newName); + await RenameFileAsync(currentName, newName); var text = StringLocalizer["File successfully renamed."]; var alert = new JJAlert @@ -765,15 +719,15 @@ private RenderedComponentResult GetRenameFileResult(string fileName) return new RenderedComponentResult(alert.GetHtmlBuilder()); } - public void RenameFile(string currentName, string newName) => - FormFileManager.RenameFile(currentName, newName); + public Task RenameFileAsync(string currentName, string newName) => + FormFileManager.RenameFileAsync(currentName, newName); - public void CreateFile(FormFileContent file) => - FormFileManager.CreateFile(file, !UploadArea.Multiple); + public Task CreateFileAsync(FormFileContent file) => + FormFileManager.CreateFileAsync(file, !UploadArea.Multiple); - public ComponentResult GetDeleteFileResult(string fileName) + public async Task GetDeleteFileResultAsync(string fileName) { - FormFileManager.DeleteFile(fileName); + await FormFileManager.DeleteFileAsync(fileName); var text = StringLocalizer["File successfully deleted."]; var alert = new JJAlert { @@ -786,24 +740,24 @@ public ComponentResult GetDeleteFileResult(string fileName) return new RenderedComponentResult(alert.GetHtmlBuilder()); } - internal void DeleteAll() => - FormFileManager.DeleteAll(); + internal Task DeleteAllAsync() => + FormFileManager.DeleteAllAsync(); - public List GetFiles() => - FormFileManager.GetFiles(); + public Task> GetFilesAsync() => + FormFileManager.GetFilesAsync(!UploadArea.Multiple); - public void ClearMemoryFiles() => - FormFileManager.MemoryFiles = null; + public Task ClearTemporaryFilesAsync() => + FormFileManager.DeleteAllAsync(); - public void SaveMemoryFiles(string folderPath) => - FormFileManager.SaveMemoryFiles(folderPath); + public Task PromoteTemporaryFilesAsync(string folderKey) => + FormFileManager.PromoteTemporaryFilesAsync(folderKey, !UploadArea.Multiple); - public FileComponentResult GetDownloadFileResult(string fileName) + public async Task GetDownloadFileResultAsync(string fileName) { if (OnBeforeDownloadFile != null) { var args = new FormDownloadFileEventArgs(fileName, null); - OnBeforeDownloadFile.Invoke(this, args); + OnBeforeDownloadFile(this, args); if (!string.IsNullOrEmpty(args.ErrorMessage)) @@ -814,8 +768,8 @@ public FileComponentResult GetDownloadFileResult(string fileName) } } var downloader = ComponentFactory.Downloader.Create(); - downloader.FilePath = fileName; - return downloader.GetDownloadResult(); + downloader.FileReference = await FormFileManager.GetFileReferenceAsync(fileName); + return await downloader.GetDirectDownloadResultAsync(); } /// @@ -824,10 +778,8 @@ public FileComponentResult GetDownloadFileResult(string fileName) public void Disable() { ShowAddFiles = false; - foreach (var action in GridView.TableActions) - { - action.SetVisible(false); - } + RenameAction.SetVisible(false); + DeleteAction.SetVisible(false); DownloadAction.SetVisible(true); } diff --git a/src/MasterData.Core/UI/Components/IO/UploadView/UploadViewFactory.cs b/src/MasterData.Core/UI/Components/IO/UploadView/UploadViewFactory.cs index 4ef66e9e3..dead87072 100644 --- a/src/MasterData.Core/UI/Components/IO/UploadView/UploadViewFactory.cs +++ b/src/MasterData.Core/UI/Components/IO/UploadView/UploadViewFactory.cs @@ -1,4 +1,5 @@ using JJMasterData.Commons.Security.Cryptography.Abstractions; +using JJMasterData.Core.DataManager.IO; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; @@ -7,6 +8,7 @@ namespace JJMasterData.Core.UI.Components; public sealed class UploadViewFactory(IHttpContextAccessor currentContext, IComponentFactory componentFactory, + FormFileManagerFactory formFileManagerFactory, IEncryptionService encryptionService, IStringLocalizer stringLocalizer, ILoggerFactory loggerFactory) @@ -16,8 +18,9 @@ public JJUploadView Create() return new JJUploadView( currentContext, componentFactory, + formFileManagerFactory, encryptionService, stringLocalizer, loggerFactory); } -} \ No newline at end of file +} diff --git a/src/MasterData.Core/UI/Components/Importation/JJDataImportation.cs b/src/MasterData.Core/UI/Components/Importation/JJDataImportation.cs index 681b01b9c..7ccba4f35 100644 --- a/src/MasterData.Core/UI/Components/Importation/JJDataImportation.cs +++ b/src/MasterData.Core/UI/Components/Importation/JJDataImportation.cs @@ -337,8 +337,7 @@ private HtmlBuilder GetUploadAreaCollapse(string keyprocess) private void FileUploaded(object sender, FormUploadFileEventArgs e) { var sb = new StringBuilder(); - Stream stream = new MemoryStream(e.File.Bytes); - using (var reader = new StreamReader(stream)) + using (var reader = new StreamReader(e.File.Stream)) { while (!reader.EndOfStream) { diff --git a/src/MasterData.Web/Areas/DataDictionary/Controllers/ElementController.cs b/src/MasterData.Web/Areas/DataDictionary/Controllers/ElementController.cs index 456922e9e..fdb52a89f 100644 --- a/src/MasterData.Web/Areas/DataDictionary/Controllers/ElementController.cs +++ b/src/MasterData.Web/Areas/DataDictionary/Controllers/ElementController.cs @@ -86,14 +86,13 @@ private void ConfigureUploadArea(JJUploadArea upload) private async ValueTask FileUploaded(object? sender, FormUploadFileEventArgs e) { - await using var ms = new MemoryStream(e.File.Bytes); if (e.File.FileName.EndsWith(".zip")) { - await elementImportService.ImportZipFile(ms); + await elementImportService.ImportZipFile(e.File.Stream); } else { - await elementImportService.Import(ms); + await elementImportService.Import(e.File.Stream); } if (ModelState.IsValid) @@ -202,4 +201,4 @@ public async Task Delete() } -} \ No newline at end of file +} diff --git a/src/MasterData.Web/Areas/MasterData/Controllers/FileController.cs b/src/MasterData.Web/Areas/MasterData/Controllers/FileController.cs index 83090502b..ed8af8c55 100644 --- a/src/MasterData.Web/Areas/MasterData/Controllers/FileController.cs +++ b/src/MasterData.Web/Areas/MasterData/Controllers/FileController.cs @@ -1,10 +1,21 @@ using JJMasterData.Commons.Util; +using JJMasterData.Core.Configuration.Options; +using JJMasterData.Core.DataDictionary.Repository.Abstractions; +using JJMasterData.Core.DataManager; +using JJMasterData.Core.DataManager.Exportation; +using JJMasterData.Core.DataManager.IO.Storage; using JJMasterData.Core.DataManager.Services; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; namespace JJMasterData.Web.Areas.MasterData.Controllers; -public class FileController(ElementFileService service) : MasterDataController +public class FileController( + ElementFileService service, + IFileStorage fileStorage, + IDataDictionaryRepository dictionaryRepository, + IMasterDataUser masterDataUser, + IOptionsSnapshot options) : MasterDataController { [ResponseCache(Location = ResponseCacheLocation.None)] public async Task Index( @@ -34,4 +45,30 @@ public async Task Index( return File(fileStream, contentType, downloadName); } -} \ No newline at end of file + + [ResponseCache(Location = ResponseCacheLocation.None)] + public async Task Exportation(string elementName, string fileName) + { + if (string.IsNullOrWhiteSpace(elementName) || string.IsNullOrWhiteSpace(fileName)) + return BadRequest(); + + var formElement = await dictionaryRepository.GetFormElementAsync(elementName); + var folderPath = DataExportationHelper.GetFolderPath( + formElement, + options.Value.ExportationFolderPath, + masterDataUser.Id); + + var safeFileName = Path.GetFileName(fileName); + + try + { + var stream = await fileStorage.OpenReadAsync(folderPath, safeFileName); + var contentType = MimeTypeUtil.GetMimeType(safeFileName); + return File(stream, contentType, safeFileName); + } + catch (Exception ex) when (ex is FileNotFoundException or DirectoryNotFoundException or KeyNotFoundException) + { + return NotFound(); + } + } +} diff --git a/src/MasterData.Web/Scripts/TextFileHelper.ts b/src/MasterData.Web/Scripts/TextFileHelper.ts index ce8cf938c..48015ac9d 100644 --- a/src/MasterData.Web/Scripts/TextFileHelper.ts +++ b/src/MasterData.Web/Scripts/TextFileHelper.ts @@ -1,8 +1,9 @@ class TextFileHelper { - static showUploadView(fieldName: string, title: string, routeContext: string) { + static showUploadView(fieldName: string, title: string, routeContext: string, draftInputId: string) { const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext) urlBuilder.addQueryParameter("fieldName", fieldName) + this.addDraftId(urlBuilder, draftInputId); const url = urlBuilder.build(); const modalId = fieldName + "-upload-modal"; @@ -21,10 +22,11 @@ class TextFileHelper { }) } - static refresh(fieldName: string, routeContext: string) { + static refresh(fieldName: string, routeContext: string, draftInputId: string) { const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext) urlBuilder.addQueryParameter("fieldName", fieldName) + this.addDraftId(urlBuilder, draftInputId); const url = urlBuilder.build(); postFormValues({url:url,success:function(html){ @@ -47,4 +49,11 @@ class TextFileHelper { valueElement.value = valueText; } } -} \ No newline at end of file + + private static addDraftId(urlBuilder: UrlBuilder, draftInputId: string) { + const draftInput = document.getElementById(draftInputId) as HTMLInputElement; + if (draftInput?.value) { + urlBuilder.addQueryParameter("draftId", draftInput.value); + } + } +} diff --git a/src/MasterData.Web/Scripts/UploadAreaOptions.ts b/src/MasterData.Web/Scripts/UploadAreaOptions.ts index b801735d3..94a76c590 100644 --- a/src/MasterData.Web/Scripts/UploadAreaOptions.ts +++ b/src/MasterData.Web/Scripts/UploadAreaOptions.ts @@ -38,15 +38,17 @@ class UploadAreaOptions { const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext) - const params = queryStringParams.split('&'); + const params = queryStringParams ? queryStringParams.split('&') : []; for (let i = 0; i < params.length; i++) { const param = params[i].split('='); const key = decodeURIComponent(param[0]); const value = decodeURIComponent(param[1]); - urlBuilder.addQueryParameter(key, value); + if (key) { + urlBuilder.addQueryParameter(key, value); + } } this.url = urlBuilder.build(); } } -} \ No newline at end of file +} diff --git a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js index 480bc4146..706377742 100644 --- a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js +++ b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js @@ -2835,10 +2835,11 @@ class TextAreaListener { } } class TextFileHelper { - static showUploadView(fieldName, title, routeContext) { + static showUploadView(fieldName, title, routeContext, draftInputId) { const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext); urlBuilder.addQueryParameter("fieldName", fieldName); + this.addDraftId(urlBuilder, draftInputId); const url = urlBuilder.build(); const modalId = fieldName + "-upload-modal"; const modal = new Modal(); @@ -2853,10 +2854,11 @@ class TextFileHelper { listenAllEvents("#" + modalId); }); } - static refresh(fieldName, routeContext) { + static refresh(fieldName, routeContext, draftInputId) { const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext); urlBuilder.addQueryParameter("fieldName", fieldName); + this.addDraftId(urlBuilder, draftInputId); const url = urlBuilder.build(); postFormValues({ url: url, success: function (html) { const uploadViewSelector = "#" + fieldName + "-upload-view"; @@ -2875,6 +2877,12 @@ class TextFileHelper { valueElement.value = valueText; } } + static addDraftId(urlBuilder, draftInputId) { + const draftInput = document.getElementById(draftInputId); + if (draftInput === null || draftInput === void 0 ? void 0 : draftInput.value) { + urlBuilder.addQueryParameter("draftId", draftInput.value); + } + } } class TooltipHelper { static dispose(selectorPrefix) { @@ -3000,12 +3008,14 @@ class UploadAreaOptions { let queryStringParams = element.getAttribute("query-string-params"); const urlBuilder = new UrlBuilder(); urlBuilder.addQueryParameter("routeContext", routeContext); - const params = queryStringParams.split('&'); + const params = queryStringParams ? queryStringParams.split('&') : []; for (let i = 0; i < params.length; i++) { const param = params[i].split('='); const key = decodeURIComponent(param[0]); const value = decodeURIComponent(param[1]); - urlBuilder.addQueryParameter(key, value); + if (key) { + urlBuilder.addQueryParameter(key, value); + } } this.url = urlBuilder.build(); } diff --git a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map index fcdbf9c50..ebdf46392 100644 --- a/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map +++ b/src/MasterData.Web/wwwroot/js/jjmasterdata/jjmasterdata.js.map @@ -1 +1 @@ -{"version":3,"file":"jjmasterdata.js","sourceRoot":"/Scripts/","sources":["ActionHelper.ts","AuditLogViewHelper.ts","CalendarListener.ts","CheckboxHelper.ts","CodeEditor.ts","CollapsePanelListener.ts","DataDictionaryUtils.ts","DataExportationHelper.ts","DataImportationHelper.ts","DataImportationModal.ts","DataPanelHelper.ts","DecimalPlaces.ts","FeedbackIcon.ts","FormViewHelper.ts","GlobalVariables.ts","GridViewFilterHelper.ts","GridViewHelper.ts","GridViewSelectionHelper.ts","HTMLHelper.ts","Index.ts","JQueryPlugins.ts","LegacySearchBoxListener.ts","ListenAllEvents.ts","Localization.ts","LookupHelper.ts","LookupListener.ts","MasterDataForm.ts","MessageBox.ts","MessageToast.ts","Modal.ts","OffcanvasHelper.ts","PageState.ts","PhoneInputListener.ts","PopoverHelper.ts","PostFormValues.ts","SearchBoxListener.ts","SliderListener.ts","SortableListener.ts","SpinnerOverlay.ts","TabNavListener.ts","TextAreaListener.ts","TextFileHelper.ts","TooltipHelper.ts","UploadAreaListener.ts","UploadAreaOptions.ts","UploadViewHelper.ts","UrlBuilder.ts","UrlRedirectModel.ts","Utils.ts","WindowPlugins.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jjmasterdata.js","sourceRoot":"/Scripts/","sources":["ActionHelper.ts","AuditLogViewHelper.ts","CalendarListener.ts","CheckboxHelper.ts","CodeEditor.ts","CollapsePanelListener.ts","DataDictionaryUtils.ts","DataExportationHelper.ts","DataImportationHelper.ts","DataImportationModal.ts","DataPanelHelper.ts","DecimalPlaces.ts","FeedbackIcon.ts","FormViewHelper.ts","GlobalVariables.ts","GridViewFilterHelper.ts","GridViewHelper.ts","GridViewSelectionHelper.ts","HTMLHelper.ts","Index.ts","JQueryPlugins.ts","LegacySearchBoxListener.ts","ListenAllEvents.ts","Localization.ts","LookupHelper.ts","LookupListener.ts","MasterDataForm.ts","MessageBox.ts","MessageToast.ts","Modal.ts","OffcanvasHelper.ts","PageState.ts","PhoneInputListener.ts","PopoverHelper.ts","PostFormValues.ts","SearchBoxListener.ts","SliderListener.ts","SortableListener.ts","SpinnerOverlay.ts","TabNavListener.ts","TextAreaListener.ts","TextFileHelper.ts","TooltipHelper.ts","UploadAreaListener.ts","UploadAreaOptions.ts","UploadViewHelper.ts","UrlBuilder.ts","UrlRedirectModel.ts","Utils.ts","WindowPlugins.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Plugins/MasterData.Pdf/PdfWriter.cs b/src/Plugins/MasterData.Pdf/PdfWriter.cs index d533c5bd8..d6ab838ab 100644 --- a/src/Plugins/MasterData.Pdf/PdfWriter.cs +++ b/src/Plugins/MasterData.Pdf/PdfWriter.cs @@ -22,7 +22,6 @@ using JJMasterData.Commons.Data.Entity.Repository; using JJMasterData.Commons.Data.Entity.Repository.Abstractions; using JJMasterData.Commons.Resources; -using JJMasterData.Commons.Security.Cryptography.Abstractions; using JJMasterData.Commons.Tasks; using JJMasterData.Core.Configuration.Options; using JJMasterData.Core.DataDictionary.Models; @@ -39,7 +38,6 @@ namespace JJMasterData.Pdf; public class PdfWriter( - IEncryptionService encryptionService, ExpressionsService expressionsService, IStringLocalizer stringLocalizer, IOptionsSnapshot options, @@ -47,7 +45,7 @@ public class PdfWriter( ILogger logger, IEntityRepository entityRepository, FieldFormattingService fieldFormattingService) - : DataExportationWriterBase(encryptionService,expressionsService, stringLocalizer, options, logger), IPdfWriter + : DataExportationWriterBase(expressionsService, stringLocalizer, options, logger), IPdfWriter { public event EventHandler OnRenderCell; public event AsyncEventHandler OnRenderCellAsync; @@ -231,7 +229,7 @@ private async Task CreateCellAsync(Dictionary row, FormElem if (field.Component == FormComponent.File) { - string url = GetFileLink(field, row, value); + string url = GetFileLink(FormElement, field, row, value); if (url != null) { diff --git a/test/MasterData.Core.Test/DataManager/IO/FormFileManagerTests.cs b/test/MasterData.Core.Test/DataManager/IO/FormFileManagerTests.cs new file mode 100644 index 000000000..a2d3dbbfe --- /dev/null +++ b/test/MasterData.Core.Test/DataManager/IO/FormFileManagerTests.cs @@ -0,0 +1,58 @@ +using System.Text; +using JJMasterData.Commons.Resources; +using JJMasterData.Core.DataManager.IO; +using JJMasterData.Core.DataManager.IO.Storage; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; +using Moq; + +namespace JJMasterData.Core.Test.DataManager.IO; + +public class FormFileManagerTests +{ + [Fact] + public async Task GetFilesAsync_WhenPreferTemporaryFiles_ReturnsOnlyTemporaryFiles() + { + var fileStorage = new DiskFileStorage(); + var temporaryUploadStore = new TemporaryDiskUploadStore(); + var draftId = Guid.NewGuid().ToString("N"); + var folderKey = Path.Combine(Path.GetTempPath(), "jjmasterdata-tests", Guid.NewGuid().ToString("N")); + var manager = new FormFileManager( + draftId, + temporaryUploadStore, + fileStorage, + Mock.Of>(), + Mock.Of>()) + { + AutoSave = false, + FolderKey = folderKey + }; + + try + { + await fileStorage.SaveAsync(folderKey, "old-file.txt", CreateStream("old"), true, TestContext.Current.CancellationToken); + await manager.CreateFileAsync(new FormFileContent + { + FileName = "new-file.txt", + Stream = CreateStream("new") + }, replaceIfExists: true); + + var allFiles = await manager.GetFilesAsync(); + var preferredFiles = await manager.GetFilesAsync(preferTemporaryFiles: true); + + Assert.Equal(["new-file.txt", "old-file.txt"], allFiles.Select(file => file.Content.FileName).Order()); + Assert.Equal(["new-file.txt"], preferredFiles.Select(file => file.Content.FileName)); + Assert.All(preferredFiles, file => Assert.True(file.IsTemporary)); + } + finally + { + await fileStorage.DeleteFolderAsync(folderKey, TestContext.Current.CancellationToken); + await temporaryUploadStore.DeleteFolderAsync(draftId, TestContext.Current.CancellationToken); + } + } + + private static MemoryStream CreateStream(string value) + { + return new MemoryStream(Encoding.UTF8.GetBytes(value)); + } +}