Forráskód Böngészése

attachment fileName with Time

zinab_elgendy 3 hónapja
szülő
commit
a740415369

+ 1 - 1
MTWorkHR.API/Program.cs

@@ -41,7 +41,7 @@ var config = new AppSettingsConfiguration();
 // Add services to the container.
 builder.Services.AddDbContext<HRDataContext>(options =>
 {
-    options.UseSqlServer(config.ConnectionStrings.LocalConnectionString);
+    options.UseSqlServer(config.ConnectionStrings.MTWorkHRConnectionString);
     //  options.UseSqlServer(builder.Configuration.GetSection("ConnectionStrings:MTWorkHRConnectionString").Value);
 });
 

+ 1 - 0
MTWorkHR.Application/Dtos/Identity/AttachmentResponseDto.cs

@@ -7,6 +7,7 @@ namespace MTWorkHR.Application.Models
 {
     public class AttachmentResponseDto 
     {
+        public string? OriginalName { get; set; }
         public string? FileName { get; set; }
 
         public string? FilePath { get; set; }

+ 47 - 36
MTWorkHR.Application/Services/Base/BlobFileService.cs

@@ -30,24 +30,33 @@ namespace MTWorkHR.Application.Services
             _containerClient.CreateIfNotExists();
             _logger = logger;
         }
+
         public async Task<AttachmentResponseDto> UploadFile(IFormFile file)
         {
             AttachmentResponseDto result = new AttachmentResponseDto();
             try
             {
-                var blobClient = _containerClient.GetBlobClient(file.FileName);
+                string uniqueFileName = GenerateUniqueFileName(file.FileName);
+                var blobClient = _containerClient.GetBlobClient(uniqueFileName);
+
                 if (blobClient != null)
                 {
+                    if (blobClient.ExistsAsync().Result)
+                    {
+                        uniqueFileName = GenerateUniqueFileName(file.FileName);
+                    }
                     var status = await blobClient.UploadAsync(file.OpenReadStream(), true);
-                    //if(status.Value == "201")
-                    result.FileName = file.FileName;
+                    result.OriginalName = file.FileName;
+                    result.FileName = uniqueFileName;
                     result.FilePath = blobClient.Uri.AbsoluteUri;
                     return result;
-                }else
+                }
+                else
                     return result;
             }
             catch (Exception ex)
             {
+                _logger.LogError(ex.Message);
                 return result;
             }
         }
@@ -55,34 +64,60 @@ namespace MTWorkHR.Application.Services
         {
             try
             {
-                var blobClient = _containerClient.GetBlobClient(file.FileName);
-                if(blobClient != null)
+                // Generate a unique file name to avoid overwriting
+                string uniqueFileName = GenerateUniqueFileName(file.FileName);
+                var blobClient = _containerClient.GetBlobClient(uniqueFileName);
+
+                if (blobClient != null)
                 {
-                    //var stream = file.FileData.OpenReadStream();
+                    if (blobClient.ExistsAsync().Result)
+                    {
+                        uniqueFileName = GenerateUniqueFileName(file.FileName);
+                    }
                     using (Stream fs = file.FileData.OpenReadStream())
                     {
-                        var status = await blobClient.UploadAsync(fs, true);
+                        // Upload the file to blob storage
+                        await blobClient.UploadAsync(fs, true);
                         fs.Position = 0;
+
                         using (BinaryReader br = new BinaryReader(fs))
                         {
                             byte[] bytes = br.ReadBytes((Int32)fs.Length);
-                            var Headers = file.FileData.Headers;
+                            var headers = file.FileData.Headers;
                             file.Content = bytes;
                             file.ContentType = file.FileData.ContentType;
                             file.FilePath = blobClient.Uri.AbsoluteUri;
+                            file.OriginalName = file.FileName;
+                            file.FileName = uniqueFileName;
                         }
                     }
-                    //if(status.Value == "201")
                     return blobClient.Uri.AbsoluteUri;
-                }else
+                }
+                else
+                {
                     return "";
-
+                }
             }
             catch (Exception ex)
             {
+                // Log the exception for debugging (e.g., using ILogger)
                 return "";
             }
         }
+
+        // Helper method to generate a unique file name
+        private string GenerateUniqueFileName(string originalFileName)
+        {
+            // Extract file name and extension
+            string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(originalFileName);
+            string extension = Path.GetExtension(originalFileName);
+
+            // Append a unique identifier (e.g., timestamp or GUID)
+            string uniqueIdentifier = DateTime.UtcNow.Ticks.ToString(); // or Guid.NewGuid().ToString()
+            return $"{fileNameWithoutExtension}_{uniqueIdentifier}{extension}";
+        }
+
+
         public async Task<AttachmentResponseDto> UploadFile(byte[] pdfBytes, string fileName)
         {
             AttachmentResponseDto result = new AttachmentResponseDto();
@@ -157,30 +192,6 @@ namespace MTWorkHR.Application.Services
             }
             return msgs;
         }
-        public async Task<Tuple<bool, string>> UploadFile2(IFormFile file)
-        {
-            try
-            {
-                var blobClient = _containerClient.GetBlobClient(file.FileName);
-                var status = await blobClient.UploadAsync(file.OpenReadStream(), true);
-                return new Tuple<bool, string>(true, "");// = "File uploaded successfully.";
-            }
-            catch (Exception ex)
-            {
-                return new Tuple<bool, string>(false, ex.Message);
-            }
-        }
-        public async Task<List<Tuple<bool, string>>> UploadFiles2(List<IFormFile> files)
-        {
-            List<Tuple<bool, string>> msgs = new List<Tuple<bool, string>>();
-            foreach (var formFile in files)
-            {
-                msgs.Add( await UploadFile2(formFile));
-            }
-            return msgs;
-        }
-
-    
         
         public async Task<bool> Delete(string fileName)
         {

+ 1 - 1
MTWorkHR.Infrastructure/InfrastructureServiceRegistration.cs

@@ -32,7 +32,7 @@ namespace MTWorkHR.Infrastructure
             
             services.AddDbContext<HRDataContext>(options =>
                 options.UseSqlServer(
-                    config.ConnectionStrings.LocalConnectionString  //configuration.GetSection("ConnectionString:MTWorkHRConnectionString").Value
+                    config.ConnectionStrings.MTWorkHRConnectionString  //configuration.GetSection("ConnectionString:MTWorkHRConnectionString").Value
                     ));
            
             services.AddIdentity<ApplicationUser, ApplicationRole>().AddEntityFrameworkStores<HRDataContext>().AddDefaultTokenProviders();