From 236b87031af1f12f127cd8f39613276970ecba23 Mon Sep 17 00:00:00 2001 From: Zyzf Date: Mon, 12 Jun 2023 02:49:23 -0700 Subject: [PATCH] some done --- .../Implements/MessageInfoStorage.cs | 14 ++- .../Models/MessageInfo.cs | 17 +++- .../BusinessLogics/MessageInfoLogic.cs | 83 ++++++++++------ .../Controllers/HomeController.cs | 7 +- .../Views/Home/Mails.cshtml | 18 +++- .../BindingModels/MessageInfoBindingModel.cs | 4 +- .../IMessageInfoLogic.cs | 8 +- .../SearchModels/MessageInfoSearchModel.cs | 4 +- .../StorageContracts/IMessageInfoStorage.cs | 3 +- .../ViewModels/MessageInfoViewModel.cs | 6 +- .../Models/IMessageInfoModel.cs | 4 +- .../Implements/MessageInfoStorage.cs | 96 ++++++++++++------- .../Models/MessageInfo.cs | 32 ++++--- .../Implements/MessageInfoStorage.cs | 13 ++- .../Models/MessageInfo.cs | 47 +++++---- .../FormMain.Designer.cs | 2 + .../BlacksmithWorkshopView/FormMain.cs | 4 + .../FormMessages.Designer.cs | 58 ++++++++++- .../BlacksmithWorkshopView/FormMessages.cs | 35 ++++++- .../BlacksmithWorkshopView/Program.cs | 1 + 20 files changed, 341 insertions(+), 115 deletions(-) diff --git a/BlacksmithWorkshop/BlacksmithListImplement/Implements/MessageInfoStorage.cs b/BlacksmithWorkshop/BlacksmithListImplement/Implements/MessageInfoStorage.cs index f4693bd..a2467f5 100644 --- a/BlacksmithWorkshop/BlacksmithListImplement/Implements/MessageInfoStorage.cs +++ b/BlacksmithWorkshop/BlacksmithListImplement/Implements/MessageInfoStorage.cs @@ -61,5 +61,17 @@ namespace BlacksmithWorkshopListImplement.Implements _source.MessageInfos.Add(newMessage); return newMessage.GetViewModel; } - } + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + foreach (var message in _source.MessageInfos) + { + if (message.MessageId == model.MessageId) + { + message.Update(model); + return message.GetViewModel; + } + } + return null; + } + } } diff --git a/BlacksmithWorkshop/BlacksmithListImplement/Models/MessageInfo.cs b/BlacksmithWorkshop/BlacksmithListImplement/Models/MessageInfo.cs index 6a2cd5b..20f6242 100644 --- a/BlacksmithWorkshop/BlacksmithListImplement/Models/MessageInfo.cs +++ b/BlacksmithWorkshop/BlacksmithListImplement/Models/MessageInfo.cs @@ -17,7 +17,9 @@ namespace BlacksmithWorkshopListImplement.Models public DateTime DateDelivery { get; private set; } = DateTime.Now; public string Subject { get; private set; } = string.Empty; public string Body { get; private set; } = string.Empty; - public static MessageInfo? Create(MessageInfoBindingModel? model) + public bool IsRead { get; private set; } = false; + public string? ReplyText { get; private set; } + public static MessageInfo? Create(MessageInfoBindingModel? model) { if (model == null) { @@ -33,14 +35,21 @@ namespace BlacksmithWorkshopListImplement.Models Body = model.Body }; } - public MessageInfoViewModel GetViewModel => new() + public void Update(MessageInfoBindingModel model) + { + IsRead = model.IsRead; + ReplyText = model.ReplyText; + } + public MessageInfoViewModel GetViewModel => new() { MessageId = MessageId, ClientId = ClientId, SenderName = SenderName, DateDelivery = DateDelivery, Subject = Subject, - Body = Body - }; + Body = Body, + IsRead = IsRead, + ReplyText = ReplyText + }; } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopBusinessLogic/BusinessLogics/MessageInfoLogic.cs b/BlacksmithWorkshop/BlacksmithWorkshopBusinessLogic/BusinessLogics/MessageInfoLogic.cs index 4169961..7d397a5 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopBusinessLogic/BusinessLogics/MessageInfoLogic.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopBusinessLogic/BusinessLogics/MessageInfoLogic.cs @@ -14,33 +14,58 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics { public class MessageInfoLogic : IMessageInfoLogic { - private readonly ILogger _logger; - private readonly IMessageInfoStorage _messageInfoStorage; - public MessageInfoLogic(ILogger logger, IMessageInfoStorage messageInfoStorage) - { - _logger = logger; - _messageInfoStorage = messageInfoStorage; - } - public bool Create(MessageInfoBindingModel model) - { - if (_messageInfoStorage.Insert(model) == null) - { - _logger.LogWarning("Insert operation failed"); - return false; - } - return true; - } - public List? ReadList(MessageInfoSearchModel? model) - { - _logger.LogInformation("ReadList. MessageId:{MessageId}", model?.MessageId); - var list = model == null ? _messageInfoStorage.GetFullList() : _messageInfoStorage.GetFilteredList(model); - if (list == null) - { - _logger.LogWarning("ReadList return null list"); - return null; - } - _logger.LogInformation("ReadList. Count:{Count}", list.Count); - return list.OrderByDescending(x => x.DateDelivery).ToList(); - } - } + private readonly ILogger _logger; + private readonly IMessageInfoStorage _messageInfoStorage; + public MessageInfoLogic(ILogger logger, IMessageInfoStorage messageInfoStorage) + { + _logger = logger; + _messageInfoStorage = messageInfoStorage; + } + public bool Create(MessageInfoBindingModel model) + { + if (_messageInfoStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public MessageInfoViewModel? ReadElement(MessageInfoSearchModel? model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. MessageId:{MessageId}", model.MessageId); + var element = _messageInfoStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. MessageId:{Id}", element.MessageId); + return element; + } + public List? ReadList(MessageInfoSearchModel? model) + { + _logger.LogInformation("ReadList. MessageId:{MessageId}", model?.MessageId); + var list = model == null ? _messageInfoStorage.GetFullList() : _messageInfoStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list.OrderByDescending(x => x.DateDelivery).ToList(); + } + public bool Update(MessageInfoBindingModel model) + { + if (_messageInfoStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Controllers/HomeController.cs b/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Controllers/HomeController.cs index 99c023f..c00cd24 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Controllers/HomeController.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Controllers/HomeController.cs @@ -133,13 +133,16 @@ namespace BlacksmithWorkshopClientApp.Controllers return count * (prod?.Price ?? 1); } [HttpGet] - public IActionResult Mails() + public IActionResult Mails(int page = 0) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } - return View(APIClient.GetRequest>($"api/client/getmessages?clientId={APIClient.Client.Id}")); + var messages = APIClient.GetRequest>($"api/client/getmessages?clientId={APIClient.Client.Id}&page={page}"); + ViewBag.PageIsLast = messages!.Count == 0; + ViewBag.Page = page; + return View(messages); } } } \ No newline at end of file diff --git a/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Views/Home/Mails.cshtml b/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Views/Home/Mails.cshtml index 8499912..2dc7a7a 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Views/Home/Mails.cshtml +++ b/BlacksmithWorkshop/BlacksmithWorkshopClientApp/Views/Home/Mails.cshtml @@ -10,6 +10,7 @@

Письма

+
@{ if (Model == null) @@ -17,6 +18,7 @@

Авторизируйтесь

return; } + @@ -49,4 +51,18 @@
} -
+ @if (ViewBag.Page != 0) + { + + < Назад + + } + @if (!ViewBag.PageIsLast) + { + + Вперед > + + } + \ No newline at end of file diff --git a/BlacksmithWorkshop/BlacksmithWorkshopContracts/BindingModels/MessageInfoBindingModel.cs b/BlacksmithWorkshop/BlacksmithWorkshopContracts/BindingModels/MessageInfoBindingModel.cs index d1d449a..ad2b7a3 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopContracts/BindingModels/MessageInfoBindingModel.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopContracts/BindingModels/MessageInfoBindingModel.cs @@ -15,5 +15,7 @@ namespace BlacksmithWorkshopContracts.BindingModels public string Subject { get; set; } = string.Empty; public string Body { get; set; } = string.Empty; public DateTime DateDelivery { get; set; } - } + public bool IsRead { get; set; } = false; + public string? ReplyText { get; set; } = string.Empty; + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopContracts/BusinessLogicsContracts/IMessageInfoLogic.cs b/BlacksmithWorkshop/BlacksmithWorkshopContracts/BusinessLogicsContracts/IMessageInfoLogic.cs index a4753d6..4de4a40 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopContracts/BusinessLogicsContracts/IMessageInfoLogic.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopContracts/BusinessLogicsContracts/IMessageInfoLogic.cs @@ -11,7 +11,9 @@ namespace BlacksmithWorkshopContracts.BusinessLogicsContracts { public interface IMessageInfoLogic { - List? ReadList(MessageInfoSearchModel? model); - bool Create(MessageInfoBindingModel model); - } + List? ReadList(MessageInfoSearchModel? model); + bool Create(MessageInfoBindingModel model); + MessageInfoViewModel? ReadElement(MessageInfoSearchModel? model); + bool Update(MessageInfoBindingModel model); + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopContracts/SearchModels/MessageInfoSearchModel.cs b/BlacksmithWorkshop/BlacksmithWorkshopContracts/SearchModels/MessageInfoSearchModel.cs index f5890d4..51c2ef1 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopContracts/SearchModels/MessageInfoSearchModel.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopContracts/SearchModels/MessageInfoSearchModel.cs @@ -10,5 +10,7 @@ namespace BlacksmithWorkshopContracts.SearchModels { public int? ClientId { get; set; } public string? MessageId { get; set; } - } + public int? Page { get; set; } + public int? PageSize { get; set; } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopContracts/StorageContracts/IMessageInfoStorage.cs b/BlacksmithWorkshop/BlacksmithWorkshopContracts/StorageContracts/IMessageInfoStorage.cs index 657f73d..9a020f0 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopContracts/StorageContracts/IMessageInfoStorage.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopContracts/StorageContracts/IMessageInfoStorage.cs @@ -15,5 +15,6 @@ namespace BlacksmithWorkshopContracts.StorageContracts List GetFilteredList(MessageInfoSearchModel model); MessageInfoViewModel? GetElement(MessageInfoSearchModel model); MessageInfoViewModel? Insert(MessageInfoBindingModel model); - } + MessageInfoViewModel? Update(MessageInfoBindingModel model); + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopContracts/ViewModels/MessageInfoViewModel.cs b/BlacksmithWorkshop/BlacksmithWorkshopContracts/ViewModels/MessageInfoViewModel.cs index 73112be..229c91a 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopContracts/ViewModels/MessageInfoViewModel.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopContracts/ViewModels/MessageInfoViewModel.cs @@ -20,5 +20,9 @@ namespace BlacksmithWorkshopContracts.ViewModels public string Subject { get; set; } = string.Empty; [DisplayName("Текст")] public string Body { get; set; } = string.Empty; - } + [DisplayName("Прочитано")] + public bool IsRead { get; set; } = false; + [DisplayName("Ответ")] + public string? ReplyText { get; set; } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopDataModels/Models/IMessageInfoModel.cs b/BlacksmithWorkshop/BlacksmithWorkshopDataModels/Models/IMessageInfoModel.cs index bd28f75..1b4da92 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopDataModels/Models/IMessageInfoModel.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopDataModels/Models/IMessageInfoModel.cs @@ -14,5 +14,7 @@ namespace BlacksmithWorkshopDataModels.Models DateTime DateDelivery { get; } string Subject { get; } string Body { get; } - } + bool IsRead { get; } + string? ReplyText { get; } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Implements/MessageInfoStorage.cs b/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Implements/MessageInfoStorage.cs index de3a086..36c3360 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Implements/MessageInfoStorage.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Implements/MessageInfoStorage.cs @@ -13,39 +13,65 @@ namespace BlacksmithWorkshopDatabaseImplement.Implements { public class MessageInfoStorage : IMessageInfoStorage { - public List GetFullList() - { - using var context = new BlacksmithWorkshopDatabase(); - return context.MessageInfos - .Select(x => x.GetViewModel) - .ToList(); - } - public List GetFilteredList(MessageInfoSearchModel model) - { - using var context = new BlacksmithWorkshopDatabase(); - return context.MessageInfos - .Where(x => x.ClientId.HasValue && x.ClientId == model.ClientId) - .Select(x => x.GetViewModel) - .ToList(); - } - public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) - { - using var context = new BlacksmithWorkshopDatabase(); - return context.MessageInfos - .FirstOrDefault(x => !string.IsNullOrEmpty(x.MessageId) && x.MessageId == model.MessageId) - ?.GetViewModel; - } - public MessageInfoViewModel? Insert(MessageInfoBindingModel model) - { - using var context = new BlacksmithWorkshopDatabase(); - var newMessage = MessageInfo.Create(model); - if (newMessage == null) - { - return null; - } - context.MessageInfos.Add(newMessage); - context.SaveChanges(); - return newMessage.GetViewModel; - } - } + public List GetFullList() + { + using var context = new BlacksmithWorkshopDatabase(); + return context.MessageInfos + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(MessageInfoSearchModel model) + { + using var context = new BlacksmithWorkshopDatabase(); + if (model.ClientId.HasValue && model.Page.HasValue && model.PageSize.HasValue) + { + return context.MessageInfos + .Where(x => x.ClientId == model.ClientId) + .Skip(model.PageSize.Value * model.Page.Value) + .Take(model.PageSize.Value) + .Select(x => x.GetViewModel) + .ToList(); + } + else if (model.Page.HasValue && model.PageSize.HasValue) + { + return context.MessageInfos + .Skip(model.PageSize.Value * model.Page.Value) + .Take(model.PageSize.Value) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) + { + using var context = new BlacksmithWorkshopDatabase(); + return context.MessageInfos + .FirstOrDefault(x => !string.IsNullOrEmpty(x.MessageId) && x.MessageId == model.MessageId) + ?.GetViewModel; + } + public MessageInfoViewModel? Insert(MessageInfoBindingModel model) + { + using var context = new BlacksmithWorkshopDatabase(); + var newMessage = MessageInfo.Create(model); + if (newMessage == null) + { + return null; + } + context.MessageInfos.Add(newMessage); + context.SaveChanges(); + return newMessage.GetViewModel; + } + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + using var context = new BlacksmithWorkshopDatabase(); + var message = context.MessageInfos.FirstOrDefault(x => x.MessageId == model.MessageId); + if (message == null) + { + return null; + } + message.Update(model); + context.SaveChanges(); + return message.GetViewModel; + } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Models/MessageInfo.cs b/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Models/MessageInfo.cs index 3b8596f..feb9428 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Models/MessageInfo.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopDatabaseImplement/Models/MessageInfo.cs @@ -23,7 +23,10 @@ namespace BlacksmithWorkshopDatabaseImplement.Models public string Subject { get; set; } = string.Empty; [Required] public string Body { get; set; } = string.Empty; - public virtual Client? Client { get; set; } + [Required] + public bool IsRead { get; private set; } = false; + public string? ReplyText { get; private set; } + public virtual Client? Client { get; set; } public static MessageInfo? Create(MessageInfoBindingModel? model) { if (model == null) @@ -40,14 +43,21 @@ namespace BlacksmithWorkshopDatabaseImplement.Models Body = model.Body }; } - public MessageInfoViewModel GetViewModel => new() - { - MessageId = MessageId, - ClientId = ClientId, - SenderName = SenderName, - DateDelivery = DateDelivery, - Subject = Subject, - Body = Body - }; - } + public void Update(MessageInfoBindingModel model) + { + IsRead = model.IsRead; + ReplyText = model.ReplyText; + } + public MessageInfoViewModel GetViewModel => new() + { + MessageId = MessageId, + ClientId = ClientId, + SenderName = SenderName, + DateDelivery = DateDelivery, + Subject = Subject, + Body = Body, + IsRead = IsRead, + ReplyText = ReplyText + }; + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Implements/MessageInfoStorage.cs b/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Implements/MessageInfoStorage.cs index 7e1a1ba..75b5001 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Implements/MessageInfoStorage.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Implements/MessageInfoStorage.cs @@ -54,5 +54,16 @@ namespace BlacksmithWorkshopFileImplement.Implements _source.SaveClients(); return newMessage.GetViewModel; } - } + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + var message = _source.MessageInfos.FirstOrDefault(x => x.MessageId == model.MessageId); + if (message == null) + { + return null; + } + message.Update(model); + _source.SaveMessageInfos(); + return message.GetViewModel; + } + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Models/MessageInfo.cs b/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Models/MessageInfo.cs index 3ef9c6e..165ab8b 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Models/MessageInfo.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopFileImplement/Models/MessageInfo.cs @@ -18,7 +18,9 @@ namespace BlacksmithWorkshopFileImplement.Models public DateTime DateDelivery { get; set; } = DateTime.Now; public string Subject { get; set; } = string.Empty; public string Body { get; set; } = string.Empty; - public static MessageInfo? Create(MessageInfoBindingModel model) + public bool IsRead { get; private set; } = false; + public string? ReplyText { get; private set; } + public static MessageInfo? Create(MessageInfoBindingModel model) { if (model == null) { @@ -50,21 +52,30 @@ namespace BlacksmithWorkshopFileImplement.Models Body = element.Element("MessageId")!.Value }; } - public MessageInfoViewModel GetViewModel => new() - { - MessageId = MessageId, - ClientId = ClientId, - SenderName = SenderName, - DateDelivery = DateDelivery, - Subject = Subject, - Body = Body - }; - public XElement GetXElement => new("MessageInfo", - new XAttribute("MessageId", MessageId), - new XElement("ClientId", ClientId), - new XElement("SenderName", SenderName), - new XElement("DateDelivery", DateDelivery), - new XElement("Subject", Subject), - new XElement("Body", Body)); - } + public void Update(MessageInfoBindingModel model) + { + IsRead = model.IsRead; + ReplyText = model.ReplyText; + } + public MessageInfoViewModel GetViewModel => new() + { + MessageId = MessageId, + ClientId = ClientId, + SenderName = SenderName, + DateDelivery = DateDelivery, + Subject = Subject, + Body = Body, + IsRead = IsRead, + ReplyText = ReplyText + }; + public XElement GetXElement => new("MessageInfo", + new XAttribute("MessageId", MessageId), + new XElement("ClientId", ClientId), + new XElement("SenderName", SenderName), + new XElement("DateDelivery", DateDelivery), + new XElement("Subject", Subject), + new XElement("Body", Body), + new XElement("IsRead", IsRead), + new XElement("ReplyText", ReplyText)); + } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.Designer.cs b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.Designer.cs index 08d2fc1..d3a66b7 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.Designer.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.Designer.cs @@ -49,6 +49,7 @@ buttonRef = new Button(); buttonAddManufactureInShop = new Button(); buttonSellManufacture = new Button(); + messagesToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); SuspendLayout(); @@ -226,6 +227,7 @@ buttonSellManufacture.Text = "Продать изделие"; buttonSellManufacture.UseVisualStyleBackColor = true; buttonSellManufacture.Click += ButtonSellManufacture_Click; + // // messagesToolStripMenuItem // messagesToolStripMenuItem.Name = "messagesToolStripMenuItem"; diff --git a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.cs b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.cs index cad08a2..31ed105 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMain.cs @@ -202,6 +202,10 @@ namespace BlacksmithWorkshopView { var service = Program.ServiceProvider?.GetService(typeof(FormReportOrdersByDate)); if (service is FormReportOrdersByDate form) + { + form.ShowDialog(); + } + } private void messagesToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormMessages)); diff --git a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.Designer.cs b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.Designer.cs index 1b2c9b9..7c9cbad 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.Designer.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.Designer.cs @@ -29,7 +29,12 @@ private void InitializeComponent() { dataGridView = new DataGridView(); + panel = new Panel(); + buttonForward = new Button(); + buttonBack = new Button(); + buttonOpen = new Button(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + panel.SuspendLayout(); SuspendLayout(); // // dataGridView @@ -41,25 +46,74 @@ dataGridView.Name = "dataGridView"; dataGridView.RowHeadersWidth = 62; dataGridView.RowTemplate.Height = 25; - dataGridView.Size = new Size(1143, 750); + dataGridView.Size = new Size(1279, 697); dataGridView.TabIndex = 0; // + // panel + // + panel.Controls.Add(buttonForward); + panel.Controls.Add(buttonBack); + panel.Controls.Add(buttonOpen); + panel.Dock = DockStyle.Right; + panel.Location = new Point(1096, 0); + panel.Name = "panel"; + panel.Size = new Size(183, 697); + panel.TabIndex = 1; + // + // buttonForward + // + buttonForward.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonForward.Location = new Point(106, 651); + buttonForward.Name = "buttonForward"; + buttonForward.Size = new Size(65, 34); + buttonForward.TabIndex = 2; + buttonForward.Text = ">"; + buttonForward.UseVisualStyleBackColor = true; + buttonForward.Click += ButtonForward_Click; + // + // buttonBack + // + buttonBack.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonBack.Location = new Point(14, 651); + buttonBack.Name = "buttonBack"; + buttonBack.Size = new Size(65, 34); + buttonBack.TabIndex = 1; + buttonBack.Text = "<"; + buttonBack.UseVisualStyleBackColor = true; + buttonBack.Click += ButtonBack_Click; + // + // buttonOpen + // + buttonOpen.Location = new Point(14, 12); + buttonOpen.Name = "buttonOpen"; + buttonOpen.Size = new Size(157, 34); + buttonOpen.TabIndex = 0; + buttonOpen.Text = "Открыть"; + buttonOpen.UseVisualStyleBackColor = true; + buttonOpen.Click += ButtonOpen_Click; + // // FormMessages // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1143, 750); + ClientSize = new Size(1279, 697); + Controls.Add(panel); Controls.Add(dataGridView); Margin = new Padding(4, 5, 4, 5); Name = "FormMessages"; Text = "Сообщения"; Load += FormMessages_Load; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + panel.ResumeLayout(false); ResumeLayout(false); } #endregion private DataGridView dataGridView; + private Panel panel; + private Button buttonOpen; + private Button buttonForward; + private Button buttonBack; } } \ No newline at end of file diff --git a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.cs b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.cs index 8bc5944..ccc9895 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopView/FormMessages.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using static BlacksmithWorkshopView.FormMessages; namespace BlacksmithWorkshopView { @@ -16,6 +17,8 @@ namespace BlacksmithWorkshopView { private readonly ILogger _logger; private readonly IMessageInfoLogic _logic; + private readonly int pageSize = 5; + private int pageNumber = 0; public FormMessages(ILogger logger, IMessageInfoLogic logic) { InitializeComponent(); @@ -24,13 +27,13 @@ namespace BlacksmithWorkshopView } private void FormMessages_Load(object sender, EventArgs e) { - LoadData(); + LoadData(0); } - private void LoadData() + private void LoadData(int page) { try { - var list = _logic.ReadList(null); + var list = _logic.ReadList(new() { Page = page, PageSize = pageSize }); if (list != null) { dataGridView.DataSource = list; @@ -46,5 +49,31 @@ namespace BlacksmithWorkshopView MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonBack_Click(object sender, EventArgs e) + { + if (pageNumber != 0) + { + pageNumber--; + } + LoadData(pageNumber); + } + private void ButtonForward_Click(object sender, EventArgs e) + { + pageNumber++; + LoadData(pageNumber); + } + private void ButtonOpen_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = Program.ServiceProvider?.GetService(typeof(FormMessage)); + if (service is FormMessage form) + { + form.Id = dataGridView.SelectedRows[0].Cells["MessageId"].Value.ToString(); + form.ShowDialog(); + LoadData(0); + } + } + } } } diff --git a/BlacksmithWorkshop/BlacksmithWorkshopView/Program.cs b/BlacksmithWorkshop/BlacksmithWorkshopView/Program.cs index dd77a1b..b434396 100644 --- a/BlacksmithWorkshop/BlacksmithWorkshopView/Program.cs +++ b/BlacksmithWorkshop/BlacksmithWorkshopView/Program.cs @@ -103,6 +103,7 @@ namespace BlacksmithWorkshopView services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); } private static void MailCheck(object obj) => ServiceProvider?.GetService()?.MailCheck(); }