From da1ee4dc02f70e8253467fbd96c47b0556e62a9d Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Sat, 20 May 2023 01:43:20 +0400 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9F=D0=98=D0=A1=D0=AC=D0=9C=D0=9E=20?= =?UTF-8?q?=D0=9E=D0=A2=D0=9F=D0=A0=D0=90=D0=92=D0=9B=D0=95=D0=9D=D0=9D?= =?UTF-8?q?=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/MessageInfoLogic.cs | 33 ----- .../BusinessLogics/ReportClientLogic.cs | 40 +++++- .../MailWorker/AbstractMailWorker.cs | 107 --------------- .../MailWorker/MailKitWorker.cs | 122 ++++++++---------- .../Controllers/HomeController.cs | 5 +- .../BindingModels/MailConfigBindingModel.cs | 2 + .../BindingModels/MailSendInfoBindingModel.cs | 10 +- .../BindingModels/ReportBindingModel.cs | 3 + .../IMessageInfoLogic.cs | 20 --- .../ViewModels/FileViewModel.cs | 17 +++ .../Enums/MailsEnum.cs | 15 +++ .../Implements/ClientStorage.cs | 8 ++ .../Controllers/ReportController.cs | 4 +- .../BankYouBankruptRestAPI/Program.cs | 8 +- .../BankYouBankruptRestAPI/appsettings.json | 8 +- .../Отчёт_по_картам.pdf | Bin 36066 -> 36073 bytes 16 files changed, 161 insertions(+), 241 deletions(-) delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs delete mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs delete mode 100644 BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs create mode 100644 BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs create mode 100644 BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs deleted file mode 100644 index b98f5f0..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/MessageInfoLogic.cs +++ /dev/null @@ -1,33 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using BankYouBankruptContracts.BusinessLogicsContracts; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.BusinessLogics -{ - public class MessageInfoLogic : IMessageInfoLogic - { - private readonly ILogger _logger; - - //private readonly IMessageInfoStorage _messageInfoStorage; - - public MessageInfoLogic(ILogger logger) - { - _logger = logger; - } - - public bool Create(MessageInfoBindingModel model) - { - throw new NotImplementedException(); - } - - public bool Update(MessageInfoBindingModel model) - { - throw new NotImplementedException(); - } - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs index f08fe3b..b1bee23 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs @@ -13,6 +13,12 @@ using BankYouBankruptContracts.ViewModels.Client.Reports; using BankYouBankruptContracts.ViewModels; using BankYouBankruptDataModels.Enums; using BankYouBankruptContracts.ViewModels.Client.Default; +using DocumentFormat.OpenXml.Wordprocessing; +using System.Net.Mail; +using System.Reflection.PortableExecutable; +using Spire.Pdf.Graphics; +using DocumentFormat.OpenXml.Packaging; +using BankYouBankruptBusinessLogic.MailWorker; namespace BankYouBankruptBusinessLogic.BusinessLogics { @@ -22,23 +28,30 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics private readonly IDebitingStorage _debitingStorage; private readonly ICardStorage _cardStorage; private readonly IMoneyTransferStorage _moneyTransferStorage; + private readonly IClientStorage _clientStorage; private readonly AbstractSaveToExcel _saveToExcel; private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; + private readonly MailKitWorker _mailKitWorker; + public ReportClientLogic(ICreditingStorage creditingStorage, IDebitingStorage debitingStorage, AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf, - ICardStorage cardStorage, IMoneyTransferStorage moneyTransferStorage) + ICardStorage cardStorage, IMoneyTransferStorage moneyTransferStorage, + MailKitWorker mailKitWorker, IClientStorage clientStorage) { _creditingStorage = creditingStorage; _debitingStorage = debitingStorage; _cardStorage = cardStorage; _moneyTransferStorage = moneyTransferStorage; + _clientStorage = clientStorage; _saveToExcel = saveToExcel; _saveToWord = saveToWord; _saveToPdf = saveToPdf; + + _mailKitWorker = mailKitWorker; } public List? GetCrediting(ReportBindingModel model) @@ -136,7 +149,16 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return totalList; } - public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) + public string GetClientEmail(ReportBindingModel model) + { + return _clientStorage.GetElement(new ClientSearchModel + { + Id = model.ClientId + }).Email; + } + + + public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) { if(operationEnum == OfficeOperationEnum.Между_cчетами) { @@ -216,7 +238,19 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics DateTo = model.DateTo!.Value, ReportCrediting = listCreditings, ReportDebiting = listDebitings - }); + }); + + byte[] pdf = System.IO.File.ReadAllBytes("C:\\Users\\Programmist73\\Desktop\\Практика\\2-й курс\\4-й семестр\\CourseWork_BankYouBankrupt\\BankYouBankrupt\\BankYouBankruptRestAPI\\Отчёт_по_картам.pdf"); + + _mailKitWorker.SendMailAsync(new() + { + MailAddress = GetClientEmail(model), + Subject = "Отчёт по картам", + Text = $"За период с {model.DateFrom} " + + $"по {model.DateTo}.", + File = pdf, + Role = model.Role + }); //возврат полученных списков для отображения на вебе return new ReportClientViewModelForHTML diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs deleted file mode 100644 index 1efa243..0000000 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/AbstractMailWorker.cs +++ /dev/null @@ -1,107 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using BankYouBankruptContracts.BusinessLogicsContracts; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptBusinessLogic.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) - { - _logger = logger; - _messageInfoLogic = messageInfoLogic; - _clientLogic = clientLogic; - } - - public void MailConfig(MailConfigBindingModel config) - { - _mailLogin = config.MailLogin; - _mailPassword = config.MailPassword; - _smtpClientHost = config.SmtpClientHost; - _smtpClientPort = config.SmtpClientPort; - _popHost = config.PopHost; - _popPort = config.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)) - { - return; - } - - if (string.IsNullOrEmpty(_smtpClientHost) || _smtpClientPort == 0) - { - return; - } - - if (string.IsNullOrEmpty(info.MailAddress) || string.IsNullOrEmpty(info.Subject) || string.IsNullOrEmpty(info.Text)) - { - return; - } - - _logger.LogDebug("Send Mail: {To}, {Subject}", info.MailAddress, info.Subject); - - await SendMailAsync(info); - } - - public async void MailCheck() - { - 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) - { - mail.ClientId = _clientLogic.ReadElement(new() { Email = mail.SenderName })?.Id; - - _messageInfoLogic.Create(mail); - } - } - - protected abstract Task SendMailAsync(MailSendInfoBindingModel info); - - protected abstract Task> ReceiveMailAsync(); - } -} diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs index 4786eaa..78670ef 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/MailWorker/MailKitWorker.cs @@ -10,82 +10,72 @@ using System.Text; using System.Threading.Tasks; using MailKit.Net.Pop3; using MailKit.Security; +using BankYouBankruptDataModels.Enums; namespace BankYouBankruptBusinessLogic.MailWorker { - public class MailKitWorker : AbstractMailWorker + //класс, отвечающий за отправку письма + public class MailKitWorker { - public MailKitWorker(ILogger logger, IMessageInfoLogic messageInfoLogic, IClientLogic clientLogic) - : base(logger, messageInfoLogic, clientLogic) { } + private string _mailLogin = string.Empty; - protected override async Task SendMailAsync(MailSendInfoBindingModel info) + private string _mailPassword = string.Empty; + + private string _smtpClientHost = string.Empty; + + private int _smtpClientPort; + + private readonly ILogger logger; + + public MailKitWorker(ILogger logger) + { + this.logger = logger; + } + + public void MailConfig(MailConfigBindingModel config) + { + _mailLogin = config.MailLogin; + _mailPassword = config.MailPassword; + _smtpClientHost = config.SmtpClientHost; + _smtpClientPort = config.SmtpClientPort; + } + + public async void SendMailAsync(MailSendInfoBindingModel info) { - using var objMailMessage = new MailMessage(); + using var objMailMessage = new MailMessage(); + using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); - using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort); + try + { + objMailMessage.From = new MailAddress(_mailLogin); + objMailMessage.To.Add(new MailAddress(info.MailAddress)); + objMailMessage.Subject = info.Subject; + objMailMessage.Body = info.Text; + objMailMessage.SubjectEncoding = Encoding.UTF8; + objMailMessage.BodyEncoding = Encoding.UTF8; - try - { - objMailMessage.From = new MailAddress(_mailLogin); - objMailMessage.To.Add(new MailAddress(info.MailAddress)); - objMailMessage.Subject = info.Subject; - objMailMessage.Body = info.Text; - objMailMessage.SubjectEncoding = Encoding.UTF8; - objMailMessage.BodyEncoding = Encoding.UTF8; + MemoryStream ms = new(info.File); - objSmtpClient.UseDefaultCredentials = false; - objSmtpClient.EnableSsl = true; - objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; - objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); + if(info.Role == MailsEnum.Клиент) + { + objMailMessage.Attachments.Add(new Attachment(ms, "Отчёт_по_картам.pdf", "application/pdf")); + } + else + { + objMailMessage.Attachments.Add(new Attachment(ms, "Отчёт_по_счетам.pdf", "application/pdf")); + } - await Task.Run(() => objSmtpClient.Send(objMailMessage)); - } - catch (Exception) - { - throw; - } - } + objSmtpClient.UseDefaultCredentials = false; + objSmtpClient.EnableSsl = true; + objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + objSmtpClient.Credentials = new NetworkCredential(_mailLogin, _mailPassword); - protected override async Task> ReceiveMailAsync() - { - var list = new List(); - - using var client = new Pop3Client(); - - await Task.Run(() => - { - try - { - client.Connect(_popHost, _popPort, SecureSocketOptions.SslOnConnect); - - client.Authenticate(_mailLogin, _mailPassword); - - for (int i = 0; i < client.Count; i++) - { - var message = client.GetMessage(i); - - foreach (var mail in message.From.Mailboxes) - { - list.Add(new MessageInfoBindingModel - { - DateDelivery = message.Date.DateTime, - MessageId = message.MessageId, - SenderName = mail.Address, - Subject = message.Subject, - Body = message.TextBody - }); - } - } - } - catch (AuthenticationException) - { } - finally - { - client.Disconnect(true); - } - }); - - return list; - } + await Task.Run(() => objSmtpClient.Send(objMailMessage)); + } + catch (Exception) + { + throw; + } + } } } diff --git a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs index 94582cb..bde8d4e 100644 --- a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs @@ -306,7 +306,7 @@ namespace BankYouBankruptClientApp.Controllers } [HttpPost] - public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo) + public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo, int clientId) { if (APIClient.Client == null) { @@ -318,7 +318,8 @@ namespace BankYouBankruptClientApp.Controllers return View(APIClient.PostRequestReport("api/Report/CreateClientReport", new ReportSupportBindingModel() { DateFrom = dateFrom, - DateTo = dateTo + DateTo = dateTo, + ClientId = clientId })); } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs index a369088..2e56009 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailConfigBindingModel.cs @@ -17,8 +17,10 @@ namespace BankYouBankruptContracts.BindingModels public int SmtpClientPort { get; set; } + //можно без них? public string PopHost { get; set; } = string.Empty; + //можно без них? public int PopPort { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs index 94139b5..1dcef09 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/MailSendInfoBindingModel.cs @@ -1,4 +1,5 @@ -using System; +using BankYouBankruptDataModels.Enums; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -14,5 +15,10 @@ namespace BankYouBankruptContracts.BindingModels public string Subject { get; set; } = string.Empty; public string Text { get; set; } = string.Empty; - } + + //для отправки pdf + public byte[] File { get; set; } = Array.Empty(); + + public MailsEnum Role { get; set; } + } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs index 57e07a6..bb62042 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs @@ -1,4 +1,5 @@ using BankYouBankruptContracts.ViewModels.Client.Reports; +using BankYouBankruptDataModels.Enums; using System; using System.Collections.Generic; using System.Linq; @@ -22,5 +23,7 @@ namespace BankYouBankruptContracts.BindingModels public DateTime? DateFrom { get; set; } public DateTime? DateTo { get; set; } + + public MailsEnum Role { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs deleted file mode 100644 index 8d26b7d..0000000 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IMessageInfoLogic.cs +++ /dev/null @@ -1,20 +0,0 @@ -using BankYouBankruptContracts.BindingModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptContracts.BusinessLogicsContracts -{ - public interface IMessageInfoLogic - { - //List? ReadList(MessageInfoSearchModel? model); - - //MessageInfoViewModel? ReadElement(MessageInfoSearchModel model); - - bool Create(MessageInfoBindingModel model); - - bool Update(MessageInfoBindingModel model); - } -} diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs new file mode 100644 index 0000000..3f7d6e1 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/FileViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptContracts.ViewModels +{ + public class FileViewModel + { + public byte[] Bytes { get; set; } = Array.Empty(); + + public int[] Test { get; set; } = Array.Empty(); + + public string StringBytes { get; set; } = string.Empty; + } +} diff --git a/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs b/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs new file mode 100644 index 0000000..fb18f98 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptDataModels/Enums/MailsEnum.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptDataModels.Enums +{ + public enum MailsEnum + { + Клиент = 0, + + Кассир = 1 + } +} diff --git a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs index d8e7d1f..7a561f5 100644 --- a/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs +++ b/BankYouBankrupt/BankYouBankruptDatabaseImplement/Implements/ClientStorage.cs @@ -32,7 +32,15 @@ namespace BankYouBankruptDatabaseImplement.Implements { return null; } + using var context = new BankYouBancruptDatabase(); + + //сработает для поиска почты для отправки файла + if(model.Id.HasValue && string.IsNullOrEmpty(model.Password)) + { + return context.Clients.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; + } + return context.Clients.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Email) && x.Email == model.Email && !string.IsNullOrEmpty(model.Password) && x.Password == model.Password) || (model.Id.HasValue && x.Id == model.Id)) diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs index 386f998..dc12bbd 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs @@ -47,7 +47,9 @@ namespace BankYouBankruptRestAPI.Controllers { FileName = "Отчёт_по_картам.pdf", DateFrom = model.DateFrom, - DateTo = model.DateTo + DateTo = model.DateTo, + Role = MailsEnum.Клиент, + ClientId = model.ClientId }); return result; diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs index 922ac20..4775526 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Program.cs @@ -36,9 +36,7 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddSingleton(); -builder.Services.AddTransient(); - -builder.Services.AddTransient(); +builder.Services.AddSingleton(); //общие классы формировани отчётов builder.Services.AddTransient(); @@ -58,7 +56,7 @@ builder.Services.AddSwaggerGen(c => var app = builder.Build(); //Mails Service -var mailSender = app.Services.GetService(); +var mailSender = app.Services.GetService(); mailSender?.MailConfig(new MailConfigBindingModel { @@ -66,8 +64,6 @@ mailSender?.MailConfig(new MailConfigBindingModel MailPassword = builder.Configuration?.GetSection("MailPassword")?.Value?.ToString() ?? string.Empty, SmtpClientHost = builder.Configuration?.GetSection("SmtpClientHost")?.Value?.ToString() ?? string.Empty, SmtpClientPort = Convert.ToInt32(builder.Configuration?.GetSection("SmtpClientPort")?.Value?.ToString()), - PopHost = builder.Configuration?.GetSection("PopHost")?.Value?.ToString() ?? string.Empty, - PopPort = Convert.ToInt32(builder.Configuration?.GetSection("PopPort")?.Value?.ToString()) }); // Configure the HTTP request pipeline. diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json b/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json index 10f68b8..4fac28d 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json +++ b/BankYouBankrupt/BankYouBankruptRestAPI/appsettings.json @@ -5,5 +5,11 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + + "AllowedHosts": "*", + + "SmtpClientHost": "smtp.gmail.com", + "SmtpClientPort": "587", + "MailLogin": "uveselchak99@gmail.com", + "MailPassword": "nqkv jzzq fryi leao" } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf index da49dbd8938c2b4d0a8539eafe236ccde8a57182..139b5d22b0f30adf576d187c6d8c766c21d7921b 100644 GIT binary patch delta 3922 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 Date: Sat, 20 May 2023 02:03:01 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9F=D0=94=D0=A4=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ReportCashierLogic.cs | 39 +++++++++++------- .../BusinessLogics/ReportClientLogic.cs | 11 +---- .../Controllers/HomeController.cs | 1 + .../Controllers/HomeController.cs | 4 +- .../BindingModels/ReportBindingModel.cs | 2 + .../ReportSupportBindingModel.cs | 2 + .../Controllers/ReportController.cs | 8 ++-- .../Отчёт_по_картам.pdf | Bin 36073 -> 36765 bytes .../Отчёт_по_счетам.pdf | Bin 37458 -> 38256 bytes 9 files changed, 38 insertions(+), 29 deletions(-) diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs index 3d92073..b38ed14 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs @@ -1,4 +1,5 @@ -using BankYouBankruptBusinessLogic.OfficePackage; +using BankYouBankruptBusinessLogic.MailWorker; +using BankYouBankruptBusinessLogic.OfficePackage; using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; using BankYouBankruptContracts.BindingModels; using BankYouBankruptContracts.BusinessLogicsContracts; @@ -18,26 +19,22 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics public class ReportCashierLogic : IReportCashierLogic { private readonly IMoneyTransferStorage _moneyTransferStorage; - private readonly ICashWithdrawalStorage _cashWithdrawalStorage; - private readonly IClientStorage _clientStorage; - private readonly IDebitingStorage _debitingStorage; - private readonly ICardStorage _cardStorage; private readonly AbstractSaveToExcel _saveToExcel; - private readonly AbstractSaveToWord _saveToWord; - private readonly AbstractSaveToPdf _saveToPdf; - //инициализируем поля класса через контейнер - public ReportCashierLogic(IMoneyTransferStorage moneyTransferStorage, ICashWithdrawalStorage cashWithdrawalStorage, + private readonly MailKitWorker _mailKitWorker; + + //инициализируем поля класса через контейнер + public ReportCashierLogic(IMoneyTransferStorage moneyTransferStorage, ICashWithdrawalStorage cashWithdrawalStorage, IClientStorage clientStorage, AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf, - IDebitingStorage debitingStorage, ICardStorage cardStorage) + IDebitingStorage debitingStorage, ICardStorage cardStorage, MailKitWorker mailKitWorker) { _moneyTransferStorage = moneyTransferStorage; _cashWithdrawalStorage = cashWithdrawalStorage; @@ -48,6 +45,8 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics _clientStorage = clientStorage; _debitingStorage = debitingStorage; _cardStorage = cardStorage; + + _mailKitWorker = mailKitWorker; } //формирование списка переводов между счетами за период @@ -121,8 +120,8 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return client.Surname + " " + client.Name + " " + client.Patronymic; } - //Сохранение мороженных в файл-Word - public void SaveAccountsToWordFile(ReportBindingModel model) + //Сохранение мороженных в файл-Word + public void SaveAccountsToWordFile(ReportBindingModel model) { _saveToWord.CreateDoc(new WordInfo { @@ -165,8 +164,20 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics ReportCashWithdrawal = listCashWithdrawals }); - //возврат полученных списков для отображения на вебе - return new ReportCashierViewModelForHTML + byte[] pdf = System.IO.File.ReadAllBytes("C:\\Users\\Programmist73\\Desktop\\Практика\\2-й курс\\4-й семестр\\CourseWork_BankYouBankrupt\\BankYouBankrupt\\BankYouBankruptRestAPI\\Отчёт_по_счетам.pdf"); + + _mailKitWorker.SendMailAsync(new() + { + MailAddress = model.Email, + Subject = "Отчёт по счетам", + Text = $"За период с {model.DateFrom} " + + $"по {model.DateTo}.", + File = pdf, + Role = model.Role + }); + + //возврат полученных списков для отображения на вебе + return new ReportCashierViewModelForHTML { ReportCashWithdrawal = listCashWithdrawals, diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs index b1bee23..3dda71f 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs @@ -149,15 +149,6 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics return totalList; } - public string GetClientEmail(ReportBindingModel model) - { - return _clientStorage.GetElement(new ClientSearchModel - { - Id = model.ClientId - }).Email; - } - - public void SaveToExcelFile(ReportBindingModel model, OfficeOperationEnum operationEnum) { if(operationEnum == OfficeOperationEnum.Между_cчетами) @@ -244,7 +235,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics _mailKitWorker.SendMailAsync(new() { - MailAddress = GetClientEmail(model), + MailAddress = model.Email, Subject = "Отчёт по картам", Text = $"За период с {model.DateFrom} " + $"по {model.DateTo}.", diff --git a/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs index 5c563fa..54d09a9 100644 --- a/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptCashierApp/Controllers/HomeController.cs @@ -602,6 +602,7 @@ namespace BankYouBankruptCashierApp.Controllers return View(APICashier.PostRequestReport("api/Report/CreateCashierReport", new ReportSupportBindingModel() { ClientId = clientId, + Email = APICashier.Cashier.Email, DateFrom = dateFrom, DateTo = dateTo })); diff --git a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs index bde8d4e..d86b531 100644 --- a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs @@ -306,7 +306,7 @@ namespace BankYouBankruptClientApp.Controllers } [HttpPost] - public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo, int clientId) + public IActionResult CreateReport(DateTime dateFrom, DateTime dateTo) { if (APIClient.Client == null) { @@ -319,7 +319,7 @@ namespace BankYouBankruptClientApp.Controllers { DateFrom = dateFrom, DateTo = dateTo, - ClientId = clientId + Email = APIClient.Client.Email })); } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs index bb62042..88c519e 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportBindingModel.cs @@ -25,5 +25,7 @@ namespace BankYouBankruptContracts.BindingModels public DateTime? DateTo { get; set; } public MailsEnum Role { get; set; } + + public string? Email { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportSupportBindingModel.cs b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportSupportBindingModel.cs index 693079c..9e1cdde 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportSupportBindingModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BindingModels/ReportSupportBindingModel.cs @@ -20,5 +20,7 @@ namespace BankYouBankruptContracts.BindingModels //для Excel отчёта клиента public List? CardList { get; set; } + + public string? Email { get; set; } } } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs index dc12bbd..3d88182 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs @@ -49,7 +49,7 @@ namespace BankYouBankruptRestAPI.Controllers DateFrom = model.DateFrom, DateTo = model.DateTo, Role = MailsEnum.Клиент, - ClientId = model.ClientId + Email = model.Email }); return result; @@ -72,8 +72,10 @@ namespace BankYouBankruptRestAPI.Controllers FileName = "Отчёт_по_счетам.pdf", ClientId = model.ClientId, DateFrom = model.DateFrom, - DateTo = model.DateTo - }); + DateTo = model.DateTo, + Role = MailsEnum.Кассир, + Email = model.Email + }); return result; } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf index 139b5d22b0f30adf576d187c6d8c766c21d7921b..1befc10d145d676d02be29ac90107f167c3eeb0b 100644 GIT binary patch delta 4497 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 KKp@sapZ7l}YC@a< delta 3828 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 diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_счетам.pdf b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_счетам.pdf index 62086fc6e3191004c80f51a875e68b422ce90a5d..06dcc42cb89e62accbcf657afb371851492c65a2 100644 GIT binary patch delta 35225 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 z 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 S1>@+#+hiE);NTm`!2St*IwZOP