diff --git a/PARR.AIHIT/AIHIT/Syncher.cs b/PARR.AIHIT/AIHIT/Syncher.cs
index 5d128395..08ea8fb0 100644
--- a/PARR.AIHIT/AIHIT/Syncher.cs
+++ b/PARR.AIHIT/AIHIT/Syncher.cs
@@ -57,6 +57,7 @@ namespace PARR.AIHIT
{
await GetAppTypesAsync();
+
var messages = await mailService.CheckMailAsync(SearchQuery.NotSeen);
if (!messages.Any())
{
@@ -65,6 +66,7 @@ namespace PARR.AIHIT
var filtered = messages.Where(m => syncherSettings.IncludeAddressesArray.Any(i => m.Envelope.From.Mailboxes.FirstOrDefault()?.Address == i)).ToList();
var lastMessage = filtered.OrderByDescending(f => f.Date).First();
var attachments = await mailService.GetAttachmentsAsync(lastMessage);
+
foreach (var attachment in attachments)
{
if (attachment is MessagePart)
diff --git a/PARR.DAL/Models/ApplicationInHost.cs b/PARR.DAL/Models/ApplicationInHost.cs
index 0ca7c80a..969c03c0 100644
--- a/PARR.DAL/Models/ApplicationInHost.cs
+++ b/PARR.DAL/Models/ApplicationInHost.cs
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models
{
- [Table("ApplicationsinHosts")]
+ [Table("ApplicationsInHosts")]
public class ApplicationInHost : IBase
{
public Guid Id { get; set; }
diff --git a/PARR.DAL/PARR.DAL.csproj b/PARR.DAL/PARR.DAL.csproj
index 641b0411..92142b15 100644
--- a/PARR.DAL/PARR.DAL.csproj
+++ b/PARR.DAL/PARR.DAL.csproj
@@ -16,8 +16,4 @@
-
-
-
-
diff --git a/PARR.Mail/PARR.Mail/Services/IMailService.cs b/PARR.Mail/PARR.Mail/Services/IMailService.cs
index 1f06ea07..e8f29e4a 100644
--- a/PARR.Mail/PARR.Mail/Services/IMailService.cs
+++ b/PARR.Mail/PARR.Mail/Services/IMailService.cs
@@ -7,7 +7,7 @@ namespace PARR.Mail.Services
public interface IMailService
{
Task> CheckMailAsync(SearchQuery query);
- Task GetBodyPartAsync(IMessageSummary messageSummary);
+ Task GetBodyPartAsync(IMessageSummary messageSummary);
Task> GetAttachmentsAsync(IMessageSummary messageSummary);
Task GetBodyTextAsync(IMessageSummary messageSummary);
Task SetAsSeenAsync(IMessageSummary messageSummary);
diff --git a/PARR.Mail/PARR.Mail/Services/MailService.cs b/PARR.Mail/PARR.Mail/Services/MailService.cs
index 15e52961..95c84132 100644
--- a/PARR.Mail/PARR.Mail/Services/MailService.cs
+++ b/PARR.Mail/PARR.Mail/Services/MailService.cs
@@ -35,50 +35,86 @@ namespace PARR.Mail.Services
return items;
}
- public async Task GetBodyPartAsync(IMessageSummary messageSummary)
+ public async Task GetBodyPartAsync(IMessageSummary messageSummary)
{
- using var client = await GetClient();
+ try
+ {
+ using var client = await GetClient();
- return await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, messageSummary.TextBody);
+ return await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, messageSummary.TextBody);
+ }
+ catch (Exception e)
+ {
+ logger.LogError(e, "Ошибка получения тела письма");
+ }
+ return null;
}
public async Task> GetAttachmentsAsync(IMessageSummary messageSummary)
{
- using var client = await GetClient();
-
List result = new List();
- foreach (var attachment in messageSummary.Attachments)
+
+ try
{
- result.Add(await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, attachment));
+ using var client = await GetClient();
+ foreach (var attachment in messageSummary.Attachments)
+ {
+ result.Add(await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, attachment));
+ }
+ }
+ catch (Exception e)
+ {
+ logger.LogError(e, "Ошибка получения тела письма");
}
return result;
}
public async Task GetBodyTextAsync(IMessageSummary messageSummary)
{
- using var client = await GetClient();
- return ((TextPart)await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, messageSummary.TextBody)).Text;
+ try
+ {
+ using var client = await GetClient();
+
+ return ((TextPart)await client.Inbox.GetBodyPartAsync(messageSummary.UniqueId, messageSummary.TextBody)).Text;
+ }
+ catch (Exception e)
+ {
+ logger.LogError(e, "Ошибка содержания письма");
+ }
+ return string.Empty;
}
public async Task SetAsSeenAsync(IMessageSummary messageSummary)
{
- using var client = await GetClient();
+ try
+ {
+ using var client = await GetClient();
- await client.Inbox.AddFlagsAsync(messageSummary.UniqueId, MessageFlags.Seen, false);
+ await client.Inbox.AddFlagsAsync(messageSummary.UniqueId, MessageFlags.Seen, false);
+ }
+ catch (Exception e)
+ {
+ logger.LogError(e, "Не удалось сделать письмо прочитанным");
+ }
}
private async Task GetClient()
{
var client = new ImapClient();
- await client.ConnectAsync(mailSettings.Host, mailSettings.Port, SecureSocketOptions.None);
- await client.AuthenticateAsync(mailSettings.UserName, mailSettings.Password);
- await client.Inbox.OpenAsync(FolderAccess.ReadWrite);
-
- // игнорить сертификат
- client.CheckCertificateRevocation = false;
- client.ServerCertificateValidationCallback = (s, c, h, e) => true;
+ try
+ {
+ await client.ConnectAsync(mailSettings.Host, mailSettings.Port, SecureSocketOptions.None);
+ await client.AuthenticateAsync(mailSettings.UserName, mailSettings.Password);
+ await client.Inbox.OpenAsync(FolderAccess.ReadWrite);
+ // игнорить сертификат
+ client.CheckCertificateRevocation = false;
+ client.ServerCertificateValidationCallback = (s, c, h, e) => true;
+ }
+ catch(Exception e) {
+ logger.LogError(e, "Не удалось создать почтовый клиент");
+ }
return client;
}
}
diff --git a/PARR.Worker/PARR.Worker/Settings/WorkerSettings.cs b/PARR.Worker/PARR.Worker/Settings/WorkerSettings.cs
index 30645916..8575789a 100644
--- a/PARR.Worker/PARR.Worker/Settings/WorkerSettings.cs
+++ b/PARR.Worker/PARR.Worker/Settings/WorkerSettings.cs
@@ -2,6 +2,6 @@
{
public class WorkerSettings
{
- public int OccursEvery { get; set; }
+ public TimeSpan OccursEvery { get; set; }
}
}
diff --git a/PARR.Worker/PARR.Worker/Worker.cs b/PARR.Worker/PARR.Worker/Worker.cs
index f95cfb5f..c2e11170 100644
--- a/PARR.Worker/PARR.Worker/Worker.cs
+++ b/PARR.Worker/PARR.Worker/Worker.cs
@@ -24,6 +24,7 @@ namespace PARR.Worker
logger.LogInformation("--- Сервис запущен! ---");
while (!stoppingToken.IsCancellationRequested)
{
+ logger.LogInformation("--- --- --- --- Начало синхронизации --- --- --- ---");
using var scope = serviceProvider.CreateScope();
var services = scope.ServiceProvider;
var syncer = services.GetService();
@@ -36,7 +37,12 @@ namespace PARR.Worker
//await attachmentUploader.UploadAsync();
//logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
- await Task.Delay(workerSettings.OccursEvery, stoppingToken);
+ logger.LogInformation("=== === === === Конец синхронизации === === === ===");
+
+
+ var mills = (int?) workerSettings?.OccursEvery.TotalMilliseconds ?? 60*1000;
+ await Task.Delay(mills, stoppingToken);
+
}
}
}
diff --git a/PARR.Worker/PARR.Worker/appsettings.json b/PARR.Worker/PARR.Worker/appsettings.json
index 4e6dc96d..dcb20b3c 100644
--- a/PARR.Worker/PARR.Worker/appsettings.json
+++ b/PARR.Worker/PARR.Worker/appsettings.json
@@ -37,7 +37,7 @@
"IncludeAddresses": "aihit@gvc.rzd"
},
"WorkerSettings": {
- "OccursEvery": 60000
+ "OccursEvery": "00:10:00.0"
}
}