using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using LanDiscovery.Models; namespace LanDiscovery.Services { public class ExportService { public async Task ExportToCsvAsync(IEnumerable devices, string filePath) { var sb = new StringBuilder(); sb.AppendLine("IP Address,MAC Address,Vendor,Hostname,Type,Ping (ms),Status,First Seen,Last Seen"); foreach (var device in devices) { sb.AppendLine($"{device.IpAddress},{device.MacAddress},{Escape(device.Vendor)},{Escape(device.Hostname)},{device.DeviceTypeHint},{device.PingMs},{(device.IsPingAlive ? "Online" : "Unknown")},{device.FirstSeen},{device.LastSeen}"); } await File.WriteAllTextAsync(filePath, sb.ToString()); } private string Escape(string? input) { if (string.IsNullOrEmpty(input)) return ""; if (input.Contains(",") || input.Contains("\"") || input.Contains("\n")) { return $"\"{input.Replace("\"", "\"\"")}\""; } return input; } } }