using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DocumentFormat.OpenXml.Spreadsheet; namespace GB5Shared.FileUpload { public class FileStorage { private readonly string _root; public FileStorage() { // WINDOWS UNC PATH TO SERVER B _root = @"\\172.16.200.39\E$\Unisoft\GB5Index"; Directory.CreateDirectory(_root); } public async Task SaveAsync(Stream stream, string fileName, string folder) { try { var id = Guid.NewGuid().ToString(); var dir = Path.Combine(_root, folder); Directory.CreateDirectory(dir); var fullPath = Path.Combine(dir, $"{id}_{fileName}"); using var fs = new FileStream( fullPath, FileMode.Create, FileAccess.Write, FileShare.None ); await stream.CopyToAsync(fs); return id; } catch (Exception ex) { throw new Exception("Error saving file", ex); } } } public class UploadResponse { public bool Success { get; set; } public string FileId { get; set; } = ""; public string Message { get; set; } = ""; public static UploadResponse Ok(string id) => new() { Success = true, FileId = id, Message = "File saved" }; public static UploadResponse Fail(string msg) => new() { Success = false, Message = msg }; } }