From 2c4cb0dbb2255720268bc86a4d88e9e15796c75f Mon Sep 17 00:00:00 2001 From: Viltskaa Date: Mon, 24 Apr 2023 00:10:19 +0400 Subject: [PATCH] Complete lab 7 --- SushiBar/SushiBar.sln | 3 +++ SushiBar/SushiBar/App.config | 4 ++-- SushiBar/SushiBar/Program.cs | 1 + .../BusinessLogics/ClientLogic.cs | 2 +- .../BusinessLogics/MessageInfoLogic.cs | 1 - .../BusinessLogics/OrderLogic.cs | 12 +++++++++--- .../MailWorker/AbstractMailWorker.cs | 7 ++++++- .../MailWorker/MailKitWorker.cs | 4 ++-- .../Implements/ClientStorage.cs | 7 +++++++ 9 files changed, 31 insertions(+), 10 deletions(-) diff --git a/SushiBar/SushiBar.sln b/SushiBar/SushiBar.sln index c65a447..687ab57 100644 --- a/SushiBar/SushiBar.sln +++ b/SushiBar/SushiBar.sln @@ -31,6 +31,7 @@ Global {DB81A759-B157-477C-9281-EE358968519D}.Debug|Any CPU.Build.0 = Debug|Any CPU {DB81A759-B157-477C-9281-EE358968519D}.Release|Any CPU.ActiveCfg = Release|Any CPU {DB81A759-B157-477C-9281-EE358968519D}.Release|Any CPU.Build.0 = Release|Any CPU + {DB81A759-B157-477C-9281-EE358968519D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {CFB2D9F9-EA44-4E61-B6BE-5A2AA3C6AF07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CFB2D9F9-EA44-4E61-B6BE-5A2AA3C6AF07}.Debug|Any CPU.Build.0 = Debug|Any CPU {CFB2D9F9-EA44-4E61-B6BE-5A2AA3C6AF07}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -59,10 +60,12 @@ Global {0ADB6C71-701C-43A7-869C-A92D7C36C4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU {0ADB6C71-701C-43A7-869C-A92D7C36C4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {0ADB6C71-701C-43A7-869C-A92D7C36C4EC}.Release|Any CPU.Build.0 = Release|Any CPU + {0ADB6C71-701C-43A7-869C-A92D7C36C4EC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {BF58D50B-0408-4124-8CD3-1D5DFEE83104}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF58D50B-0408-4124-8CD3-1D5DFEE83104}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF58D50B-0408-4124-8CD3-1D5DFEE83104}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF58D50B-0408-4124-8CD3-1D5DFEE83104}.Release|Any CPU.Build.0 = Release|Any CPU + {BF58D50B-0408-4124-8CD3-1D5DFEE83104}.Debug|Any CPU.Deploy.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SushiBar/SushiBar/App.config b/SushiBar/SushiBar/App.config index 18a0b0f..c6f4192 100644 --- a/SushiBar/SushiBar/App.config +++ b/SushiBar/SushiBar/App.config @@ -5,7 +5,7 @@ - - + + \ No newline at end of file diff --git a/SushiBar/SushiBar/Program.cs b/SushiBar/SushiBar/Program.cs index 2a63d55..9324ad2 100644 --- a/SushiBar/SushiBar/Program.cs +++ b/SushiBar/SushiBar/Program.cs @@ -67,6 +67,7 @@ namespace SushiBar services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/SushiBar/SushiBarBusinessLogic/BusinessLogics/ClientLogic.cs b/SushiBar/SushiBarBusinessLogic/BusinessLogics/ClientLogic.cs index 092962b..3f345f8 100644 --- a/SushiBar/SushiBarBusinessLogic/BusinessLogics/ClientLogic.cs +++ b/SushiBar/SushiBarBusinessLogic/BusinessLogics/ClientLogic.cs @@ -92,7 +92,7 @@ public class ClientLogic : IClientLogic throw new ArgumentException("Invalid format for email", nameof(model.Email)); 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)) - throw new ArgumentException("Invalid format for email", nameof(model.Password)); + throw new ArgumentException("Invalid format for password", nameof(model.Password)); _logger.LogInformation("Client .FIO:{ClientFio} .EMAIL:{Email} .Password:{Password} .Id:{Id}", model.ClientFio, model.Email, model.Password, model.Id); var client = _clientStorage.GetElement(new ClientSearchModel diff --git a/SushiBar/SushiBarBusinessLogic/BusinessLogics/MessageInfoLogic.cs b/SushiBar/SushiBarBusinessLogic/BusinessLogics/MessageInfoLogic.cs index 31233cb..0abf566 100644 --- a/SushiBar/SushiBarBusinessLogic/BusinessLogics/MessageInfoLogic.cs +++ b/SushiBar/SushiBarBusinessLogic/BusinessLogics/MessageInfoLogic.cs @@ -24,7 +24,6 @@ public class MessageInfoLogic : IMessageInfoLogic _logger.LogWarning("Insert operation failed"); return false; - } public List? ReadList(MessageInfoSearchModel? model) diff --git a/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs b/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs index 24a5720..c6ea26c 100644 --- a/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs @@ -57,9 +57,15 @@ namespace SushiBarBusinessLogic.BusinessLogics model.Status = OrderStatus.Accepted; - if (_orderStorage.Insert(model) != null) return true; - _logger.LogWarning("Insert operation failed"); - return false; + var result = _orderStorage.Insert(model); + if (result == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + + SendOrderMessage(result.ClientId, $"Sushi Bar, Order №{result.Id}", $"Order №{result.Id} date {result.DateCreate} with sum on {result.Sum:0.00} accepted"); + return true; } public bool DeliveryOrder(OrderBindingModel model) diff --git a/SushiBar/SushiBarBusinessLogic/MailWorker/AbstractMailWorker.cs b/SushiBar/SushiBarBusinessLogic/MailWorker/AbstractMailWorker.cs index a21a3e4..bd75d31 100644 --- a/SushiBar/SushiBarBusinessLogic/MailWorker/AbstractMailWorker.cs +++ b/SushiBar/SushiBarBusinessLogic/MailWorker/AbstractMailWorker.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.SearchModels; namespace SushiBarBusinessLogic.MailWorker; @@ -14,12 +15,15 @@ public abstract class AbstractMailWorker protected int _popPort; private readonly IMessageInfoLogic _messageInfoLogic; private readonly ILogger _logger; + private readonly IClientLogic _clientLogic; public AbstractMailWorker(ILogger logger, - IMessageInfoLogic messageInfoLogic) + IMessageInfoLogic messageInfoLogic, + IClientLogic clientLogic) { _logger = logger; _messageInfoLogic = messageInfoLogic; + _clientLogic = clientLogic; } public void MailConfig(MailConfigBindingModel config) { @@ -72,6 +76,7 @@ public abstract class AbstractMailWorker _logger.LogDebug("Check Mail: {Count} new mails", list.Count); foreach (var mail in list) { + mail.ClientId = _clientLogic.ReadElement(new ClientSearchModel { Email = mail.SenderName })?.Id; _messageInfoLogic.Create(mail); } } diff --git a/SushiBar/SushiBarBusinessLogic/MailWorker/MailKitWorker.cs b/SushiBar/SushiBarBusinessLogic/MailWorker/MailKitWorker.cs index f7ab7c4..215231f 100644 --- a/SushiBar/SushiBarBusinessLogic/MailWorker/MailKitWorker.cs +++ b/SushiBar/SushiBarBusinessLogic/MailWorker/MailKitWorker.cs @@ -13,8 +13,8 @@ namespace SushiBarBusinessLogic.MailWorker; public class MailKitWorker : AbstractMailWorker { public MailKitWorker(ILogger logger, - IMessageInfoLogic messageInfoLogic) - : base(logger, messageInfoLogic) {} + IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) + : base(logger, messageInfoLogic, clientLogic) {} protected override async Task SendMailAsync(MailSendInfoBindingModel info) { diff --git a/SushiBar/SushiBarDatabaseImplement/Implements/ClientStorage.cs b/SushiBar/SushiBarDatabaseImplement/Implements/ClientStorage.cs index f7c3e41..9d86dab 100644 --- a/SushiBar/SushiBarDatabaseImplement/Implements/ClientStorage.cs +++ b/SushiBar/SushiBarDatabaseImplement/Implements/ClientStorage.cs @@ -54,6 +54,13 @@ public class ClientStorage : IClientStorage ?.GetViewModel; } + if (!string.IsNullOrEmpty(model.Email)) + { + return context.Clients + .FirstOrDefault(x => x.Email == model.Email) + ?.GetViewModel; + } + return context.Clients .FirstOrDefault(x => x.Email == model.Email && x.Password == model.Password) ?.GetViewModel;