diff --git a/NoDuplicate/Form1.cs b/NoDuplicate/Form1.cs index f81058f..1c12da6 100644 --- a/NoDuplicate/Form1.cs +++ b/NoDuplicate/Form1.cs @@ -74,40 +74,45 @@ namespace NoDuplicate private List removedEmails = new List(); // Список для хранения удалённых адресов private string reportsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyAppReports"); // Путь к папке для отчётов - private void SaveReport() + private void SaveReport(List validEmails, List invalidEmails, List removedEmails) { try { - // Проверяем и создаём директорию, если её нет if (!Directory.Exists(reportsDirectory)) { Directory.CreateDirectory(reportsDirectory); } - // Проверяем, есть ли удалённые адреса - if (removedEmails.Count == 0) - { - MessageBox.Show("Нет удалённых адресов для отчёта.", "Информация"); - return; - } - - // Формируем имя файла отчёта - string reportFileName = $"RemovedEmailsReport_{DateTime.Now:yyyyMMdd_HHmmss}.txt"; + string reportFileName = $"EmailReport_{DateTime.Now:yyyyMMdd_HHmmss}.txt"; string reportPath = Path.Combine(reportsDirectory, reportFileName); - // Записываем данные в файл using (StreamWriter writer = new StreamWriter(reportPath)) { - writer.WriteLine($"Отчёт о удалённых адресах ({DateTime.Now}):"); - writer.WriteLine($"Всего удалено: {removedEmails.Count}"); - writer.WriteLine("Список удалённых адресов:"); + writer.WriteLine($"Отчёт о проверке email-адресов ({DateTime.Now}):"); + + writer.WriteLine("\nКорректные email:"); + writer.WriteLine($"Всего корректных адресов: {validEmails.Count}"); + foreach (var email in validEmails) + { + writer.WriteLine(email); + } + + writer.WriteLine("\nНевалидные email:"); + writer.WriteLine($"Всего невалидных адресов: {invalidEmails.Count}"); + foreach (var email in invalidEmails) + { + writer.WriteLine(email); + } + + writer.WriteLine("\nУдалённые дубликаты:"); + writer.WriteLine($"Всего удалено дубликатов: {removedEmails.Count}"); foreach (var email in removedEmails) { writer.WriteLine(email); } } - //MessageBox.Show($"Отчёт сохранён в папке: {reportsDirectory}", "Успех"); + MessageBox.Show($"Отчёт сохранён в папке: {reportsDirectory}", "Успех"); } catch (Exception ex) { @@ -116,6 +121,9 @@ namespace NoDuplicate } + + + private void btnRemoveDuplicates_Click(object sender, EventArgs e) { if (emailTable == null || emailTable.Rows.Count == 0) @@ -131,7 +139,11 @@ namespace NoDuplicate .Select(row => row.Field("Email").Trim()) .ToList(); - var distinctEmails = allEmails.Distinct(StringComparer.OrdinalIgnoreCase).ToList(); + // Проверяем валидность email + var validEmails = allEmails.Where(email => IsValidEmail(email)).ToList(); + var invalidEmails = allEmails.Except(validEmails).ToList(); + + var distinctEmails = validEmails.Distinct(StringComparer.OrdinalIgnoreCase).ToList(); removedEmails = allEmails .GroupBy(email => email, StringComparer.OrdinalIgnoreCase) @@ -147,7 +159,8 @@ namespace NoDuplicate dataGridView1.DataSource = emailTable; - SaveReport(); + // Передаем все три списка в метод SaveReport + SaveReport(validEmails, invalidEmails, removedEmails); // Обновляем сообщение на форме lblStatus.Text = $"Удаление завершено! Удалено {removedEmails.Count} адрес(ов).";