Проверка на валидность + отчет

This commit is contained in:
Желонкин Денис 2025-01-24 14:08:12 +07:00
parent 1540e13d57
commit 6f9ffe6875

View File

@ -74,40 +74,45 @@ namespace NoDuplicate
private List<string> removedEmails = new List<string>(); // Список для хранения удалённых адресов
private string reportsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyAppReports"); // Путь к папке для отчётов
private void SaveReport()
private void SaveReport(List<string> validEmails, List<string> invalidEmails, List<string> 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<string>("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} адрес(ов).";