using System.IO; using System.Threading.Tasks; using ComplianceNFs.Core.Entities; using ComplianceNFs.Core.Ports; using System; using System.IO; namespace ComplianceNFs.Infrastructure.Archiving { // Moves files to archive folders by status public class FileArchiver : IFileArchiver { private readonly string _basePath; public FileArchiver(string basePath) { _basePath = basePath; } public async Task ArchiveAsync(EnergyInvoice invoice, byte[] rawFile) { // Create subfolder for invoice.Status var statusFolder = Path.Combine(_basePath, invoice.Status.ToString()); if (!Directory.Exists(statusFolder)) { Directory.CreateDirectory(statusFolder); } // Build file path var filePath = Path.Combine(statusFolder, invoice.Filename); // Write file (overwrite if exists) await File.WriteAllBytesAsync(filePath, rawFile); } } }