From ae008bcd896b8afb25c25a1c2778ec0e38ffde40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D1=88=D0=B8=D0=BD=20=D0=9C=D0=B0=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D0=BC?= Date: Wed, 5 Apr 2023 22:26:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20DinnerStorage=20=D0=B2=20HotelDataBaseImpl?= =?UTF-8?q?ement.Implemets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implemets/DinnerStorage.cs | 120 ++++++++++++++++++ Hotel/HotelDataBaseImplement/Models/Dinner.cs | 5 +- 2 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 Hotel/HotelDataBaseImplement/Implemets/DinnerStorage.cs diff --git a/Hotel/HotelDataBaseImplement/Implemets/DinnerStorage.cs b/Hotel/HotelDataBaseImplement/Implemets/DinnerStorage.cs new file mode 100644 index 0000000..99d319b --- /dev/null +++ b/Hotel/HotelDataBaseImplement/Implemets/DinnerStorage.cs @@ -0,0 +1,120 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDataBaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HotelDataBaseImplement.Implemets +{ + public class DinnerStorage : IDinnerStorage + { + public DinnerViewModel? Delete(DinnerBindingModel model) + { + using var context = new HotelDataBase(); + + var element = context.Dinners.FirstOrDefault(rec => rec.Id == model.Id); + + if (element != null) + { + context.Dinners.Remove(element); + context.SaveChanges(); + + return element.GetViewModel; + } + + return null; + } + + public DinnerViewModel? GetElement(DinnerSearchModel model) + { + if (string.IsNullOrEmpty(model.DinnerName) && !model.Id.HasValue) + { + return null; + } + + using var context = new HotelDataBase(); + + return context.Dinners + .Include(x => x.RoomDinners) + .ThenInclude(x => x.Room) + .Include(x => x.ConferenceBookingDinners) + .ThenInclude(x => x.ConferenceBooking) + .FirstOrDefault(x => (!string.IsNullOrEmpty(model.DinnerName) && x.DinnerName == model.DinnerName) || (model.Id.HasValue && x.Id == model.Id))? + .GetViewModel; + } + + public List GetFilteredList(DinnerSearchModel model) + { + if (string.IsNullOrEmpty(model.DinnerName)) + { + return new(); + } + + using var context = new HotelDataBase(); + + return context.Dinners + .Include(x => x.RoomDinners) + .ThenInclude(x => x.Room) + .Include(x => x.ConferenceBookingDinners) + .ThenInclude(x => x.ConferenceBooking) + .Where(x => x.DinnerName.Contains(model.DinnerName)) + .ToList() + .Select(x => x.GetViewModel) + .ToList(); + } + + public List GetFullList() + { + using var context = new HotelDataBase(); + + return context.Dinners + .Include(x => x.RoomDinners) + .ThenInclude(x => x.Room) + .Include(x => x.ConferenceBookingDinners) + .ThenInclude(x => x.ConferenceBooking) + .ToList() + .Select(x => x.GetViewModel) + .ToList(); + } + + public DinnerViewModel? Insert(DinnerBindingModel model) + { + using var context = new HotelDataBase(); + + var newDinner = Dinner.Create(model); + + if (newDinner == null) + { + return null; + } + + context.Dinners.Add(newDinner); + context.SaveChanges(); + + return newDinner.GetViewModel; + } + + public DinnerViewModel? Update(DinnerBindingModel model) + { + using var context = new HotelDataBase(); + + var dinner = context.Dinners.FirstOrDefault(x => x.Id == model.Id); + + if (dinner == null) + { + return null; + } + + dinner.Update(model); + context.SaveChanges(); + + return dinner.GetViewModel; + } + } +} diff --git a/Hotel/HotelDataBaseImplement/Models/Dinner.cs b/Hotel/HotelDataBaseImplement/Models/Dinner.cs index 0a701e4..11e5f13 100644 --- a/Hotel/HotelDataBaseImplement/Models/Dinner.cs +++ b/Hotel/HotelDataBaseImplement/Models/Dinner.cs @@ -1,4 +1,5 @@ -using HotelDataModels.Models; +using HotelContracts.ViewModels; +using HotelDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -27,6 +28,6 @@ namespace HotelDataBaseImplement.Models [ForeignKey("DinnercId")] public virtual List ConferenceBookingDinners { get; set; } - + public DinnerViewModel? GetViewModel { get; internal set; } } }