diff --git a/Shipyard/ShipyardContracts/StoragesContracts/IMessageInfoStorage.cs b/Shipyard/ShipyardContracts/StoragesContracts/IMessageInfoStorage.cs index 5ab5d6f..b51f02b 100644 --- a/Shipyard/ShipyardContracts/StoragesContracts/IMessageInfoStorage.cs +++ b/Shipyard/ShipyardContracts/StoragesContracts/IMessageInfoStorage.cs @@ -18,5 +18,7 @@ namespace ShipyardContracts.StoragesContracts MessageInfoViewModel? GetElement(MessageInfoSearchModel model); MessageInfoViewModel? Insert(MessageInfoBindingModel model); + + MessageInfoViewModel? Update(MessageInfoBindingModel model); } } diff --git a/Shipyard/ShipyardContracts/ViewModels/MessageInfoViewModel.cs b/Shipyard/ShipyardContracts/ViewModels/MessageInfoViewModel.cs index 47681cf..8337aa9 100644 --- a/Shipyard/ShipyardContracts/ViewModels/MessageInfoViewModel.cs +++ b/Shipyard/ShipyardContracts/ViewModels/MessageInfoViewModel.cs @@ -27,9 +27,9 @@ namespace ShipyardContracts.ViewModels public string Body { get; set; } = string.Empty; [DisplayName("Прочитано")] - public bool IsRead { get; private set; } = false; + public bool IsRead { get; set; } = false; [DisplayName("Ответ")] - public string? AnswerText { get; private set; } + public string? AnswerText { get; set; } = string.Empty; } } diff --git a/Shipyard/ShipyardDataBaseImplement/Implements/MessageInfoStorage.cs b/Shipyard/ShipyardDataBaseImplement/Implements/MessageInfoStorage.cs index 378a692..f086b2b 100644 --- a/Shipyard/ShipyardDataBaseImplement/Implements/MessageInfoStorage.cs +++ b/Shipyard/ShipyardDataBaseImplement/Implements/MessageInfoStorage.cs @@ -66,5 +66,19 @@ namespace ShipyardDataBaseImplement.Implements context.SaveChanges(); return newMessage.GetViewModel; } + + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + using var context = new ShipyardDataBase(); + var message = context.Messages.FirstOrDefault(x => x.MessageId == + model.MessageId); + if (message == null) + { + return null; + } + message.Update(model); + context.SaveChanges(); + return message.GetViewModel; + } } } diff --git a/Shipyard/ShipyardDataBaseImplement/Models/Message.cs b/Shipyard/ShipyardDataBaseImplement/Models/Message.cs index faaee6e..bdedda8 100644 --- a/Shipyard/ShipyardDataBaseImplement/Models/Message.cs +++ b/Shipyard/ShipyardDataBaseImplement/Models/Message.cs @@ -4,6 +4,7 @@ using ShipyardDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -45,6 +46,11 @@ namespace ShipyardDataBaseImplement.Models }; } + public void Update(MessageInfoBindingModel model) + { + IsRead = model.IsRead; + AnswerText = model.AnswerText; + } public MessageInfoViewModel GetViewModel => new() { Body = Body, @@ -53,6 +59,8 @@ namespace ShipyardDataBaseImplement.Models MessageId = MessageId, SenderName = SenderName, DateDelivery = DateDelivery, + IsRead=IsRead, + AnswerText=AnswerText }; } } diff --git a/Shipyard/ShipyardFileImplement/Implements/MessageInfoStorage.cs b/Shipyard/ShipyardFileImplement/Implements/MessageInfoStorage.cs index f63ec69..aeca28c 100644 --- a/Shipyard/ShipyardFileImplement/Implements/MessageInfoStorage.cs +++ b/Shipyard/ShipyardFileImplement/Implements/MessageInfoStorage.cs @@ -54,5 +54,17 @@ namespace ShipyardFileImplement.Implements source.SaveMessages(); return newMessage.GetViewModel; } + + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + var message = source.Messages.FirstOrDefault(x => x.MessageId == model.MessageId); + if (message == null) + { + return null; + } + message.Update(model); + source.SaveImplementers(); + return message.GetViewModel; + } } } diff --git a/Shipyard/ShipyardFileImplement/Models/Message.cs b/Shipyard/ShipyardFileImplement/Models/Message.cs index aa37af0..88264e1 100644 --- a/Shipyard/ShipyardFileImplement/Models/Message.cs +++ b/Shipyard/ShipyardFileImplement/Models/Message.cs @@ -59,6 +59,15 @@ namespace ShipyardFileImplement.Models }; } + public void Update(MessageInfoBindingModel model) + { + if (model == null) + { + return; + } + IsRead = model.IsRead; + AnswerText = model.AnswerText; + } public MessageInfoViewModel GetViewModel => new() { Body = Body, @@ -66,7 +75,9 @@ namespace ShipyardFileImplement.Models DateDelivery = DateDelivery, SenderName = SenderName, ClientId = ClientId, - MessageId = MessageId + MessageId = MessageId, + IsRead=IsRead, + AnswerText=AnswerText }; public XElement GetXElement => new("MessageInfo", @@ -75,7 +86,9 @@ namespace ShipyardFileImplement.Models new XAttribute("ClientId", ClientId), new XAttribute("MessageId", MessageId), new XAttribute("SenderName", SenderName), - new XAttribute("DateDelivery", DateDelivery) + new XAttribute("DateDelivery", DateDelivery), + new XAttribute("IsRead", IsRead), + new XAttribute("AnswerText", AnswerText) ); } } diff --git a/Shipyard/ShipyardListImplement»/Implements/MessageInfoStorage.cs b/Shipyard/ShipyardListImplement»/Implements/MessageInfoStorage.cs index f66f60d..f6bc5fe 100644 --- a/Shipyard/ShipyardListImplement»/Implements/MessageInfoStorage.cs +++ b/Shipyard/ShipyardListImplement»/Implements/MessageInfoStorage.cs @@ -72,5 +72,18 @@ namespace ShipyardListImplement_.Implements _source.Messages.Add(newMessage); return newMessage.GetViewModel; } + + public MessageInfoViewModel? Update(MessageInfoBindingModel model) + { + foreach (var message in _source.Messages) + { + if (message.MessageId == model.MessageId) + { + message.Update(model); + return message.GetViewModel; + } + } + return null; + } } } diff --git a/Shipyard/ShipyardListImplement»/Models/Message.cs b/Shipyard/ShipyardListImplement»/Models/Message.cs index ce3cf76..24fdb4d 100644 --- a/Shipyard/ShipyardListImplement»/Models/Message.cs +++ b/Shipyard/ShipyardListImplement»/Models/Message.cs @@ -41,7 +41,15 @@ namespace ShipyardListImplement_.Models MessageId = model.MessageId }; } - + public void Update(MessageInfoBindingModel? model) + { + if (model == null) + { + return; + } + IsRead = model.IsRead; + AnswerText = model.AnswerText; + } public MessageInfoViewModel GetViewModel => new() { Body = Body, @@ -49,7 +57,9 @@ namespace ShipyardListImplement_.Models DateDelivery = DateDelivery, SenderName = SenderName, ClientId = ClientId, - MessageId = MessageId + MessageId = MessageId, + AnswerText = AnswerText, + IsRead = IsRead }; } }