From f3d1de0db8191c12aa9773cd7ec4bca78b12d0f6 Mon Sep 17 00:00:00 2001 From: "ns.potapov" Date: Sun, 5 May 2024 14:48:06 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=20=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=B8=D1=81=D0=B5=D0=BC=20=D0=B2=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/MessageInfoStorage.cs | 50 +++++++++++++ .../Models/MessageInfo.cs | 75 +++++++++++++++++++ .../SecuritySystemDatabase.cs | 1 + 3 files changed, 126 insertions(+) create mode 100644 SecuritySystem/SecuritySystemDatabaseImplement/Implements/MessageInfoStorage.cs create mode 100644 SecuritySystem/SecuritySystemDatabaseImplement/Models/MessageInfo.cs diff --git a/SecuritySystem/SecuritySystemDatabaseImplement/Implements/MessageInfoStorage.cs b/SecuritySystem/SecuritySystemDatabaseImplement/Implements/MessageInfoStorage.cs new file mode 100644 index 0000000..051af28 --- /dev/null +++ b/SecuritySystem/SecuritySystemDatabaseImplement/Implements/MessageInfoStorage.cs @@ -0,0 +1,50 @@ +using Microsoft.EntityFrameworkCore; +using SecuritySystemContracts.BindingModels; +using SecuritySystemContracts.SearchModels; +using SecuritySystemContracts.StoragesContracts; +using SecuritySystemContracts.ViewModels; +using SecuritySystemDatabaseImplement.Models; + +namespace SecuritySystemDatabaseImplement.Implements +{ + public class MessageInfoStorage : IMessageInfoStorage + { + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) + { + return GetFilteredList(model).FirstOrDefault(); + } + + public List GetFilteredList(MessageInfoSearchModel model) + { + var messageInfos = GetFullList(); + if (!string.IsNullOrEmpty(model.MessageId)) + { + messageInfos = messageInfos.Where(x => x.MessageId == model.MessageId).ToList(); + } + if (model.ClientId != null) + { + messageInfos = messageInfos.Where(x => x.ClientId == model.ClientId).ToList(); + } + return messageInfos; + } + + public List GetFullList() + { + using var context = new SecuritySystemDatabase(); + return context.MessageInfos.Include(x => x.Client).Select(x => x.GetViewModel).ToList(); + } + + public MessageInfoViewModel? Insert(MessageInfoBindingModel model) + { + var messageInfo = MessageInfo.Create(model); + if (messageInfo == null) + { + return null; + } + using var context = new SecuritySystemDatabase(); + context.MessageInfos.Add(messageInfo); + context.SaveChanges(); + return messageInfo.GetViewModel; + } + } +} diff --git a/SecuritySystem/SecuritySystemDatabaseImplement/Models/MessageInfo.cs b/SecuritySystem/SecuritySystemDatabaseImplement/Models/MessageInfo.cs new file mode 100644 index 0000000..3ebba42 --- /dev/null +++ b/SecuritySystem/SecuritySystemDatabaseImplement/Models/MessageInfo.cs @@ -0,0 +1,75 @@ +using SecuritySystemContracts.BindingModels; +using SecuritySystemContracts.ViewModels; +using SecuritySystemDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.MessageInfoModel.DataAnnotations.Schema; + +namespace SecuritySystemDatabaseImplement.Models +{ + public class MessageInfo : IMessageInfoModel + { + [Required] + public string MessageId { get; set; } = string.Empty; + public int? ClientId { get; set; } + public virtual Client? Client { get; set; } + [Required] + public string SenderName { get; set; } = string.Empty; + [Required] + public DateTime DateDelivery { get; set; } = DateTime.Now; + [Required] + public string Subject { get; set; } = string.Empty; + [Required] + public string Body { get; set; } = string.Empty; + + public static MessageInfo? Create(MessageInfoBindingModel model) + { + if (model == null) + { + return null; + } + return new MessageInfo() + { + MessageId = model.MessageId, + ClientId = model.ClientId, + SenderName = model.SenderName, + DateDelivery = model.DateDelivery, + Subject = model.Subject, + Body = model.Body, + }; + } + public static MessageInfo Create(MessageInfoViewModel model) + { + return new MessageInfo + { + MessageId = model.MessageId, + ClientId = model.ClientId, + SenderName = model.SenderName, + DateDelivery = model.DateDelivery, + Subject = model.Subject, + Body = model.Body, + }; + } + public void Update(MessageInfoBindingModel model) + { + if (model == null) + { + return; + } + MessageId = model.MessageId; + ClientId = model.ClientId; + SenderName = model.SenderName; + DateDelivery = model.DateDelivery; + Subject = model.Subject; + Body = model.Body; + } + public MessageInfoViewModel GetViewModel => new() + { + MessageId = MessageId, + ClientId = ClientId, + SenderName = SenderName, + DateDelivery = DateDelivery, + Subject = Subject, + Body = Body, + }; + } +} diff --git a/SecuritySystem/SecuritySystemDatabaseImplement/SecuritySystemDatabase.cs b/SecuritySystem/SecuritySystemDatabaseImplement/SecuritySystemDatabase.cs index fc7c55b..7a74eae 100644 --- a/SecuritySystem/SecuritySystemDatabaseImplement/SecuritySystemDatabase.cs +++ b/SecuritySystem/SecuritySystemDatabaseImplement/SecuritySystemDatabase.cs @@ -21,6 +21,7 @@ namespace SecuritySystemDatabaseImplement public virtual DbSet Orders { set; get; } public virtual DbSet Clients { set; get; } public virtual DbSet Implementers { set; get; } + public virtual DbSet MessageInfos { set; get; } } }