From 6f9ffe6875adb203c872fbeec9dce80017f1fb6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=96=D0=B5=D0=BB=D0=BE=D0=BD=D0=BA=D0=B8=D0=BD=20=D0=94?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=81?= Date: Fri, 24 Jan 2025 14:08:12 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B0=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20+=20=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NoDuplicate/Form1.cs | 49 ++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 18 deletions(-) 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} адрес(ов).";