From 843ccbe0171cbe7224d25c5805046a5299374de1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=91=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=B0=D1=8F?= Date: Sat, 4 May 2024 21:12:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BB=D0=B0=20=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D1=82=D1=8C=D0=B5=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=D1=89=D0=B5=20=D1=83=D1=84=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/MessageInfoStorage.cs | 60 +++++++++++++++++++ .../Models/MessageInfo.cs | 53 ++++++++++++++++ SushiBarDatabaseImplement/SushiBarDatabase.cs | 1 + 3 files changed, 114 insertions(+) create mode 100644 SushiBarDatabaseImplement/Implements/MessageInfoStorage.cs create mode 100644 SushiBarDatabaseImplement/Models/MessageInfo.cs diff --git a/SushiBarDatabaseImplement/Implements/MessageInfoStorage.cs b/SushiBarDatabaseImplement/Implements/MessageInfoStorage.cs new file mode 100644 index 0000000..37f3368 --- /dev/null +++ b/SushiBarDatabaseImplement/Implements/MessageInfoStorage.cs @@ -0,0 +1,60 @@ +using Microsoft.EntityFrameworkCore; +using SushiBarContracts.BindingModel; +using SushiBarContracts.SearchModel; +using SushiBarContracts.StoragesContracts; +using SushiBarContracts.ViewModels; +using SushiBarDatabaseImplement.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarDatabaseImplement.Implements +{ + public class MessageInfoStorage : IMessageInfoStorage + { + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) + { + using var context = new SushiBarDatabase(); + if(string.IsNullOrEmpty(model.MessageId)) return null; + return context.Messages + .Include(x => x.Client) + .FirstOrDefault(x => x.MessageId == model.MessageId)? + .GetViewModel; + } + + public List GetFilteredList(MessageInfoSearchModel model) + { + using var context = new SushiBarDatabase(); + if (model.ClientId.HasValue) + { + return context.Messages + .Include(x => x.Client) + .Where(x => x.ClientId == model.ClientId) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + + public List GetFullList() + { + using var context = new SushiBarDatabase(); + return context.Messages + .Include(x => x.Client) + .Select(x => x.GetViewModel) + .ToList(); + } + + public MessageInfoViewModel? Insert(MessageInfoBindingModel model) + { + using var context = new SushiBarDatabase(); + var newMessage = MessageInfo.Create(model); + if(newMessage == null) return null; + context.Messages.Add(newMessage); + context.SaveChanges(); + return newMessage.GetViewModel; + } + } +} diff --git a/SushiBarDatabaseImplement/Models/MessageInfo.cs b/SushiBarDatabaseImplement/Models/MessageInfo.cs new file mode 100644 index 0000000..989ec72 --- /dev/null +++ b/SushiBarDatabaseImplement/Models/MessageInfo.cs @@ -0,0 +1,53 @@ +using SushiBarContracts.BindingModel; +using SushiBarContracts.ViewModels; +using SushiBarDataModels; +using System.ComponentModel.DataAnnotations; + +namespace SushiBarDatabaseImplement.Models +{ + public class MessageInfo : IMessageInfoModel + { + [Key] + public string MessageId { get; set; } = string.Empty; + + public int? ClientId { 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 virtual Client? Client { get; set; } + + 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 MessageInfoViewModel GetViewModel => new() + { + MessageId = MessageId, + ClientId = ClientId, + SenderName = SenderName, + DateDelivery = DateDelivery, + Subject = Subject, + Body = Body, + }; + } +} diff --git a/SushiBarDatabaseImplement/SushiBarDatabase.cs b/SushiBarDatabaseImplement/SushiBarDatabase.cs index c85497c..f72ec3d 100644 --- a/SushiBarDatabaseImplement/SushiBarDatabase.cs +++ b/SushiBarDatabaseImplement/SushiBarDatabase.cs @@ -26,5 +26,6 @@ namespace SushiBarDatabaseImplement public virtual DbSet Orders { set; get; } public virtual DbSet Clients { set; get; } public virtual DbSet Implementers { set; get; } + public virtual DbSet Messages { set; get; } } }