diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/ClientLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ClientLogic.cs index 05e9e8b..7391511 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/ClientLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ClientLogic.cs @@ -90,33 +90,29 @@ namespace LawFirmBusinessLogic.BusinessLogics private void CheckModel(ClientBindingModel model, bool withParams = true) { - if (model == null) - { - throw new ArgumentNullException(nameof(model)); - } - if (!withParams) - { - return; - } - if (string.IsNullOrEmpty(model.ClientFIO)) - { - throw new ArgumentNullException("Нет фио клиента", nameof(model.ClientFIO)); - } - if (string.IsNullOrEmpty(model.Email)) - { - throw new ArgumentNullException("Нет логина клиента", nameof(model.Email)); - } - if (string.IsNullOrEmpty(model.Password)) + if (model == null) { - throw new ArgumentNullException("У клиента отсутствует пароль", nameof(model.Email)); + throw new ArgumentNullException(nameof(model)); } - if (!Regex.IsMatch(model.Email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$", RegexOptions.IgnoreCase)) + if (!withParams) { - throw new ArgumentException("Неправильно введенный email", nameof(model.Email)); + return; } - if (!Regex.IsMatch(model.Password, @"^^((\w+\d+\W+)|(\w+\W+\d+)|(\d+\w+\W+)|(\d+\W+\w+)|(\W+\w+\d+)|(\W+\d+\w+))[\w\d\W]*$", RegexOptions.IgnoreCase)) + if (string.IsNullOrEmpty(model.ClientFIO)) { - throw new ArgumentException("Неправильно введенный пароль", nameof(model.Password)); + throw new ArgumentNullException("Нет фио клиента", nameof(model.ClientFIO)); + } + if (string.IsNullOrEmpty(model.Email)) + { + throw new ArgumentNullException("Нет логина клиента", nameof(model.Email)); + } + if (!Regex.IsMatch(model.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")) + { + throw new ArgumentException("Некорретно введенный email", nameof(model.Email)); + } + if (!Regex.IsMatch(model.Password, @"^(?=.*\d)(?=.*\W)(?=.*[^\d\s]).+$")) + { + throw new ArgumentException("Некорректно введенный пароль. Пароль должен содержать хотя бы одну букву, цифру и не буквенный символ", nameof(model.Password)); } _logger.LogInformation("Client. ClientID:{Id}. ClientFIO: {ClientFIO}. Email:{ Email}. Password: { Password}", model.Id, model.ClientFIO, model.Email, model.Password); var element = _clientStorage.GetElement(new ClientSearchModel diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/MessageInfoLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/MessageInfoLogic.cs index 4b436ee..8657308 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/MessageInfoLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/MessageInfoLogic.cs @@ -16,12 +16,12 @@ namespace LawFirmBusinessLogic.BusinessLogics { private readonly ILogger _logger; private readonly IMessageInfoStorage _messageInfoStorage; - public MessageInfoLogic(ILogger logger, - IMessageInfoStorage messageInfoStorage) + public MessageInfoLogic(ILogger logger, IMessageInfoStorage MessageInfoStorage) { _logger = logger; - _messageInfoStorage = messageInfoStorage; + _messageInfoStorage = MessageInfoStorage; } + public bool Create(MessageInfoBindingModel model) { if (_messageInfoStorage.Insert(model) == null) @@ -34,8 +34,9 @@ namespace LawFirmBusinessLogic.BusinessLogics public List? ReadList(MessageInfoSearchModel? model) { - _logger.LogInformation("ReadList. ClientId:{ClientId}. MessageId:{MessageId}", model?.ClientId, model?.MessageId); - var list = model == null ? _messageInfoStorage.GetFullList() : _messageInfoStorage.GetFilteredList(model); + _logger.LogInformation("ReadList. MessageId:{MessageId}.ClientId:{ClientId} ", model?.MessageId, model?.ClientId); + var list = (model == null) ? _messageInfoStorage.GetFullList() + : _messageInfoStorage.GetFilteredList(model); if (list == null) { _logger.LogWarning("ReadList return null list"); diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs index d68a8a0..4977397 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs @@ -7,6 +7,7 @@ using LawFirmContracts.StoragesContracts; using LawFirmContracts.ViewModels; using LawFirmDataModels.Enums; using Microsoft.Extensions.Logging; +using static Org.BouncyCastle.Crypto.Engines.SM2Engine; namespace LawFirmBusinessLogic.BusinessLogics { @@ -17,9 +18,9 @@ namespace LawFirmBusinessLogic.BusinessLogics private readonly AbstractMailWorker _mailWorker; private readonly IClientLogic _clientLogic; public OrderLogic(ILogger logger, - IOrderStorage orderStorage, - AbstractMailWorker mailWorker, - IClientLogic clientLogic) + IOrderStorage orderStorage, + AbstractMailWorker mailWorker, + IClientLogic clientLogic) { _logger = logger; _orderStorage = orderStorage; @@ -35,47 +36,45 @@ namespace LawFirmBusinessLogic.BusinessLogics return false; } model.Status = OrderStatus.Принят; - var result = _orderStorage.Insert(model); + var result = _orderStorage.Insert(model); if (result == null) - { - model.Status = OrderStatus.Неизвестен; - _logger.LogWarning("Insert operation failed"); - return false; - } - SendOrderMessage(result.ClientId, - $"Юра, Заказ №{result.Id}", - $"Заказ №{result.Id} от {result.DateCreate} на сумму {result.Sum:0.00} принят"); + { + _logger.LogWarning("Insert operation failed"); + return false; + } + SendOrderStatusMail(result.ClientId, $"Новый заказ создан. Номер заказа #{result.Id}", $"Заказ #{result.Id} от {result.DateCreate} на сумму {result.Sum:0.00} принят"); return true; } public bool StatusUpdate(OrderBindingModel model, OrderStatus newStatus) { - var viewModel = _orderStorage.GetElement(new OrderSearchModel { Id = model.Id }); - if (viewModel.Status + 1 != newStatus) + var viewModel = _orderStorage.GetElement(new() { Id = model.Id }); + if (viewModel == null) { - _logger.LogWarning("Status update to " + newStatus.ToString() + " operation failed. Order status incorrect."); - return false; + throw new ArgumentNullException(nameof(model)); + } + if ((int)viewModel.Status + 1 != (int)newStatus) + { + throw new InvalidOperationException($"Попытка перевести заказ не в следующий статус"); } model.Status = newStatus; - if (viewModel.ImplementerId.HasValue) - { - model.ImplementerId = viewModel.ImplementerId; - } - if (model.Status == OrderStatus.Готов) model.DateImplement = DateTime.Now; - else - { + model.DateCreate = viewModel.DateCreate; + if (model.DateImplement == null) model.DateImplement = viewModel.DateImplement; - } + if (viewModel.ImplementerId.HasValue) + model.ImplementerId = viewModel.ImplementerId; + model.DocumentId = viewModel.DocumentId; + model.Sum = viewModel.Sum; + model.Count = viewModel.Count; CheckModel(model); var result = _orderStorage.Update(model); if (result == null) { - model.Status--; _logger.LogWarning("Update operation failed"); return false; } - SendOrderMessage(result.ClientId, $"Верфь, Заказ №{result.Id}", $"Заказ №{model.Id} изменен статус на {result.Status}"); + SendOrderStatusMail(result.ClientId, $"Изменен статус заказа #{result.Id}", $"Заказ #{model.Id} изменен статус на {result.Status}"); return true; - } + } public bool DeliveryOrder(OrderBindingModel model) { return StatusUpdate(model, OrderStatus.Выдан); @@ -144,7 +143,7 @@ namespace LawFirmBusinessLogic.BusinessLogics nameof(model.Sum)); } } - private bool SendOrderMessage(int clientId, string subject, string text) + private bool SendOrderStatusMail(int clientId, string subject, string text) { var client = _clientLogic.ReadElement(new() { Id = clientId }); if (client == null) diff --git a/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs b/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs index 7d895fc..90ed11b 100644 --- a/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs +++ b/LawFirm/LawFirmBusinessLogic/MailWorker/AbstractMailWorker.cs @@ -12,24 +12,29 @@ namespace LawFirmBusinessLogic.MailWorker public abstract class AbstractMailWorker { protected string _mailLogin = string.Empty; + protected string _mailPassword = string.Empty; + protected string _smtpClientHost = string.Empty; + protected int _smtpClientPort; + protected string _popHost = string.Empty; + protected int _popPort; private readonly IMessageInfoLogic _messageInfoLogic; private readonly IClientLogic _clientLogic; private readonly ILogger _logger; - public AbstractMailWorker(ILogger logger, - IMessageInfoLogic messageInfoLogic, - IClientLogic clientLogic) + + public AbstractMailWorker(ILogger logger, IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) { _logger = logger; _messageInfoLogic = messageInfoLogic; _clientLogic = clientLogic; } + public void MailConfig(MailConfigBindingModel config) { _mailLogin = config.MailLogin; @@ -38,44 +43,47 @@ namespace LawFirmBusinessLogic.MailWorker _smtpClientPort = config.SmtpClientPort; _popHost = config.PopHost; _popPort = config.PopPort; - _logger.LogDebug("Config: {login}, {password}, {clientHost}, { clientPOrt}, { popHost}, { popPort}", - _mailLogin, _mailPassword, _smtpClientHost, _smtpClientPort, _popHost, _popPort); + _logger.LogDebug("Config: {login}, {password}, {clientHost}, {clientPOrt}, {popHost}, {popPort}", _mailLogin, _mailPassword, _smtpClientHost, _smtpClientPort, _popHost, _popPort); } + public async void MailSendAsync(MailSendInfoBindingModel info) { - if (string.IsNullOrEmpty(_mailLogin) || - string.IsNullOrEmpty(_mailPassword)) + if (string.IsNullOrEmpty(_mailLogin) || string.IsNullOrEmpty(_mailPassword)) { return; } + if (string.IsNullOrEmpty(_smtpClientHost) || _smtpClientPort == 0) { return; } - if (string.IsNullOrEmpty(info.MailAddress) || - string.IsNullOrEmpty(info.Subject) || string.IsNullOrEmpty(info.Text)) + + if (string.IsNullOrEmpty(info.MailAddress) || string.IsNullOrEmpty(info.Subject) || string.IsNullOrEmpty(info.Text)) { return; } - _logger.LogDebug("Send Mail: {To}, {Subject}", info.MailAddress, - info.Subject); + + _logger.LogDebug("Send Mail: {To}, {Subject}", info.MailAddress, info.Subject); await SendMailAsync(info); } + public async void MailCheck() { - if (string.IsNullOrEmpty(_mailLogin) || - string.IsNullOrEmpty(_mailPassword)) + if (string.IsNullOrEmpty(_mailLogin) || string.IsNullOrEmpty(_mailPassword)) { return; } + if (string.IsNullOrEmpty(_popHost) || _popPort == 0) { return; } + if (_messageInfoLogic == null) { return; } + var list = await ReceiveMailAsync(); _logger.LogDebug("Check Mail: {Count} new mails", list.Count); foreach (var mail in list) @@ -84,7 +92,9 @@ namespace LawFirmBusinessLogic.MailWorker _messageInfoLogic.Create(mail); } } + protected abstract Task SendMailAsync(MailSendInfoBindingModel info); + protected abstract Task> ReceiveMailAsync(); } } diff --git a/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs b/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs index c69abfa..b9ca0c3 100644 --- a/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs +++ b/LawFirm/LawFirmBusinessLogic/MailWorker/MailKitWorker.cs @@ -6,17 +6,14 @@ using System.Net; using System.Text; using MailKit.Net.Pop3; using MailKit.Security; -using LawFirmBusinessLogic.BusinessLogics; namespace LawFirmBusinessLogic.MailWorker { public class MailKitWorker : AbstractMailWorker { - public MailKitWorker(ILogger logger, - IMessageInfoLogic messageInfoLogic, - IClientLogic clientLogic) : base(logger, messageInfoLogic, clientLogic) { } - protected override async Task SendMailAsync(MailSendInfoBindingModel - info) + public MailKitWorker(ILogger logger, IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) : base(logger, messageInfoLogic, clientLogic) { } + + protected override async Task SendMailAsync(MailSendInfoBindingModel info) { using var objMailMessage = new MailMessage(); using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); @@ -32,8 +29,8 @@ namespace LawFirmBusinessLogic.MailWorker objSmtpClient.UseDefaultCredentials = false; objSmtpClient.EnableSsl = true; objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; - objSmtpClient.Credentials = new NetworkCredential(_mailLogin, - _mailPassword); + objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); + await Task.Run(() => objSmtpClient.Send(objMailMessage)); } catch (Exception) @@ -41,6 +38,7 @@ namespace LawFirmBusinessLogic.MailWorker throw; } } + protected override async Task> ReceiveMailAsync() { var list = new List(); @@ -78,3 +76,4 @@ namespace LawFirmBusinessLogic.MailWorker } } } + diff --git a/LawFirm/LawFirmClientApp/Controllers/HomeController.cs b/LawFirm/LawFirmClientApp/Controllers/HomeController.cs index c96b48c..7527944 100644 --- a/LawFirm/LawFirmClientApp/Controllers/HomeController.cs +++ b/LawFirm/LawFirmClientApp/Controllers/HomeController.cs @@ -153,7 +153,7 @@ namespace LawFirmClientApp.Controllers return Redirect("~/Home/Enter"); } return View(APIClient - .GetRequest>($"api/client/getmessages?clientId ={APIClient.Client.Id}")); + .GetRequest>($"api/client/getmessages?clientId={APIClient.Client.Id}")); } } } \ No newline at end of file diff --git a/LawFirm/LawFirmDatabaseImplement/Implements/MessageInfoStorage.cs b/LawFirm/LawFirmDatabaseImplement/Implements/MessageInfoStorage.cs index e3ef264..038e082 100644 --- a/LawFirm/LawFirmDatabaseImplement/Implements/MessageInfoStorage.cs +++ b/LawFirm/LawFirmDatabaseImplement/Implements/MessageInfoStorage.cs @@ -8,22 +8,19 @@ namespace LawFirmDatabaseImplement.Implements { public class MessageInfoStorage : IMessageInfoStorage { + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { - if (string.IsNullOrEmpty(model.MessageId)) - { - return null; - } using var context = new LawFirmDatabase(); - return context.Messages - .FirstOrDefault(x => x.MessageId == model.MessageId)? - .GetViewModel; + if (model.MessageId != null) + { + return context.Messages.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel; + } + return null; } public List GetFilteredList(MessageInfoSearchModel model) { - if (!model.ClientId.HasValue) - return new(); using var context = new LawFirmDatabase(); return context.Messages .Where(x => x.ClientId == model.ClientId) @@ -35,15 +32,15 @@ namespace LawFirmDatabaseImplement.Implements { using var context = new LawFirmDatabase(); return context.Messages - .Select(x => x.GetViewModel) - .ToList(); + .Select(x => x.GetViewModel) + .ToList(); } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { using var context = new LawFirmDatabase(); var newMessage = Message.Create(model); - if (newMessage == null) + if (newMessage == null || context.Messages.Any(x => x.MessageId.Equals(model.MessageId))) { return null; } diff --git a/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs b/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs index fec8b61..c4b183c 100644 --- a/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs +++ b/LawFirm/LawFirmDatabaseImplement/LawFirmDatabase.cs @@ -12,7 +12,7 @@ namespace LawFirmDatabaseImplement optionsBuilder.UseNpgsql(@" Host=localhost; Port=5432; - Database=RPPLab7fix; + Database=RPPLab7OneMore; Username=postgres; Password=123"); } diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.Designer.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.Designer.cs deleted file mode 100644 index 0814e05..0000000 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.Designer.cs +++ /dev/null @@ -1,257 +0,0 @@ -// -using System; -using LawFirmDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace LawFirmDatabaseImplement.Migrations -{ - [DbContext(typeof(LawFirmDatabase))] - [Migration("20230410191616_Lab6")] - partial class Lab6 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Blank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BlankName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Price") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.ToTable("Blanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Document", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DocumentName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Price") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.ToTable("Documents"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.DocumentBlank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BlankId") - .HasColumnType("integer"); - - b.Property("Count") - .HasColumnType("integer"); - - b.Property("DocumentId") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.HasIndex("BlankId"); - - b.HasIndex("DocumentId"); - - b.ToTable("DocumentBlanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Implementer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ImplementerFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.Property("Qualification") - .HasColumnType("integer"); - - b.Property("WorkExperience") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.ToTable("Implementers"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientId") - .HasColumnType("integer"); - - b.Property("Count") - .HasColumnType("integer"); - - b.Property("DateCreate") - .HasColumnType("timestamp with time zone"); - - b.Property("DateImplement") - .HasColumnType("timestamp with time zone"); - - b.Property("DocumentId") - .HasColumnType("integer"); - - b.Property("ImplementerId") - .HasColumnType("integer"); - - b.Property("Status") - .HasColumnType("integer"); - - b.Property("Sum") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.HasIndex("DocumentId"); - - b.HasIndex("ImplementerId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.DocumentBlank", b => - { - b.HasOne("LawFirmDatabaseImplement.Models.Blank", "Blank") - .WithMany("DocumentBlanks") - .HasForeignKey("BlankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Document", "Document") - .WithMany("Blanks") - .HasForeignKey("DocumentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Blank"); - - b.Navigation("Document"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Order", b => - { - b.HasOne("LawFirmDatabaseImplement.Models.Client", "Client") - .WithMany("Orders") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Document", "Document") - .WithMany("Orders") - .HasForeignKey("DocumentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Orders") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Document"); - - b.Navigation("Implementer"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Blank", b => - { - b.Navigation("DocumentBlanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Document", b => - { - b.Navigation("Blanks"); - - b.Navigation("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Implementer", b => - { - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.Designer.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.Designer.cs deleted file mode 100644 index 5daf035..0000000 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.Designer.cs +++ /dev/null @@ -1,285 +0,0 @@ -// -using System; -using LawFirmDatabaseImplement; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace LawFirmDatabaseImplement.Migrations -{ - [DbContext(typeof(LawFirmDatabase))] - [Migration("20230424180205_lab7")] - partial class lab7 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.3") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Blank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BlankName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Price") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.ToTable("Blanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Document", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DocumentName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Price") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.ToTable("Documents"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.DocumentBlank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BlankId") - .HasColumnType("integer"); - - b.Property("Count") - .HasColumnType("integer"); - - b.Property("DocumentId") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.HasIndex("BlankId"); - - b.HasIndex("DocumentId"); - - b.ToTable("DocumentBlanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Implementer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ImplementerFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.Property("Qualification") - .HasColumnType("integer"); - - b.Property("WorkExperience") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.ToTable("Implementers"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Message", b => - { - b.Property("MessageId") - .HasColumnType("text"); - - b.Property("Body") - .IsRequired() - .HasColumnType("text"); - - b.Property("ClientId") - .HasColumnType("integer"); - - b.Property("DateDelivery") - .HasColumnType("timestamp with time zone"); - - b.Property("SenderName") - .IsRequired() - .HasColumnType("text"); - - b.Property("Subject") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("MessageId"); - - b.ToTable("Messages"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientId") - .HasColumnType("integer"); - - b.Property("Count") - .HasColumnType("integer"); - - b.Property("DateCreate") - .HasColumnType("timestamp with time zone"); - - b.Property("DateImplement") - .HasColumnType("timestamp with time zone"); - - b.Property("DocumentId") - .HasColumnType("integer"); - - b.Property("ImplementerId") - .HasColumnType("integer"); - - b.Property("Status") - .HasColumnType("integer"); - - b.Property("Sum") - .HasColumnType("double precision"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.HasIndex("DocumentId"); - - b.HasIndex("ImplementerId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.DocumentBlank", b => - { - b.HasOne("LawFirmDatabaseImplement.Models.Blank", "Blank") - .WithMany("DocumentBlanks") - .HasForeignKey("BlankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Document", "Document") - .WithMany("Blanks") - .HasForeignKey("DocumentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Blank"); - - b.Navigation("Document"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Order", b => - { - b.HasOne("LawFirmDatabaseImplement.Models.Client", "Client") - .WithMany("Orders") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Document", "Document") - .WithMany("Orders") - .HasForeignKey("DocumentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("LawFirmDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Orders") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Document"); - - b.Navigation("Implementer"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Blank", b => - { - b.Navigation("DocumentBlanks"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Client", b => - { - b.Navigation("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Document", b => - { - b.Navigation("Blanks"); - - b.Navigation("Orders"); - }); - - modelBuilder.Entity("LawFirmDatabaseImplement.Models.Implementer", b => - { - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.cs deleted file mode 100644 index 9d0105c..0000000 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424180205_lab7.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace LawFirmDatabaseImplement.Migrations -{ - /// - public partial class lab7 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Messages", - columns: table => new - { - MessageId = table.Column(type: "text", nullable: false), - ClientId = table.Column(type: "integer", nullable: true), - SenderName = table.Column(type: "text", nullable: false), - DateDelivery = table.Column(type: "timestamp with time zone", nullable: false), - Subject = table.Column(type: "text", nullable: false), - Body = table.Column(type: "text", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Messages", x => x.MessageId); - }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable(name: "Messages"); - } - } -} diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.cs deleted file mode 100644 index 1ca6a45..0000000 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace LawFirmDatabaseImplement.Migrations -{ - /// - public partial class lab7fix : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateIndex( - name: "IX_Messages_ClientId", - table: "Messages", - column: "ClientId"); - - migrationBuilder.AddForeignKey( - name: "FK_Messages_Clients_ClientId", - table: "Messages", - column: "ClientId", - principalTable: "Clients", - principalColumn: "Id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Messages_Clients_ClientId", - table: "Messages"); - - migrationBuilder.DropIndex( - name: "IX_Messages_ClientId", - table: "Messages"); - } - } -} diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.Designer.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.Designer.cs similarity index 99% rename from LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.Designer.cs rename to LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.Designer.cs index 04edacb..b1141fd 100644 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.Designer.cs +++ b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.Designer.cs @@ -12,8 +12,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace LawFirmDatabaseImplement.Migrations { [DbContext(typeof(LawFirmDatabase))] - [Migration("20230424191450_lab7fix2")] - partial class lab7fix2 + [Migration("20230424220206_lab7")] + partial class lab7 { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.cs similarity index 85% rename from LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.cs rename to LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.cs index 60794d6..7c87588 100644 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230410191616_Lab6.cs +++ b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424220206_lab7.cs @@ -7,7 +7,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace LawFirmDatabaseImplement.Migrations { /// - public partial class Lab6 : Migration + public partial class lab7 : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) @@ -71,6 +71,27 @@ namespace LawFirmDatabaseImplement.Migrations table.PrimaryKey("PK_Implementers", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Messages", + columns: table => new + { + MessageId = table.Column(type: "text", nullable: false), + ClientId = table.Column(type: "integer", nullable: true), + SenderName = table.Column(type: "text", nullable: false), + DateDelivery = table.Column(type: "timestamp with time zone", nullable: false), + Subject = table.Column(type: "text", nullable: false), + Body = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Messages", x => x.MessageId); + table.ForeignKey( + name: "FK_Messages_Clients_ClientId", + column: x => x.ClientId, + principalTable: "Clients", + principalColumn: "Id"); + }); + migrationBuilder.CreateTable( name: "DocumentBlanks", columns: table => new @@ -145,6 +166,11 @@ namespace LawFirmDatabaseImplement.Migrations table: "DocumentBlanks", column: "DocumentId"); + migrationBuilder.CreateIndex( + name: "IX_Messages_ClientId", + table: "Messages", + column: "ClientId"); + migrationBuilder.CreateIndex( name: "IX_Orders_ClientId", table: "Orders", @@ -167,6 +193,9 @@ namespace LawFirmDatabaseImplement.Migrations migrationBuilder.DropTable( name: "DocumentBlanks"); + migrationBuilder.DropTable( + name: "Messages"); + migrationBuilder.DropTable( name: "Orders"); diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.Designer.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.Designer.cs similarity index 99% rename from LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.Designer.cs rename to LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.Designer.cs index bd4477b..4b50b7a 100644 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191229_lab7fix.Designer.cs +++ b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace LawFirmDatabaseImplement.Migrations { [DbContext(typeof(LawFirmDatabase))] - [Migration("20230424191229_lab7fix")] + [Migration("20230424222203_lab7fix")] partial class lab7fix { /// diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.cs similarity index 89% rename from LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.cs rename to LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.cs index 057c3d7..d480748 100644 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230424191450_lab7fix2.cs +++ b/LawFirm/LawFirmDatabaseImplement/Migrations/20230424222203_lab7fix.cs @@ -5,7 +5,7 @@ namespace LawFirmDatabaseImplement.Migrations { /// - public partial class lab7fix2 : Migration + public partial class lab7fix : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) diff --git a/LawFirm/LawFirmDatabaseImplement/Models/Message.cs b/LawFirm/LawFirmDatabaseImplement/Models/Message.cs index 32b111f..8ec883b 100644 --- a/LawFirm/LawFirmDatabaseImplement/Models/Message.cs +++ b/LawFirm/LawFirmDatabaseImplement/Models/Message.cs @@ -24,6 +24,7 @@ namespace LawFirmDatabaseImplement.Models public string Subject { get; private set; } = string.Empty; public string Body { get; private set; } = string.Empty; + public Client? Client { get; private set; } public static Message? Create(MessageInfoBindingModel model) @@ -39,7 +40,7 @@ namespace LawFirmDatabaseImplement.Models ClientId = model.ClientId, MessageId = model.MessageId, SenderName = model.SenderName, - DateDelivery = model.DateDelivery, + DateDelivery = DateTime.SpecifyKind(model.DateDelivery, DateTimeKind.Utc), }; } diff --git a/LawFirm/LawFirmFileImplement/Models/Message.cs b/LawFirm/LawFirmFileImplement/Models/Message.cs index 576164b..c377edd 100644 --- a/LawFirm/LawFirmFileImplement/Models/Message.cs +++ b/LawFirm/LawFirmFileImplement/Models/Message.cs @@ -37,7 +37,7 @@ namespace LawFirmFileImplement.Models ClientId = model.ClientId, MessageId = model.MessageId, SenderName = model.SenderName, - DateDelivery = model.DateDelivery, + DateDelivery = DateTime.SpecifyKind(model.DateDelivery, DateTimeKind.Utc), }; } diff --git a/LawFirm/LawFirmRestApi/Controllers/ClientController.cs b/LawFirm/LawFirmRestApi/Controllers/ClientController.cs index 42a6e4a..9ab91a0 100644 --- a/LawFirm/LawFirmRestApi/Controllers/ClientController.cs +++ b/LawFirm/LawFirmRestApi/Controllers/ClientController.cs @@ -81,3 +81,4 @@ namespace LawFirmRestApi.Controllers } } } + diff --git a/LawFirm/LawFirmRestApi/Program.cs b/LawFirm/LawFirmRestApi/Program.cs index 470b120..df9ab40 100644 --- a/LawFirm/LawFirmRestApi/Program.cs +++ b/LawFirm/LawFirmRestApi/Program.cs @@ -23,7 +23,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); -builder.Services.AddTransient(); +builder.Services.AddSingleton(); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle diff --git a/LawFirm/LawFirmView/FormMails.Designer.cs b/LawFirm/LawFirmView/FormMails.Designer.cs deleted file mode 100644 index 5452409..0000000 --- a/LawFirm/LawFirmView/FormMails.Designer.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace LawFirmView -{ - partial class FormMails - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.dataGridView = new System.Windows.Forms.DataGridView(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); - this.SuspendLayout(); - // - // dataGridView - // - this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView.Location = new System.Drawing.Point(12, 12); - this.dataGridView.Name = "dataGridView"; - this.dataGridView.RowTemplate.Height = 25; - this.dataGridView.Size = new System.Drawing.Size(548, 426); - this.dataGridView.TabIndex = 0; - // - // FormMails - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(572, 450); - this.Controls.Add(this.dataGridView); - this.Name = "FormMails"; - this.Text = "FormMails"; - this.Load += new System.EventHandler(this.FormMails_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private DataGridView dataGridView; - } -} \ No newline at end of file diff --git a/LawFirm/LawFirmView/FormMain.cs b/LawFirm/LawFirmView/FormMain.cs index 4fdb289..686d4d6 100644 --- a/LawFirm/LawFirmView/FormMain.cs +++ b/LawFirm/LawFirmView/FormMain.cs @@ -232,8 +232,8 @@ e) private void MailToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormMails)); - if (service is FormMails form) + var service = Program.ServiceProvider?.GetService(typeof(FormViewMail)); + if (service is FormViewMail form) { form.ShowDialog(); } diff --git a/LawFirm/LawFirmView/FormViewMail.Designer.cs b/LawFirm/LawFirmView/FormViewMail.Designer.cs new file mode 100644 index 0000000..531efb7 --- /dev/null +++ b/LawFirm/LawFirmView/FormViewMail.Designer.cs @@ -0,0 +1,62 @@ +namespace LawFirmView +{ + partial class FormViewMail + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + dataGridView = new DataGridView(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // dataGridView + // + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.Name = "dataGridView"; + dataGridView.RowTemplate.Height = 25; + dataGridView.Size = new Size(803, 450); + dataGridView.TabIndex = 0; + // + // FormViewMail + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Name = "FormViewMail"; + Text = "Письма"; + Load += FormViewMail_Load; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/LawFirm/LawFirmView/FormMails.cs b/LawFirm/LawFirmView/FormViewMail.cs similarity index 73% rename from LawFirm/LawFirmView/FormMails.cs rename to LawFirm/LawFirmView/FormViewMail.cs index 637b89d..a92a138 100644 --- a/LawFirm/LawFirmView/FormMails.cs +++ b/LawFirm/LawFirmView/FormViewMail.cs @@ -1,4 +1,5 @@ -using LawFirmContracts.BusinessLogicsContracts; +using LawFirmBusinessLogic.MailWorker; +using LawFirmContracts.BusinessLogicsContracts; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; @@ -12,19 +13,19 @@ using System.Windows.Forms; namespace LawFirmView { - public partial class FormMails : Form + public partial class FormViewMail : Form { private readonly ILogger _logger; private readonly IMessageInfoLogic _logic; - public FormMails(ILogger logger, IMessageInfoLogic logic) + public FormViewMail(ILogger logger, IMessageInfoLogic logic) { InitializeComponent(); _logger = logger; _logic = logic; } - private void FormMails_Load(object sender, EventArgs e) + private void FormViewMail_Load(object sender, EventArgs e) { try { @@ -36,7 +37,7 @@ namespace LawFirmView dataGridView.Columns["MessageId"].Visible = false; dataGridView.Columns["Body"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } - _logger.LogInformation("Загрузка писем"); + _logger.LogInformation("Загрузка списка писем"); } catch (Exception ex) { diff --git a/LawFirm/LawFirmView/FormMails.resx b/LawFirm/LawFirmView/FormViewMail.resx similarity index 100% rename from LawFirm/LawFirmView/FormMails.resx rename to LawFirm/LawFirmView/FormViewMail.resx diff --git a/LawFirm/LawFirmView/Program.cs b/LawFirm/LawFirmView/Program.cs index e05d43a..aa030dd 100644 --- a/LawFirm/LawFirmView/Program.cs +++ b/LawFirm/LawFirmView/Program.cs @@ -31,8 +31,7 @@ namespace LawFirmView try { - var mailSender = - _serviceProvider.GetService(); + var mailSender = _serviceProvider.GetService(); mailSender?.MailConfig(new MailConfigBindingModel { MailLogin = @@ -90,7 +89,7 @@ namespace LawFirmView services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddSingleton(); services.AddTransient(); services.AddTransient(); @@ -104,8 +103,9 @@ namespace LawFirmView services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); } - private static void MailCheck(object obj) => ServiceProvider?.GetService()?.MailCheck(); + private static void MailCheck(object obj) => ServiceProvider? + .GetService()?.MailCheck(); } } \ No newline at end of file