From bc264ce150fb43066117b4836b39a8d2ff781c7e Mon Sep 17 00:00:00 2001 From: Viltskaa Date: Fri, 7 Apr 2023 13:46:29 +0400 Subject: [PATCH] Add storage --- .../HotelDatabaseImplement.csproj | 4 - .../Implements/CleaningInstrumentsStorage.cs | 72 +++++++++++++++++ .../Implements/CleaningStorage.cs | 69 ++++++++++++++++ .../Implements/GuestStorage.cs | 72 +++++++++++++++++ .../Implements/MaitreStorage.cs | 71 ++++++++++++++++ .../Implements/ReservationStorage.cs | 70 ++++++++++++++++ .../Implements/RoomStorage.cs | 80 +++++++++++++++++++ 7 files changed, 434 insertions(+), 4 deletions(-) create mode 100644 Hotel/HotelDatabaseImplement/Implements/CleaningInstrumentsStorage.cs create mode 100644 Hotel/HotelDatabaseImplement/Implements/CleaningStorage.cs create mode 100644 Hotel/HotelDatabaseImplement/Implements/GuestStorage.cs create mode 100644 Hotel/HotelDatabaseImplement/Implements/MaitreStorage.cs create mode 100644 Hotel/HotelDatabaseImplement/Implements/ReservationStorage.cs create mode 100644 Hotel/HotelDatabaseImplement/Implements/RoomStorage.cs diff --git a/Hotel/HotelDatabaseImplement/HotelDatabaseImplement.csproj b/Hotel/HotelDatabaseImplement/HotelDatabaseImplement.csproj index 0018b83..8ad906c 100644 --- a/Hotel/HotelDatabaseImplement/HotelDatabaseImplement.csproj +++ b/Hotel/HotelDatabaseImplement/HotelDatabaseImplement.csproj @@ -6,10 +6,6 @@ enable - - - - diff --git a/Hotel/HotelDatabaseImplement/Implements/CleaningInstrumentsStorage.cs b/Hotel/HotelDatabaseImplement/Implements/CleaningInstrumentsStorage.cs new file mode 100644 index 0000000..90ab085 --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/CleaningInstrumentsStorage.cs @@ -0,0 +1,72 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class CleaningInstrumentsStorage : ICleaningInstrumentsStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + return context.CleaningInstruments + .Select(x => x.GetView) + .ToList(); + } + + public List GetFilteredList(CleaningInstrumentsSearchModel model) + { + if (string.IsNullOrEmpty(model.Type)) + { + return new List(); + } + using var context = new HotelDataBase(); + return context.CleaningInstruments + .Where(x => x.Type == model.Type) + .Select(x => x.GetView) + .ToList(); + } + + public CleaningInstrumentsViewModel? GetElement(CleaningInstrumentsSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.CleaningInstruments.FirstOrDefault(x => x.Id == model.Id)?.GetView; + } + + public CleaningInstrumentsViewModel? Insert(CleaningInstrumentsBindingModel model) + { + var item = CleaningInstruments.Create(model); + + using var context = new HotelDataBase(); + context.CleaningInstruments.Add(item); + context.SaveChanges(); + + return item.GetView; + } + + public CleaningInstrumentsViewModel? Update(CleaningInstrumentsBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.CleaningInstruments + .FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetView; + } + + public CleaningInstrumentsViewModel? Delete(CleaningInstrumentsBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.CleaningInstruments + .FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.CleaningInstruments.Remove(item); + context.SaveChanges(); + return item.GetView; + } +} \ No newline at end of file diff --git a/Hotel/HotelDatabaseImplement/Implements/CleaningStorage.cs b/Hotel/HotelDatabaseImplement/Implements/CleaningStorage.cs new file mode 100644 index 0000000..6352dff --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/CleaningStorage.cs @@ -0,0 +1,69 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class CleaningStorage : ICleaningStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + return context.Cleanings + .Select(x => x.GetView) + .ToList(); + } + + public List GetFilteredList(CleaningSearchModel model) + { + if (!model.To.HasValue || !model.From.HasValue) + return new List(); + + using var context = new HotelDataBase(); + return context.Cleanings + .Where(x => x.Date >= model.From && x.Date <= model.To) + .Select(x => x.GetView) + .ToList(); + } + + public CleaningViewModel? GetElement(CleaningSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.Cleanings.FirstOrDefault(x => x.Id == model.Id)?.GetView; + } + + public CleaningViewModel? Insert(CleaningBindingModel model) + { + using var context = new HotelDataBase(); + var item = Cleaning.Create(context, model); + + context.Cleanings.Add(item); + context.SaveChanges(); + + return item.GetView; + } + + public CleaningViewModel? Update(CleaningBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Cleanings.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetView; + } + + public CleaningViewModel? Delete(CleaningBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Cleanings.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.Cleanings.Remove(item); + context.SaveChanges(); + return item.GetView; + } +} \ No newline at end of file diff --git a/Hotel/HotelDatabaseImplement/Implements/GuestStorage.cs b/Hotel/HotelDatabaseImplement/Implements/GuestStorage.cs new file mode 100644 index 0000000..030a4b3 --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/GuestStorage.cs @@ -0,0 +1,72 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class GuestStorage : IGuestStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + return context.Guests + .Select(x => x.GetView) + .ToList(); + } + + public List GetFilteredList(GuestSearchModel model) + { + if (string.IsNullOrEmpty(model.Name)) + { + return new List(); + } + + using var context = new HotelDataBase(); + return context.Guests + .Where(x => x.Name == model.Name) + .Select(x => x.GetView) + .ToList(); + } + + public GuestViewModel? GetElement(GuestSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.Guests.FirstOrDefault(x => x.Id == model.Id)?.GetView; + } + + public GuestViewModel? Insert(GuestBindingModel model) + { + var item = Guest.Create(model); + if (item == null) return null; + + using var context = new HotelDataBase(); + context.Guests.Add(item); + context.SaveChanges(); + + return item.GetView; + } + + public GuestViewModel? Update(GuestBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Guests.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetView; + } + + public GuestViewModel? Delete(GuestBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Guests.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.Guests.Remove(item); + context.SaveChanges(); + return item.GetView; + } +} \ No newline at end of file diff --git a/Hotel/HotelDatabaseImplement/Implements/MaitreStorage.cs b/Hotel/HotelDatabaseImplement/Implements/MaitreStorage.cs new file mode 100644 index 0000000..a65a7a0 --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/MaitreStorage.cs @@ -0,0 +1,71 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class MaitreStorage : IMaitreStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + return context.Maitres + .Select(x => x.GetViewModel) + .ToList(); + } + + public List GetFilteredList(MaitreSearchModel model) + { + if (string.IsNullOrEmpty(model.Login)) + { + return new List(); + } + + using var context = new HotelDataBase(); + return context.Maitres + .Where(x => x.Login == model.Login) + .Select(x => x.GetViewModel) + .ToList(); + } + + public MaitreViewModel? GetElement(MaitreSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.Maitres.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; + } + + public MaitreViewModel? Insert(MaitreBindingModel model) + { + var item = Maitre.Create(model); + + using var context = new HotelDataBase(); + context.Maitres.Add(item); + context.SaveChanges(); + + return item.GetViewModel; + } + + public MaitreViewModel? Update(MaitreBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Maitres.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetViewModel; + } + + public MaitreViewModel? Delete(MaitreBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Maitres.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.Maitres.Remove(item); + context.SaveChanges(); + return item.GetViewModel; + } +} \ No newline at end of file diff --git a/Hotel/HotelDatabaseImplement/Implements/ReservationStorage.cs b/Hotel/HotelDatabaseImplement/Implements/ReservationStorage.cs new file mode 100644 index 0000000..0c6a8ae --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/ReservationStorage.cs @@ -0,0 +1,70 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class ReservationStorage : IReservationStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + + return context.Reservations + .Select(x => x.GetView) + .ToList(); + } + + public List GetFilteredList(ReservationSearchModel model) + { + if (!model.From.HasValue || !model.To.HasValue) + return new List(); + using var context = new HotelDataBase(); + return context.Reservations + .Where(x => x.StartDate >= model.From && x.StartDate <= model.To) + .Select(x => x.GetView) + .ToList(); + } + + public ReservationViewModel? GetElement(ReservationSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.Reservations.FirstOrDefault(x => x.Id == model.Id)?.GetView; + } + + public ReservationViewModel? Insert(ReservationBindingModel model) + { + using var context = new HotelDataBase(); + var item = Reservation.Create(context, model); + if (item == null) return null; + + context.Reservations.Add(item); + context.SaveChanges(); + + return item.GetView; + } + + public ReservationViewModel? Update(ReservationBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Reservations.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetView; + } + + public ReservationViewModel? Delete(ReservationBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Reservations.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.Reservations.Remove(item); + context.SaveChanges(); + return item.GetView; + } +} \ No newline at end of file diff --git a/Hotel/HotelDatabaseImplement/Implements/RoomStorage.cs b/Hotel/HotelDatabaseImplement/Implements/RoomStorage.cs new file mode 100644 index 0000000..33041e9 --- /dev/null +++ b/Hotel/HotelDatabaseImplement/Implements/RoomStorage.cs @@ -0,0 +1,80 @@ +using HotelContracts.BindingModels; +using HotelContracts.SearchModels; +using HotelContracts.StoragesContracts; +using HotelContracts.ViewModels; +using HotelDatabaseImplement.Models; + +namespace HotelDatabaseImplement.Implements; + +public class RoomStorage : IRoomStorage +{ + public List GetFullList() + { + using var context = new HotelDataBase(); + return context.Rooms + .Select(x => x.GetView) + .ToList(); + } + + public List GetFilteredList(RoomSearchModel model) + { + if (string.IsNullOrEmpty(model.Type)) + { + return new List(); + } + + using var context = new HotelDataBase(); + if (model.Cost.HasValue) + { + return context.Rooms + .Where(x => x.Cost <= model.Cost) + .Select(x => x.GetView) + .ToList(); + } + + return context.Rooms + .Where(x => x.Type == model.Type) + .Select(x => x.GetView) + .ToList(); + } + + public RoomViewModel? GetElement(RoomSearchModel model) + { + if (!model.Id.HasValue) return null; + using var context = new HotelDataBase(); + return context.Rooms.FirstOrDefault(x => x.Id == model.Id)?.GetView; + } + + public RoomViewModel? Insert(RoomBindingModel model) + { + var item = Room.Create(model); + if (item == null) return null; + + using var context = new HotelDataBase(); + context.Rooms.Add(item); + context.SaveChanges(); + + return item.GetView; + } + + public RoomViewModel? Update(RoomBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Rooms.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + + item.Update(model); + context.SaveChanges(); + return item.GetView; + } + + public RoomViewModel? Delete(RoomBindingModel model) + { + using var context = new HotelDataBase(); + var item = context.Rooms.FirstOrDefault(x => x.Id == model.Id); + if (item == null) return null; + context.Rooms.Remove(item); + context.SaveChanges(); + return item.GetView; + } +} \ No newline at end of file