Проверка на валидность + отчет
This commit is contained in:
parent
1540e13d57
commit
6f9ffe6875
@ -74,40 +74,45 @@ namespace NoDuplicate
|
|||||||
private List<string> removedEmails = new List<string>(); // Список для хранения удалённых адресов
|
private List<string> removedEmails = new List<string>(); // Список для хранения удалённых адресов
|
||||||
private string reportsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyAppReports"); // Путь к папке для отчётов
|
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
|
try
|
||||||
{
|
{
|
||||||
// Проверяем и создаём директорию, если её нет
|
|
||||||
if (!Directory.Exists(reportsDirectory))
|
if (!Directory.Exists(reportsDirectory))
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(reportsDirectory);
|
Directory.CreateDirectory(reportsDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, есть ли удалённые адреса
|
string reportFileName = $"EmailReport_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
||||||
if (removedEmails.Count == 0)
|
|
||||||
{
|
|
||||||
MessageBox.Show("Нет удалённых адресов для отчёта.", "Информация");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Формируем имя файла отчёта
|
|
||||||
string reportFileName = $"RemovedEmailsReport_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
|
||||||
string reportPath = Path.Combine(reportsDirectory, reportFileName);
|
string reportPath = Path.Combine(reportsDirectory, reportFileName);
|
||||||
|
|
||||||
// Записываем данные в файл
|
|
||||||
using (StreamWriter writer = new StreamWriter(reportPath))
|
using (StreamWriter writer = new StreamWriter(reportPath))
|
||||||
{
|
{
|
||||||
writer.WriteLine($"Отчёт о удалённых адресах ({DateTime.Now}):");
|
writer.WriteLine($"Отчёт о проверке email-адресов ({DateTime.Now}):");
|
||||||
writer.WriteLine($"Всего удалено: {removedEmails.Count}");
|
|
||||||
writer.WriteLine("Список удалённых адресов:");
|
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)
|
foreach (var email in removedEmails)
|
||||||
{
|
{
|
||||||
writer.WriteLine(email);
|
writer.WriteLine(email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//MessageBox.Show($"Отчёт сохранён в папке: {reportsDirectory}", "Успех");
|
MessageBox.Show($"Отчёт сохранён в папке: {reportsDirectory}", "Успех");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -116,6 +121,9 @@ namespace NoDuplicate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void btnRemoveDuplicates_Click(object sender, EventArgs e)
|
private void btnRemoveDuplicates_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (emailTable == null || emailTable.Rows.Count == 0)
|
if (emailTable == null || emailTable.Rows.Count == 0)
|
||||||
@ -131,7 +139,11 @@ namespace NoDuplicate
|
|||||||
.Select(row => row.Field<string>("Email").Trim())
|
.Select(row => row.Field<string>("Email").Trim())
|
||||||
.ToList();
|
.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
|
removedEmails = allEmails
|
||||||
.GroupBy(email => email, StringComparer.OrdinalIgnoreCase)
|
.GroupBy(email => email, StringComparer.OrdinalIgnoreCase)
|
||||||
@ -147,7 +159,8 @@ namespace NoDuplicate
|
|||||||
|
|
||||||
dataGridView1.DataSource = emailTable;
|
dataGridView1.DataSource = emailTable;
|
||||||
|
|
||||||
SaveReport();
|
// Передаем все три списка в метод SaveReport
|
||||||
|
SaveReport(validEmails, invalidEmails, removedEmails);
|
||||||
|
|
||||||
// Обновляем сообщение на форме
|
// Обновляем сообщение на форме
|
||||||
lblStatus.Text = $"Удаление завершено! Удалено {removedEmails.Count} адрес(ов).";
|
lblStatus.Text = $"Удаление завершено! Удалено {removedEmails.Count} адрес(ов).";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user