using System;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace ProviderApp
{
    public static class CsvExporter
    {
        public static void ExportToCsv(DataTable dataTable, string fileName)
        {
            try
            {
                var sb = new StringBuilder();

                // Заголовки
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    sb.Append("\"" + dataTable.Columns[i].ColumnName + "\"");
                    if (i < dataTable.Columns.Count - 1) sb.Append(";");
                }
                sb.AppendLine();

                // Данные
                foreach (DataRow row in dataTable.Rows)
                {
                    for (int i = 0; i < dataTable.Columns.Count; i++)
                    {
                        sb.Append("\"" + row[i].ToString().Replace("\"", "\"\"") + "\"");
                        if (i < dataTable.Columns.Count - 1) sb.Append(";");
                    }
                    sb.AppendLine();
                }

                var saveFileDialog = new SaveFileDialog
                {
                    Filter = "CSV files (*.csv)|*.csv",
                    FileName = fileName.Replace(".xlsx", ".csv"),
                    DefaultExt = "csv"
                };

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllText(saveFileDialog.FileName, sb.ToString(), Encoding.UTF8);
                    MessageBox.Show($"Экспорт в CSV завершён!\nФайл сохранён: {saveFileDialog.FileName}", "Успех",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Ошибка экспорта: {ex.Message}", "Ошибка",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}