From 2ca5dfc3b6125378fa0c2d7a46f3b8515b4e4130 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 15:33:00 +0400 Subject: [PATCH 01/20] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BC=D0=B8=D0=BA=D1=80=D0=BE=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingModels/OrderBindingModel.cs | 1 + .../ViewModels/OrderViewModel.cs | 3 + .../CarCenterDatabaseImplement.csproj | 1 - .../Models/Order.cs | 70 ++++++++++++++++++ .../Models/Presale.cs | 62 ++++++++++++++++ .../Models/Request.cs | 53 ++++++++++++++ .../Models/Worker.cs | 71 +++++++++++++++++++ 7 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Order.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Presale.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Request.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Worker.cs diff --git a/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs index 8b2bc0b..a175e49 100644 --- a/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs @@ -11,6 +11,7 @@ namespace CarCenterContracts.BindingModels public class OrderBindingModel : IOrderModel { public int Id { get; set; } + public int WorkerId { get; set; } public PaymentType PaymentType { get; set; } = PaymentType.Неизвестно; public PaymentStatus PaymentStatus { get; set; } = PaymentStatus.Неизвестно; diff --git a/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs index 19ba223..9187fe5 100644 --- a/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs @@ -12,6 +12,9 @@ namespace CarCenterContracts.ViewModels public class OrderViewModel : IOrderModel { public int Id { get; set; } + public int? WorkerId { get; set; } + [DisplayName("Имя работника")] + public string WorkerName { get; set; } = string.Empty; [DisplayName("Тип оплаты")] public PaymentType PaymentType { get; set; } = PaymentType.Неизвестно; [DisplayName("Статус оплаты")] diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj index 16d1806..468320d 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj @@ -7,7 +7,6 @@ - diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs new file mode 100644 index 0000000..c4881c6 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -0,0 +1,70 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Order + { + public int Id { get; set; } + public int WorkerId { get; set; } + [Required] + public PaymentType PaymentType { get; set; } = PaymentType.Неизвестно; + [Required] + public PaymentStatus PaymentStatus { get; set; } = PaymentStatus.Неизвестно; + [Required] + public string BuyerFCS { get; set; } = string.Empty; + public DateTime PaymentDate { get; set; } + [Required] + public double Sum { get; set; } + public virtual Worker Worker { get; set; } + + public static Order? Create(OrderBindingModel? model) + { + if (model == null) + { + return null; + } + return new Order() + { + Id = model.Id, + WorkerId = model.WorkerId, + PaymentType = model.PaymentType, + PaymentStatus = model.PaymentStatus, + BuyerFCS = model.BuyerFCS, + PaymentDate = model.PaymentDate, + Sum = model.Sum + }; + } + + public void Update(OrderBindingModel? model) + { + if (model == null) + { + return; + } + WorkerId = model.WorkerId; + PaymentDate = model.PaymentDate; + PaymentType = model.PaymentType; + Sum = model.Sum; + } + + public OrderViewModel GetViewModel => new() + { + Id = Id, + WorkerId = WorkerId, + WorkerName = Worker?.Name ?? string.Empty, + PaymentType = PaymentType, + PaymentStatus = PaymentStatus, + BuyerFCS = BuyerFCS, + PaymentDate = PaymentDate, + Sum = Sum + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs new file mode 100644 index 0000000..881e8d1 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs @@ -0,0 +1,62 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Presale + { + public int Id { get; set; } + [Required] + public PresaleStatus PresaleStatus { get; set; } = PresaleStatus.Неизвестно; + [Required] + public string Description { get; set; } = string.Empty; + [Required] + public DateTime DueTill { get; set; } + [Required] + public double Price { get; set; } + + public static Presale? Create(PresaleBindingModel? model) + { + if (model == null) + { + return null; + } + return new Presale() + { + Id = model.Id, + PresaleStatus = model.PresaleStatus, + Description = model.Description, + Price = model.Price, + DueTill = model.DueTill, + }; + } + + public void Update(PresaleBindingModel? model) + { + if (model == null) + { + return; + } + Description = model.Description; + Price = model.Price; + DueTill = model.DueTill; + PresaleStatus = model.PresaleStatus; + } + + public PresaleViewModel GetViewModel => new() + { + Id = Id, + PresaleStatus = PresaleStatus, + Description = Description, + DueTill = DueTill, + Price = Price, + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Request.cs b/CarCenter/CarCenterDatabaseImplement/Models/Request.cs new file mode 100644 index 0000000..1e28f2a --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Request.cs @@ -0,0 +1,53 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Request : IRequestModel + { + public int Id { get; set; } + [Required] + public string Description { get; set; } = string.Empty; + [Required] + public RequestTypes RequestType { get; set; } = RequestTypes.Неизвестно; + + public static Request? Create(RequestBindingModel? model) + { + if (model == null) + { + return null; + } + return new Request() + { + Id = model.Id, + Description = model.Description, + RequestType = model.RequestType, + }; + } + + public void Update(RequestBindingModel? model) + { + if (model == null) + { + return; + } + Description = model.Description; + RequestType = model.RequestType; + } + + public RequestViewModel GetViewModel => new() + { + Id = Id, + Description = Description, + RequestType = RequestType, + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs b/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs new file mode 100644 index 0000000..131759b --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs @@ -0,0 +1,71 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Worker + { + public int Id { get; set; } + [Required] + public string Name { get; set; } = string.Empty; + [Required] + public string Surname { get; set; } = string.Empty; + public string? Patronymic { get; set; } + [Required] + public string Password { get; set; } = string.Empty; + [Required] + public string Email { get; set; } = string.Empty; + [Required] + public long PhoneNumber { get; set; } + [ForeignKey("WorkerId")] + public virtual List Orders { get; set; } = new(); + + public static Worker? Create(WorkerBindingModel? model) + { + if (model == null) + { + return null; + } + return new Worker() + { + Id = model.Id, + Name = model.Name, + Surname = model.Surname, + Patronymic = model.Patronymic, + Password = model.Password, + Email = model.Email, + PhoneNumber = model.PhoneNumber, + }; + } + + public void Update(WorkerBindingModel? model) + { + if (model == null) + { + return; + } + Password = model.Password; + Email = model.Email; + PhoneNumber = model.PhoneNumber; + } + + public WorkerViewModel GetViewModel => new() + { + Id = Id, + Name = Name, + Surname = Surname, + Patronymic = Patronymic, + Password = Password, + Email = Email, + PhoneNumber = PhoneNumber, + }; + } +} From 51b9662d5babb8095ed9100f03dc79f82f9d9f92 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 15:35:24 +0400 Subject: [PATCH 02/20] =?UTF-8?q?=D0=97=D0=B0=D0=B1=D1=8B=D0=BB=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D0=BB=D0=B5=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CarCenter/CarCenterDatabaseImplement/Models/Order.cs | 3 ++- CarCenter/CarCenterDatabaseImplement/Models/Presale.cs | 3 ++- CarCenter/CarCenterDatabaseImplement/Models/Worker.cs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index c4881c6..c50160a 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -1,6 +1,7 @@ using CarCenterContracts.BindingModels; using CarCenterContracts.ViewModels; using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -10,7 +11,7 @@ using System.Threading.Tasks; namespace CarCenterDatabaseImplement.Models { - public class Order + public class Order : IOrderModel { public int Id { get; set; } public int WorkerId { get; set; } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs index 881e8d1..88be5bc 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs @@ -1,6 +1,7 @@ using CarCenterContracts.BindingModels; using CarCenterContracts.ViewModels; using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -10,7 +11,7 @@ using System.Threading.Tasks; namespace CarCenterDatabaseImplement.Models { - public class Presale + public class Presale : IPresaleModel { public int Id { get; set; } [Required] diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs b/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs index 131759b..32a9145 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Worker.cs @@ -1,6 +1,7 @@ using CarCenterContracts.BindingModels; using CarCenterContracts.ViewModels; using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -11,7 +12,7 @@ using System.Threading.Tasks; namespace CarCenterDatabaseImplement.Models { - public class Worker + public class Worker : IWorkerModel { public int Id { get; set; } [Required] From a6d02527450a2cd1e52343afeca9d0a17d8bedd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 15:33:53 +0400 Subject: [PATCH 03/20] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20?= =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/Bundling.cs | 72 ++++++++++++++ .../CarCenterDatabaseImplement/Models/Car.cs | 93 +++++++++++++++++++ .../Models/Feature.cs | 73 +++++++++++++++ .../Models/Storekeeper.cs | 12 +++ 4 files changed, 250 insertions(+) create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Car.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Feature.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs new file mode 100644 index 0000000..1a92d72 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs @@ -0,0 +1,72 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Bundling : IBundlingModel + { + public int Id { get; private set; } + [Required] + public EquipmentPackage EquipmentPackage { get; set; } = EquipmentPackage.Неизвестно; + [Required] + public TirePackage TirePackage { get; set; } = TirePackage.Неизвестно; + [Required] + public ToolKit ToolKit { get; set; } = ToolKit.Неизвестно; + [Required] + public double Price { get; set; } + public static Bundling? Create(BundlingBindingModel model) + { + if (model == null) + { + return null; + } + return new Bundling() + { + Id = model.Id, + EquipmentPackage = model.EquipmentPackage, + TirePackage = model.TirePackage, + ToolKit = model.ToolKit, + Price = model.Price, + }; + } + public static Bundling Create(BundlingViewModel model) + { + return new Bundling + { + Id = model.Id, + EquipmentPackage = model.EquipmentPackage, + TirePackage = model.TirePackage, + ToolKit = model.ToolKit, + Price = model.Price, + }; + } + public void Update(BundlingBindingModel model) + { + if (model == null) + { + return; + } + EquipmentPackage = model.EquipmentPackage; + TirePackage = model.TirePackage; + ToolKit = model.ToolKit; + Price = model.Price; + } + public BundlingViewModel GetViewModel => new() + { + Id = Id, + EquipmentPackage = EquipmentPackage, + TirePackage = TirePackage, + ToolKit = ToolKit, + Price = Price, + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs new file mode 100644 index 0000000..d54dc94 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -0,0 +1,93 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Car : ICarModel + { + public int Id { get; private set; } + [Required] + public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; + [Required] + public string Model { get; set; } = string.Empty; + [Required] + public CarClass CarClass { get; set; } = CarClass.Неизвестно; + [Required] + public int Year { get; set; } + [Required] + public double Price { get; set; } + [Required] + public long VINnumber { get; set; } + [Required] + public int FeatureID { get; set; } + public Dictionary CarBundlings { get; set; } = new(); + + public static Car? Create(CarBindingModel model) + { + if (model == null) + { + return null; + } + return new Car() + { + Id = model.Id, + CarBrand = model.CarBrand, + Model = model.Model, + CarClass = model.CarClass, + Year = model.Year, + Price = model.Price, + VINnumber = model.VINnumber, + FeatureID = model.FeatureID, + + }; + } + public static Car Create(CarViewModel model) + { + return new Car + { + Id = model.Id, + CarBrand = model.CarBrand, + Model = model.Model, + CarClass = model.CarClass, + Year = model.Year, + Price = model.Price, + VINnumber = model.VINnumber, + FeatureID = model.FeatureID, + }; + } + public void Update(CarBindingModel model) + { + if (model == null) + { + return; + } + CarBrand = model.CarBrand; + Model = model.Model; + CarClass = model.CarClass; + Year = model.Year; + Price = model.Price; + VINnumber = model.VINnumber; + FeatureID = model.FeatureID; + } + public CarViewModel GetViewModel => new() + { + Id = Id, + CarBrand = CarBrand, + Model = Model, + CarClass = CarClass, + Year = Year, + Price = Price, + VINnumber = VINnumber, + FeatureID = FeatureID, + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs new file mode 100644 index 0000000..590a11d --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs @@ -0,0 +1,73 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels.Enums; +using CarCenterDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Feature : IFeatureModel + { + public int Id { get; private set; } + [Required] + public HelpDevices HelpDevice { get; set; } = HelpDevices.Неизвестно; + [Required] + public string CabinColor { get; set; } = string.Empty; + [Required] + public DriveTypes DriveType { get; set; } = DriveTypes.Неизвестно; + [Required] + public double Price { get; set; } + + public static Feature? Create(FeatureBindingModel model) + { + if (model == null) + { + return null; + } + return new Feature() + { + Id = model.Id, + HelpDevice = model.HelpDevice, + CabinColor = model.CabinColor, + DriveType = model.DriveType, + Price = model.Price, + }; + } + public static Feature Create(FeatureViewModel model) + { + return new Feature + { + Id = model.Id, + HelpDevice = model.HelpDevice, + CabinColor = model.CabinColor, + DriveType = model.DriveType, + Price = model.Price, + }; + } + public void Update(FeatureBindingModel model) + { + if (model == null) + { + return; + } + HelpDevice = model.HelpDevice; + CabinColor = model.CabinColor; + DriveType = model.DriveType; + Price = model.Price; + } + public FeatureViewModel GetViewModel => new() + { + Id = Id, + HelpDevice = HelpDevice, + CabinColor = CabinColor, + DriveType = DriveType, + Price = Price, + }; + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs new file mode 100644 index 0000000..6e5fe08 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class Storekeeper + { + } +} From 55990af493be5f23a3399cd5753b7ceb810ba2b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 15:59:13 +0400 Subject: [PATCH 04/20] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20?= =?UTF-8?q?=D1=8D=D1=82=D0=B0=D0=BF2.=20=D0=A1=D0=B2=D1=8F=D0=B7=D0=B8=20?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D0=BD-=D0=BA=D0=BE-=D0=BC=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingModels/CarBindingModel.cs | 1 + .../ViewModels/CarViewModel.cs | 6 ++ .../CarCenterDatabaseImplement/Models/Car.cs | 27 ++++---- .../Models/Feature.cs | 3 + .../Models/Storekeeper.cs | 63 ++++++++++++++++++- 5 files changed, 83 insertions(+), 17 deletions(-) diff --git a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs index 384066e..0e3f67b 100644 --- a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs @@ -11,6 +11,7 @@ namespace CarCenterContracts.BindingModels public class CarBindingModel : ICarModel { public int Id { get; set; } + public int StorekeeperId { get; set; } public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; public string Model { get; set; } = string.Empty; public CarClass CarClass { get; set; } = CarClass.Неизвестно; diff --git a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs index 429ace7..206d695 100644 --- a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs @@ -12,6 +12,12 @@ namespace CarCenterContracts.ViewModels public class CarViewModel : ICarModel { public int Id { get; set; } + public int? FeatureId { get; set; } + [DisplayName("Цена особенности")] + public double FeaturePrice { get; set; } + public int? StorekeeperId { get; set; } + [DisplayName("Имя работника")] + public string StorekeeperName { get; set; } = string.Empty; [DisplayName("Марка")] public CarBrand CarBrand { get; set; } [DisplayName("Модель")] diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs index d54dc94..c764294 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -15,6 +15,8 @@ namespace CarCenterDatabaseImplement.Models public class Car : ICarModel { public int Id { get; private set; } + public int? StorekeeperId { get; set; } + public int? FeatureId { get; set; } [Required] public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; [Required] @@ -30,6 +32,8 @@ namespace CarCenterDatabaseImplement.Models [Required] public int FeatureID { get; set; } public Dictionary CarBundlings { get; set; } = new(); + public virtual Storekeeper Storekeeper { get; set; } + public virtual Feature Feature { get; set; } public static Car? Create(CarBindingModel model) { @@ -40,21 +44,8 @@ namespace CarCenterDatabaseImplement.Models return new Car() { Id = model.Id, - CarBrand = model.CarBrand, - Model = model.Model, - CarClass = model.CarClass, - Year = model.Year, - Price = model.Price, - VINnumber = model.VINnumber, - FeatureID = model.FeatureID, - - }; - } - public static Car Create(CarViewModel model) - { - return new Car - { - Id = model.Id, + StorekeeperId = model.StorekeeperId, + FeatureId = model.FeatureID, CarBrand = model.CarBrand, Model = model.Model, CarClass = model.CarClass, @@ -70,6 +61,8 @@ namespace CarCenterDatabaseImplement.Models { return; } + StorekeeperId = model.StorekeeperId; + FeatureId = model.FeatureID; CarBrand = model.CarBrand; Model = model.Model; CarClass = model.CarClass; @@ -81,6 +74,10 @@ namespace CarCenterDatabaseImplement.Models public CarViewModel GetViewModel => new() { Id = Id, + StorekeeperId = StorekeeperId, + StorekeeperName = Storekeeper?.Name ?? string.Empty, + FeatureId = FeatureId, + FeaturePrice = Feature?.Price ?? 0, CarBrand = CarBrand, Model = Model, CarClass = CarClass, diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs index 590a11d..2643656 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,6 +24,8 @@ namespace CarCenterDatabaseImplement.Models public DriveTypes DriveType { get; set; } = DriveTypes.Неизвестно; [Required] public double Price { get; set; } + [ForeignKey("FeatureId")] + public virtual List Cars { get; set; } = new(); public static Feature? Create(FeatureBindingModel model) { diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs index 6e5fe08..7b516c7 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs @@ -1,12 +1,71 @@ -using System; +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using CarCenterDataModels.Models; namespace CarCenterDatabaseImplement.Models { - public class Storekeeper + public class Storekeeper : IStorekeeperModel { + public int Id { get; set; } + [Required] + public string Name { get; set; } = string.Empty; + [Required] + public string Surname { get; set; } = string.Empty; + public string? Patronymic { get; set; } + [Required] + public string Password { get; set; } = string.Empty; + [Required] + public string Email { get; set; } = string.Empty; + [Required] + public long PhoneNumber { get; set; } + [ForeignKey("StorekeeperId")] + public virtual List Cars { get; set; } = new(); + + public static Storekeeper? Create(StorekeeperBindingModel? model) + { + if (model == null) + { + return null; + } + return new Storekeeper() + { + Id = model.Id, + Name = model.Name, + Surname = model.Surname, + Patronymic = model.Patronymic, + Password = model.Password, + Email = model.Email, + PhoneNumber = model.PhoneNumber, + }; + } + + public void Update(StorekeeperBindingModel? model) + { + if (model == null) + { + return; + } + Password = model.Password; + Email = model.Email; + PhoneNumber = model.PhoneNumber; + } + + public StorekeeperViewModel GetViewModel => new() + { + Id = Id, + Name = Name, + Surname = Surname, + Patronymic = Patronymic, + Password = Password, + Email = Email, + PhoneNumber = PhoneNumber, + }; } } From 964618c53c2c86eb9098a66e1fb11a0b52079e73 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:09:24 +0400 Subject: [PATCH 05/20] =?UTF-8?q?=D0=92=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingModels/OrderBindingModel.cs | 2 +- .../BindingModels/RequestBindingModel.cs | 1 + .../ViewModels/OrderViewModel.cs | 3 ++- .../ViewModels/RequestViewModel.cs | 5 +++- .../CarCenterDataModels/Models/IOrderModel.cs | 2 ++ .../Models/Order.cs | 24 ++++++++++++++++--- .../Models/OrderPresale.cs | 21 ++++++++++++++++ .../Models/Presale.cs | 6 ++++- .../Models/Request.cs | 6 +++++ 9 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/OrderPresale.cs diff --git a/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs index a175e49..5314f5b 100644 --- a/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/OrderBindingModel.cs @@ -22,6 +22,6 @@ namespace CarCenterContracts.BindingModels public double Sum { get; set; } - + public Dictionary OrderPresales { get; set; } = new(); } } diff --git a/CarCenter/CarCenterContracts/BindingModels/RequestBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/RequestBindingModel.cs index 489770e..692580b 100644 --- a/CarCenter/CarCenterContracts/BindingModels/RequestBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/RequestBindingModel.cs @@ -11,6 +11,7 @@ namespace CarCenterContracts.BindingModels public class RequestBindingModel : IRequestModel { public int Id { get; set; } + public int PresaleId { get; set; } public string Description { get; set; } = string.Empty; public RequestTypes RequestType { get; set; } = RequestTypes.Неизвестно; diff --git a/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs index 9187fe5..b7e83e3 100644 --- a/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/OrderViewModel.cs @@ -12,7 +12,7 @@ namespace CarCenterContracts.ViewModels public class OrderViewModel : IOrderModel { public int Id { get; set; } - public int? WorkerId { get; set; } + public int WorkerId { get; set; } [DisplayName("Имя работника")] public string WorkerName { get; set; } = string.Empty; [DisplayName("Тип оплаты")] @@ -25,5 +25,6 @@ namespace CarCenterContracts.ViewModels public DateTime PaymentDate { get; set; } [DisplayName("Сумма")] public double Sum { get; set; } + public Dictionary OrderPresales { get; set; } = new(); } } diff --git a/CarCenter/CarCenterContracts/ViewModels/RequestViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/RequestViewModel.cs index ed27dbb..ec55682 100644 --- a/CarCenter/CarCenterContracts/ViewModels/RequestViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/RequestViewModel.cs @@ -12,7 +12,10 @@ namespace CarCenterContracts.ViewModels public class RequestViewModel : IRequestModel { public int Id { get; set; } - [DisplayName("Описание")] + public int PresaleId { get; set; } + [DisplayName("Описание работы")] + public string PresaleDescription { get; set; } = string.Empty; + [DisplayName("Описание пожелания")] public string Description { get; set; } = string.Empty; [DisplayName("Тип пожелания")] public RequestTypes RequestType { get; set; } = RequestTypes.Неизвестно; diff --git a/CarCenter/CarCenterDataModels/Models/IOrderModel.cs b/CarCenter/CarCenterDataModels/Models/IOrderModel.cs index d759a28..cfcf4b6 100644 --- a/CarCenter/CarCenterDataModels/Models/IOrderModel.cs +++ b/CarCenter/CarCenterDataModels/Models/IOrderModel.cs @@ -19,5 +19,7 @@ namespace CarCenterDataModels.Models double Sum { get; } + Dictionary OrderPresales { get; } + } } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index c50160a..69642d2 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -5,6 +5,7 @@ using CarCenterDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -25,8 +26,21 @@ namespace CarCenterDatabaseImplement.Models [Required] public double Sum { get; set; } public virtual Worker Worker { get; set; } - - public static Order? Create(OrderBindingModel? model) + private Dictionary? _orderPresales = null; + [ForeignKey("OrderId")] + public virtual List Presales { get; set; } = new(); + public Dictionary OrderPresales + { + get + { + if(_orderPresales == null) + { + _orderPresales = Presales.ToDictionary(recPc => recPc.PresaleId, recPc => recPc.Presale as IPresaleModel); + } + return _orderPresales; + } + } + public static Order? Create(CarCenterDatabase context, OrderBindingModel model) { if (model == null) { @@ -40,7 +54,11 @@ namespace CarCenterDatabaseImplement.Models PaymentStatus = model.PaymentStatus, BuyerFCS = model.BuyerFCS, PaymentDate = model.PaymentDate, - Sum = model.Sum + Sum = model.Sum, + Presales = model.OrderPresales.Select(x => new OrderPresale + { + Presale = context.Presales.First(y => y.Id == y.Key) + }).ToList() }; } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/OrderPresale.cs b/CarCenter/CarCenterDatabaseImplement/Models/OrderPresale.cs new file mode 100644 index 0000000..d8300b4 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/OrderPresale.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class OrderPresale + { + public int Id { get; set; } + [Required] + public int OrderId { get; set; } + [Required] + public int PresaleId { get; set; } + [Required] + public virtual Order Order { get; set; } = new(); + public virtual Presale Presale { get; set; } = new(); + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs index 88be5bc..51b7574 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs @@ -5,6 +5,7 @@ using CarCenterDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -22,7 +23,10 @@ namespace CarCenterDatabaseImplement.Models public DateTime DueTill { get; set; } [Required] public double Price { get; set; } - + [ForeignKey("PresaleId")] + public virtual List Requests { get; set; } = new(); + [ForeignKey("PresaleId")] + public virtual List OrderPresales { get; set; } = new(); public static Presale? Create(PresaleBindingModel? model) { if (model == null) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Request.cs b/CarCenter/CarCenterDatabaseImplement/Models/Request.cs index 1e28f2a..4e4f921 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Request.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Request.cs @@ -14,10 +14,12 @@ namespace CarCenterDatabaseImplement.Models public class Request : IRequestModel { public int Id { get; set; } + public int PresaleId { get; set; } [Required] public string Description { get; set; } = string.Empty; [Required] public RequestTypes RequestType { get; set; } = RequestTypes.Неизвестно; + public virtual Presale Presale { get; set; } public static Request? Create(RequestBindingModel? model) { @@ -28,6 +30,7 @@ namespace CarCenterDatabaseImplement.Models return new Request() { Id = model.Id, + PresaleId = model.PresaleId, Description = model.Description, RequestType = model.RequestType, }; @@ -41,6 +44,7 @@ namespace CarCenterDatabaseImplement.Models } Description = model.Description; RequestType = model.RequestType; + PresaleId = model.PresaleId; } public RequestViewModel GetViewModel => new() @@ -48,6 +52,8 @@ namespace CarCenterDatabaseImplement.Models Id = Id, Description = Description, RequestType = RequestType, + PresaleId = PresaleId, + PresaleDescription = Presale?.Description ?? string.Empty, }; } } From 0432e4887083ec0c43f7e5cfef1ad70e2016cc0c Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:12:20 +0400 Subject: [PATCH 06/20] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20=D0=B2=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterDatabaseImplement/CarCenterDatabase.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs index 040ca9d..e1f6df2 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -19,6 +20,14 @@ namespace CarCenterDatabaseImplement AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); } - + public virtual DbSet Orders { set; get; } + public virtual DbSet Presales { set; get; } + public virtual DbSet OrderPresales { set; get; } + public virtual DbSet Workers { set; get; } + public virtual DbSet Storekeepers { set; get; } + public virtual DbSet Cars { set; get; } + public virtual DbSet Requests { set; get; } + public virtual DbSet Features { set; get; } + public virtual DbSet Bundlings { set; get; } } } From 3819f1ada59fb2bc3f15a86cfb163489ae5dc359 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:17:15 +0400 Subject: [PATCH 07/20] =?UTF-8?q?=D0=92=D1=80=D0=BE=D0=B4=D0=B5=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=87=D0=B0=D1=8F=20=D1=81=D0=B2=D1=8F=D0=B7?= =?UTF-8?q?=D1=8C=20=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=B5=20=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=BC=20=D1=83=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=D0=BF=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterDatabaseImplement/Models/Order.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index 69642d2..fe9fe5c 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -57,7 +57,7 @@ namespace CarCenterDatabaseImplement.Models Sum = model.Sum, Presales = model.OrderPresales.Select(x => new OrderPresale { - Presale = context.Presales.First(y => y.Id == y.Key) + Presale = context.Presales.First(y => y.Id == x.Key) }).ToList() }; } @@ -73,7 +73,21 @@ namespace CarCenterDatabaseImplement.Models PaymentType = model.PaymentType; Sum = model.Sum; } - + public void UpdatePresales(CarCenterDatabase context, OrderBindingModel model) + { + var orderPresales = context.OrderPresales.Where(rec => rec.OrderId == model.Id).ToList(); + var order = context.Orders.First(x => x.Id == Id); + foreach (var pc in model.OrderPresales) + { + context.OrderPresales.Add(new OrderPresale + { + Order = order, + Presale = context.Presales.First(x => x.Id == pc.Key), + }); + context.SaveChanges(); + } + _orderPresales = null; + } public OrderViewModel GetViewModel => new() { Id = Id, From dd8f6dca9eed001d611117c7cadf7ceb93cfcc78 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:19:07 +0400 Subject: [PATCH 08/20] =?UTF-8?q?=D0=9C=D0=B8=D0=B8=D0=B8=D0=BA=D1=80?= =?UTF-8?q?=D0=BE=20=D1=84=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CarCenter/CarCenterDatabaseImplement/Models/Order.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index fe9fe5c..cc80aa9 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -75,7 +75,6 @@ namespace CarCenterDatabaseImplement.Models } public void UpdatePresales(CarCenterDatabase context, OrderBindingModel model) { - var orderPresales = context.OrderPresales.Where(rec => rec.OrderId == model.Id).ToList(); var order = context.Orders.First(x => x.Id == Id); foreach (var pc in model.OrderPresales) { From 9b6262a5ad73772eaf8b5551ccb9c2248fa59c8a Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:21:38 +0400 Subject: [PATCH 09/20] =?UTF-8?q?=D0=98=20=D0=B5=D1=89=D0=B5=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=B8=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CarCenter/CarCenterDatabaseImplement/Models/Order.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index cc80aa9..28f69b7 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -96,7 +96,8 @@ namespace CarCenterDatabaseImplement.Models PaymentStatus = PaymentStatus, BuyerFCS = BuyerFCS, PaymentDate = PaymentDate, - Sum = Sum + Sum = Sum, + OrderPresales = OrderPresales }; } } From 245f5de6ca891b7d48ac2b8e2ac65b424d59cd79 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 16:22:40 +0400 Subject: [PATCH 10/20] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=A2=D0=9E=D0=A7=D0=9D=D0=9E=20=D0=B2=D1=81=D1=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CarCenter/CarCenterDatabaseImplement/Models/Order.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index 28f69b7..c98b75d 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -29,6 +29,7 @@ namespace CarCenterDatabaseImplement.Models private Dictionary? _orderPresales = null; [ForeignKey("OrderId")] public virtual List Presales { get; set; } = new(); + [NotMapped] public Dictionary OrderPresales { get From fb65ccd9a200ede0ef338ffa80918e5b2206a4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 16:41:15 +0400 Subject: [PATCH 11/20] =?UTF-8?q?=D0=9C=D0=BD=D0=BE=D0=B3=D0=B8=D0=B5-?= =?UTF-8?q?=D0=BA=D0=BE-=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=BC=20=D0=9C?= =?UTF-8?q?=D0=B0=D1=88=D0=B8=D0=BD=D0=B0=20=D0=9A=D0=BE=D0=BC=D0=BF=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/CarViewModel.cs | 2 +- .../Models/Bundling.cs | 3 +++ .../CarCenterDatabaseImplement/Models/Car.cs | 25 ++++++++++++++++--- .../Models/CarBundling.cs | 21 ++++++++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/CarBundling.cs diff --git a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs index 206d695..f24ef40 100644 --- a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs @@ -15,7 +15,7 @@ namespace CarCenterContracts.ViewModels public int? FeatureId { get; set; } [DisplayName("Цена особенности")] public double FeaturePrice { get; set; } - public int? StorekeeperId { get; set; } + public int StorekeeperId { get; set; } [DisplayName("Имя работника")] public string StorekeeperName { get; set; } = string.Empty; [DisplayName("Марка")] diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs index 1a92d72..3ce6f7c 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,6 +24,8 @@ namespace CarCenterDatabaseImplement.Models public ToolKit ToolKit { get; set; } = ToolKit.Неизвестно; [Required] public double Price { get; set; } + [ForeignKey("BundlingId")] + public virtual List CarBundling { get; set; } = new(); public static Bundling? Create(BundlingBindingModel model) { if (model == null) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs index c764294..e6adc9b 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -15,7 +16,7 @@ namespace CarCenterDatabaseImplement.Models public class Car : ICarModel { public int Id { get; private set; } - public int? StorekeeperId { get; set; } + public int StorekeeperId { get; set; } public int? FeatureId { get; set; } [Required] public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; @@ -31,11 +32,25 @@ namespace CarCenterDatabaseImplement.Models public long VINnumber { get; set; } [Required] public int FeatureID { get; set; } - public Dictionary CarBundlings { get; set; } = new(); public virtual Storekeeper Storekeeper { get; set; } public virtual Feature Feature { get; set; } - public static Car? Create(CarBindingModel model) + private Dictionary? _carBundlings = null; + [ForeignKey("CarId")] + public virtual List Bundlings { get; set; } = new(); + [NotMapped] + public Dictionary CarBundlings + { + get + { + if (_carBundlings == null) + { + _carBundlings = Bundlings.ToDictionary(recPc => recPc.BundlingId, recPc => recPc.Bundling as IBundlingModel); + } + return _carBundlings; + } + } + public static Car? Create(CarCenterDatabase context, CarBindingModel model) { if (model == null) { @@ -53,6 +68,10 @@ namespace CarCenterDatabaseImplement.Models Price = model.Price, VINnumber = model.VINnumber, FeatureID = model.FeatureID, + Bundlings = model.CarBundlings.Select(x => new CarBundling + { + Bundling = context.Bundlings.First(y => y.Id == x.Key) + }).ToList() }; } public void Update(CarBindingModel model) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/CarBundling.cs b/CarCenter/CarCenterDatabaseImplement/Models/CarBundling.cs new file mode 100644 index 0000000..c0b8ea7 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/CarBundling.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class CarBundling + { + public int Id { get; set; } + [Required] + public int CarId { get; set; } + [Required] + public int BundlingId { get; set; } + [Required] + public virtual Car Car { get; set; } = new(); + public virtual Bundling Bundling { get; set; } = new(); + } +} From 8a4a34b232e21474b7097fecc6988f4ec2cf8b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 16:46:17 +0400 Subject: [PATCH 12/20] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=B5-=D0=BA=D0=BE-?= =?UTF-8?q?=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=BC=20=D0=9C=D0=B0=D1=88=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=9A=D0=BE=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterDatabase.cs | 1 + .../CarCenterDatabaseImplement/Models/Car.cs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs index e1f6df2..e05023a 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs @@ -29,5 +29,6 @@ namespace CarCenterDatabaseImplement public virtual DbSet Requests { set; get; } public virtual DbSet Features { set; get; } public virtual DbSet Bundlings { set; get; } + public virtual DbSet CarBundlings { set; get; } } } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs index e6adc9b..1d6f89d 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -74,6 +74,22 @@ namespace CarCenterDatabaseImplement.Models }).ToList() }; } + + public void UpdateBundlings(CarCenterDatabase context, CarBindingModel model) + { + var car = context.Cars.First(x => x.Id == Id); + foreach (var pc in model.CarBundlings) + { + context.CarBundlings.Add(new CarBundling + { + Car = car, + Bundling = context.Bundlings.First(x => x.Id == pc.Key), + }); + context.SaveChanges(); + } + _carBundlings = null; + } + public void Update(CarBindingModel model) { if (model == null) @@ -104,6 +120,7 @@ namespace CarCenterDatabaseImplement.Models Price = Price, VINnumber = VINnumber, FeatureID = FeatureID, + CarBundlings = CarBundlings, }; } } From 923255d8ecad50adc9d75d73a94f426e1006f9cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 16:58:32 +0400 Subject: [PATCH 13/20] =?UTF-8?q?=D0=9C=D0=BD=D0=BE=D0=B3=D0=B8=D0=B5-?= =?UTF-8?q?=D0=BA=D0=BE-=D0=BC=D0=BD=D0=BE=D0=B3=D0=B8=D0=BC=20=D0=9F?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=BF=D1=80=D0=BE=D0=B4=D0=B0=D0=B6=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=9A?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingModels/PresaleBindingModel.cs | 2 +- .../ViewModels/PresaleViewModel.cs | 1 + .../Models/IPresaleModel.cs | 1 + .../CarCenterDatabase.cs | 1 + .../Models/Bundling.cs | 2 + .../Models/Presale.cs | 37 ++++++++++++++++++- .../Models/PresaleBundling.cs | 22 +++++++++++ 7 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Models/PresaleBundling.cs diff --git a/CarCenter/CarCenterContracts/BindingModels/PresaleBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/PresaleBindingModel.cs index 8797748..7a26689 100644 --- a/CarCenter/CarCenterContracts/BindingModels/PresaleBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/PresaleBindingModel.cs @@ -18,6 +18,6 @@ namespace CarCenterContracts.BindingModels public DateTime DueTill { get; set; } public double Price { get; set; } - + public Dictionary PresaleBundlings { get; set; } = new(); } } diff --git a/CarCenter/CarCenterContracts/ViewModels/PresaleViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/PresaleViewModel.cs index e9c7c56..29843d0 100644 --- a/CarCenter/CarCenterContracts/ViewModels/PresaleViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/PresaleViewModel.cs @@ -20,5 +20,6 @@ namespace CarCenterContracts.ViewModels public DateTime DueTill { get; set; } [DisplayName("Цена")] public double Price { get; set; } + public Dictionary PresaleBundlings { get; set; } = new(); } } diff --git a/CarCenter/CarCenterDataModels/Models/IPresaleModel.cs b/CarCenter/CarCenterDataModels/Models/IPresaleModel.cs index 49d8b3a..6d59bf9 100644 --- a/CarCenter/CarCenterDataModels/Models/IPresaleModel.cs +++ b/CarCenter/CarCenterDataModels/Models/IPresaleModel.cs @@ -17,5 +17,6 @@ namespace CarCenterDataModels.Models double Price { get; } + Dictionary PresaleBundlings { get; } } } diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs index e05023a..a5ba287 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabase.cs @@ -30,5 +30,6 @@ namespace CarCenterDatabaseImplement public virtual DbSet Features { set; get; } public virtual DbSet Bundlings { set; get; } public virtual DbSet CarBundlings { set; get; } + public virtual DbSet PresaleBundlings { set; get; } } } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs index 3ce6f7c..a44931e 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Bundling.cs @@ -26,6 +26,8 @@ namespace CarCenterDatabaseImplement.Models public double Price { get; set; } [ForeignKey("BundlingId")] public virtual List CarBundling { get; set; } = new(); + [ForeignKey("BundlingId")] + public virtual List PresaleBundling { get; set; } = new(); public static Bundling? Create(BundlingBindingModel model) { if (model == null) diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs index 51b7574..7f663e2 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Presale.cs @@ -27,7 +27,22 @@ namespace CarCenterDatabaseImplement.Models public virtual List Requests { get; set; } = new(); [ForeignKey("PresaleId")] public virtual List OrderPresales { get; set; } = new(); - public static Presale? Create(PresaleBindingModel? model) + + private Dictionary? _presaleBundlings = null; + [ForeignKey("PresaleId")] + public virtual List Bundlings { get; set; } = new(); + public Dictionary PresaleBundlings + { + get + { + if (_presaleBundlings == null) + { + _presaleBundlings = Bundlings.ToDictionary(recPc => recPc.BundlingId, recPc => recPc.Bundling as IBundlingModel); + } + return _presaleBundlings; + } + } + public static Presale? Create(CarCenterDatabase context, PresaleBindingModel model) { if (model == null) { @@ -40,9 +55,28 @@ namespace CarCenterDatabaseImplement.Models Description = model.Description, Price = model.Price, DueTill = model.DueTill, + Bundlings = model.PresaleBundlings.Select(x => new PresaleBundling + { + Bundling = context.Bundlings.First(y => y.Id == x.Key) + }).ToList() }; } + public void UpdateBundlings(CarCenterDatabase context, PresaleBindingModel model) + { + var presale = context.Presales.First(x => x.Id == Id); + foreach (var pc in model.PresaleBundlings) + { + context.PresaleBundlings.Add(new PresaleBundling + { + Presale = presale, + Bundling = context.Bundlings.First(x => x.Id == pc.Key), + }); + context.SaveChanges(); + } + _presaleBundlings = null; + } + public void Update(PresaleBindingModel? model) { if (model == null) @@ -62,6 +96,7 @@ namespace CarCenterDatabaseImplement.Models Description = Description, DueTill = DueTill, Price = Price, + PresaleBundlings = PresaleBundlings, }; } } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/PresaleBundling.cs b/CarCenter/CarCenterDatabaseImplement/Models/PresaleBundling.cs new file mode 100644 index 0000000..1c05446 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Models/PresaleBundling.cs @@ -0,0 +1,22 @@ +using CarCenterContracts.SearchModels; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Models +{ + public class PresaleBundling + { + public int Id { get; set; } + [Required] + public int PresaleId { get; set; } + [Required] + public int BundlingId { get; set; } + [Required] + public virtual Presale Presale { get; set; } = new(); + public virtual Bundling Bundling { get; set; } = new(); + } +} From 93835aae7a5d85ea271c46d46513b42168b3e443 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 17:10:27 +0400 Subject: [PATCH 14/20] =?UTF-8?q?=D0=A1=D0=B2=D1=8F=D0=B7=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B=20(=D0=B2=D1=80?= =?UTF-8?q?=D0=BE=D0=B4=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterContracts/BindingModels/CarBindingModel.cs | 1 + CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs | 3 +++ CarCenter/CarCenterDatabaseImplement/Models/Car.cs | 6 ++++++ CarCenter/CarCenterDatabaseImplement/Models/Order.cs | 2 ++ 4 files changed, 12 insertions(+) diff --git a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs index 0e3f67b..5304b2a 100644 --- a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs @@ -12,6 +12,7 @@ namespace CarCenterContracts.BindingModels { public int Id { get; set; } public int StorekeeperId { get; set; } + public int OrderId { get; set; } public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; public string Model { get; set; } = string.Empty; public CarClass CarClass { get; set; } = CarClass.Неизвестно; diff --git a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs index f24ef40..b407cf1 100644 --- a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs @@ -12,6 +12,9 @@ namespace CarCenterContracts.ViewModels public class CarViewModel : ICarModel { public int Id { get; set; } + public int? OrderId { get; set; } + [DisplayName("ФИО покупателя")] + public string BuyerFCS { get; set; } public int? FeatureId { get; set; } [DisplayName("Цена особенности")] public double FeaturePrice { get; set; } diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs index 1d6f89d..4714c0c 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -17,6 +17,7 @@ namespace CarCenterDatabaseImplement.Models { public int Id { get; private set; } public int StorekeeperId { get; set; } + public int OrderId { get; set; } public int? FeatureId { get; set; } [Required] public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; @@ -34,6 +35,7 @@ namespace CarCenterDatabaseImplement.Models public int FeatureID { get; set; } public virtual Storekeeper Storekeeper { get; set; } public virtual Feature Feature { get; set; } + public virtual Order Order { get; set; } private Dictionary? _carBundlings = null; [ForeignKey("CarId")] @@ -61,6 +63,7 @@ namespace CarCenterDatabaseImplement.Models Id = model.Id, StorekeeperId = model.StorekeeperId, FeatureId = model.FeatureID, + OrderId = model.OrderId, CarBrand = model.CarBrand, Model = model.Model, CarClass = model.CarClass, @@ -98,6 +101,7 @@ namespace CarCenterDatabaseImplement.Models } StorekeeperId = model.StorekeeperId; FeatureId = model.FeatureID; + OrderId = model.OrderId; CarBrand = model.CarBrand; Model = model.Model; CarClass = model.CarClass; @@ -113,6 +117,8 @@ namespace CarCenterDatabaseImplement.Models StorekeeperName = Storekeeper?.Name ?? string.Empty, FeatureId = FeatureId, FeaturePrice = Feature?.Price ?? 0, + OrderId = OrderId, + BuyerFCS = Order?.BuyerFCS ?? string.Empty, CarBrand = CarBrand, Model = Model, CarClass = CarClass, diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs index c98b75d..8e2b781 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Order.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Order.cs @@ -26,6 +26,8 @@ namespace CarCenterDatabaseImplement.Models [Required] public double Sum { get; set; } public virtual Worker Worker { get; set; } + [ForeignKey("OrderId")] + public virtual List Cars { get; set; } = new(); private Dictionary? _orderPresales = null; [ForeignKey("OrderId")] public virtual List Presales { get; set; } = new(); From a61d49a15a2cd22fac95f4b2e0edc81a346640c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 17:39:36 +0400 Subject: [PATCH 15/20] StorekeeperStorage implement --- .../CarCenterDatabaseImplement.csproj | 4 - .../Implements/StorekeeperStorage.cs | 99 +++++++++++++++++++ 2 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/StorekeeperStorage.cs diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj index 468320d..77878fd 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj @@ -6,10 +6,6 @@ enable - - - - diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/StorekeeperStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/StorekeeperStorage.cs new file mode 100644 index 0000000..829a214 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/StorekeeperStorage.cs @@ -0,0 +1,99 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class StorekeeperStorage : IStorekeeperStorage + { + public List GetFullList() + { + using var context = new CarCenterDatabase(); + + return context.Storekeepers + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(StorekeeperSearchModel model) + { + if (model == null) + { + return new(); + } + + if (model.Id.HasValue) + { + var res = GetElement(model); + + return res != null ? new() { res } : new(); + } + return new(); + } + + public StorekeeperViewModel? GetElement(StorekeeperSearchModel model) + { + using var context = new CarCenterDatabase(); + + if (model.Id.HasValue) + return context.Storekeepers + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + return null; + } + + + public StorekeeperViewModel? Delete(StorekeeperBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = context.Storekeepers + .FirstOrDefault(x => x.Id == model.Id); + + if (res != null) + { + context.Storekeepers.Remove(res); + context.SaveChanges(); + } + + return res?.GetViewModel; + } + + public StorekeeperViewModel? Insert(StorekeeperBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = Storekeeper.Create(model); + + if (res != null) + { + context.Storekeepers.Add(res); + context.SaveChanges(); + } + + return res?.GetViewModel; + } + + public StorekeeperViewModel? Update(StorekeeperBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = context.Storekeepers.FirstOrDefault(x => x.Id == model.Id); + + if (res != null) + { + res.Update(model); + context.SaveChanges(); + } + + return res?.GetViewModel; + } + } +} From e27d44d93300ba966eb9a7892e7889775d73e837 Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 17:41:43 +0400 Subject: [PATCH 16/20] =?UTF-8?q?=D0=AD=D0=BA=D1=81=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D1=8B=20=D1=81=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=D0=BF=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterDatabaseImplement.csproj | 4 - .../Implements/OrderStorage.cs | 115 ++++++++++++++++++ .../Implements/PresaleStorage.cs | 13 ++ .../Implements/RequestStorage.cs | 13 ++ .../Implements/WorkerStorage.cs | 13 ++ 5 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/OrderStorage.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs diff --git a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj index 468320d..77878fd 100644 --- a/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj +++ b/CarCenter/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj @@ -6,10 +6,6 @@ enable - - - - diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/OrderStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/OrderStorage.cs new file mode 100644 index 0000000..4ac9c04 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/OrderStorage.cs @@ -0,0 +1,115 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class OrderStorage : IOrderStorage + { + public OrderViewModel? Delete(OrderBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Orders + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Orders + .Include(x => x.Worker) + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Orders.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + + public OrderViewModel? GetElement(OrderSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Orders + .Include(x => x.Worker) //рубрика ЭЭЭЭЭЭЭЭЭКсперименты + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + + public List GetFilteredList(OrderSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Orders + .Include(x => x.Worker) + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Orders + .Include(x => x.Worker) + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .Select(x => x.GetViewModel) + .ToList(); + } + + public OrderViewModel? Insert(OrderBindingModel model) + { + using var context = new CarCenterDatabase(); + var newOrder = Order.Create(context,model); + if (newOrder == null) + { + return null; + } + context.Orders.Add(newOrder); + context.SaveChanges(); + return context.Orders + .Include(x => x.Worker) + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .FirstOrDefault(x => x.Id == newOrder.Id) + ?.GetViewModel; + } + + public OrderViewModel? Update(OrderBindingModel model) + { + using var context = new CarCenterDatabase(); + var order = context.Orders.FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return context.Orders + .Include(x => x.Worker) + .Include(x => x.Presales) + .ThenInclude(x => x.Presale) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs new file mode 100644 index 0000000..14b0a17 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs @@ -0,0 +1,13 @@ +using CarCenterContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class PresaleStorage : IPresaleStorage + { + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs new file mode 100644 index 0000000..b2dbd82 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs @@ -0,0 +1,13 @@ +using CarCenterContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class RequestStorage : IRequestStorage + { + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs new file mode 100644 index 0000000..c23ed5f --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs @@ -0,0 +1,13 @@ +using CarCenterContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class WorkerStorage : IWorkerStorage + { + } +} From 8f6f381a25323de39fb1da9f31993c9296e2735a Mon Sep 17 00:00:00 2001 From: Marselchi Date: Sun, 28 Apr 2024 17:52:40 +0400 Subject: [PATCH 17/20] =?UTF-8?q?=D0=92=D1=80=D0=BE=D0=B4=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=88=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/PresaleStorage.cs | 98 ++++++++++++++++++- .../Implements/RequestStorage.cs | 92 ++++++++++++++++- .../Implements/WorkerStorage.cs | 88 ++++++++++++++++- 3 files changed, 275 insertions(+), 3 deletions(-) diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs index 14b0a17..eb7abe1 100644 --- a/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs +++ b/CarCenter/CarCenterDatabaseImplement/Implements/PresaleStorage.cs @@ -1,4 +1,9 @@ -using CarCenterContracts.StoragesContracts; +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -9,5 +14,96 @@ namespace CarCenterDatabaseImplement.Implements { public class PresaleStorage : IPresaleStorage { + public PresaleViewModel? Delete(PresaleBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Presales + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Presales.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + + public PresaleViewModel? GetElement(PresaleSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + + public List GetFilteredList(PresaleSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Select(x => x.GetViewModel) + .ToList(); + } + + public PresaleViewModel? Insert(PresaleBindingModel model) + { + using var context = new CarCenterDatabase(); + var newPresale = Presale.Create(context, model); + if (newPresale == null) + { + return null; + } + context.Presales.Add(newPresale); + context.SaveChanges(); + return context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .FirstOrDefault(x => x.Id == newPresale.Id) + ?.GetViewModel; + } + + public PresaleViewModel? Update(PresaleBindingModel model) + { + using var context = new CarCenterDatabase(); + var order = context.Presales.FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return context.Presales + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } } } diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs index b2dbd82..153bdb5 100644 --- a/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs +++ b/CarCenter/CarCenterDatabaseImplement/Implements/RequestStorage.cs @@ -1,4 +1,9 @@ -using CarCenterContracts.StoragesContracts; +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -9,5 +14,90 @@ namespace CarCenterDatabaseImplement.Implements { public class RequestStorage : IRequestStorage { + public RequestViewModel? Delete(RequestBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Requests + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Requests + .Include(x => x.Presale) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Requests.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + + public RequestViewModel? GetElement(RequestSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Requests + .Include(x => x.Presale) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + + public List GetFilteredList(RequestSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Requests + .Include(x => x.Presale) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Requests + .Include(x => x.Presale) + .Select(x => x.GetViewModel) + .ToList(); + } + + public RequestViewModel? Insert(RequestBindingModel model) + { + using var context = new CarCenterDatabase(); + var newRequest = Request.Create(model); + if (newRequest == null) + { + return null; + } + context.Requests.Add(newRequest); + context.SaveChanges(); + return context.Requests + .Include(x => x.Presale) + .FirstOrDefault(x => x.Id == newRequest.Id) + ?.GetViewModel; + } + + public RequestViewModel? Update(RequestBindingModel model) + { + using var context = new CarCenterDatabase(); + var order = context.Requests.FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return context.Requests + .Include(x => x.Presale) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } } } diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs index c23ed5f..047618b 100644 --- a/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs +++ b/CarCenter/CarCenterDatabaseImplement/Implements/WorkerStorage.cs @@ -1,4 +1,9 @@ -using CarCenterContracts.StoragesContracts; +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -9,5 +14,86 @@ namespace CarCenterDatabaseImplement.Implements { public class WorkerStorage : IWorkerStorage { + public List GetFullList() + { + using var context = new CarCenterDatabase(); + + return context.Workers + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(WorkerSearchModel model) + { + if (model == null) + { + return new(); + } + + if (model.Id.HasValue) + { + var res = GetElement(model); + + return res != null ? new() { res } : new(); + } + return new(); + } + + public WorkerViewModel? GetElement(WorkerSearchModel model) + { + using var context = new CarCenterDatabase(); + + if (model.Id.HasValue) + return context.Workers + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + return null; + } + + + public WorkerViewModel? Delete(WorkerBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = context.Workers + .FirstOrDefault(x => x.Id == model.Id); + + if (res != null) + { + context.Workers.Remove(res); + context.SaveChanges(); + } + + return res?.GetViewModel; + } + + public WorkerViewModel? Insert(WorkerBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = Worker.Create(model); + + if (res != null) + { + context.Workers.Add(res); + context.SaveChanges(); + } + + return res?.GetViewModel; + } + + public WorkerViewModel? Update(WorkerBindingModel model) + { + using var context = new CarCenterDatabase(); + + var res = context.Workers.FirstOrDefault(x => x.Id == model.Id); + + if (res != null) + { + res.Update(model); + context.SaveChanges(); + } + + return res?.GetViewModel; + } } } From b31e48bfc55dd5b03a043654b8091e0311973296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 17:53:04 +0400 Subject: [PATCH 18/20] CarStorage implement --- .../Implements/CarStorage.cs | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/CarStorage.cs diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/CarStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/CarStorage.cs new file mode 100644 index 0000000..906e52b --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/CarStorage.cs @@ -0,0 +1,122 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class CarStorage : ICarStorage + { + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Cars + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(CarSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Cars + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + public CarViewModel? GetElement(CarSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Cars + .Include(x => x.Bundlings) // здесь эксперименты)) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + public CarViewModel? Insert(CarBindingModel model) + { + using var context = new CarCenterDatabase(); + var newCar = Car.Create(context, model); + if (newCar == null) + { + return null; + } + context.Cars.Add(newCar); + context.SaveChanges(); + return context.Cars + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .FirstOrDefault(x => x.Id == newCar.Id) + ?.GetViewModel; + } + public CarViewModel? Update(CarBindingModel model) + { + using var context = new CarCenterDatabase(); + var car = context.Cars.FirstOrDefault(x => x.Id == model.Id); + if (car == null) + { + return null; + } + car.Update(model); + context.SaveChanges(); + return context.Cars + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public CarViewModel? Delete(CarBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Cars + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Cars + .Include(x => x.Bundlings) + .ThenInclude(x => x.Bundling) + .Include(x => x.Feature) + .Include(x => x.Order) + .Include(x => x.Storekeeper) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Cars.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + } +} From 5624a200d900a8a659aa6ebbe6e9527b39da1912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 18:00:54 +0400 Subject: [PATCH 19/20] done storage --- .../Implements/BundlingStorage.cs | 91 ++++++++++++++++++ .../Implements/FeatureStorage.cs | 92 +++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/BundlingStorage.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Implements/FeatureStorage.cs diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/BundlingStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/BundlingStorage.cs new file mode 100644 index 0000000..4dd628b --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/BundlingStorage.cs @@ -0,0 +1,91 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class BundlingStorage : IBundlingStorage + { + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Bundlings + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(BundlingSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Bundlings + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + public BundlingViewModel? GetElement(BundlingSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Bundlings + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + public BundlingViewModel? Insert(BundlingBindingModel model) + { + using var context = new CarCenterDatabase(); + var newBundling = Bundling.Create(model); + if (newBundling == null) + { + return null; + } + context.Bundlings.Add(newBundling); + context.SaveChanges(); + return context.Bundlings + .FirstOrDefault(x => x.Id == newBundling.Id) + ?.GetViewModel; + } + public BundlingViewModel? Update(BundlingBindingModel model) + { + using var context = new CarCenterDatabase(); + var order = context.Bundlings.FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return context.Bundlings + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public BundlingViewModel? Delete(BundlingBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Bundlings + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Bundlings + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Bundlings.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Implements/FeatureStorage.cs b/CarCenter/CarCenterDatabaseImplement/Implements/FeatureStorage.cs new file mode 100644 index 0000000..01b24b0 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Implements/FeatureStorage.cs @@ -0,0 +1,92 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.SearchModels; +using CarCenterContracts.StoragesContracts; +using CarCenterContracts.ViewModels; +using CarCenterDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CarCenterDatabaseImplement.Implements +{ + public class FeatureStorage : IFeatureStorage + { + public List GetFullList() + { + using var context = new CarCenterDatabase(); + return context.Features + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(FeatureSearchModel model) + { + using var context = new CarCenterDatabase(); + if (model.Id.HasValue) + { + return context.Features + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + return new(); + } + public FeatureViewModel? GetElement(FeatureSearchModel model) + { + using var context = new CarCenterDatabase(); + if (!model.Id.HasValue) + { + return null; + } + return context.Features + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + public FeatureViewModel? Insert(FeatureBindingModel model) + { + using var context = new CarCenterDatabase(); + var newFeature = Feature.Create(model); + if (newFeature == null) + { + return null; + } + context.Features.Add(newFeature); + context.SaveChanges(); + return context.Features + .FirstOrDefault(x => x.Id == newFeature.Id) + ?.GetViewModel; + } + public FeatureViewModel? Update(FeatureBindingModel model) + { + using var context = new CarCenterDatabase(); + var order = context.Features.FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return context.Features + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public FeatureViewModel? Delete(FeatureBindingModel model) + { + using var context = new CarCenterDatabase(); + var element = context.Features + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Features + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Features.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + } +} From 60291edc77b458ad500eaa507b9f29b3942cbaa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sun, 28 Apr 2024 18:06:14 +0400 Subject: [PATCH 20/20] =?UTF-8?q?=D0=9E=D0=9D=D0=9E=20=D0=A0=D0=90=D0=91?= =?UTF-8?q?=D0=9E=D0=A2=D0=90=D0=95=D0=A2=20(=D0=91=D0=94)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarCenterDataModels.csproj | 7 + .../20240428140324_InitialCreate.Designer.cs | 501 ++++++++++++++++++ .../20240428140324_InitialCreate.cs | 351 ++++++++++++ .../CarCenterDatabaseModelSnapshot.cs | 499 +++++++++++++++++ 4 files changed, 1358 insertions(+) create mode 100644 CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs create mode 100644 CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs diff --git a/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj b/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj index 132c02c..85b0783 100644 --- a/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj +++ b/CarCenter/CarCenterDataModels/CarCenterDataModels.csproj @@ -6,4 +6,11 @@ enable + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs new file mode 100644 index 0000000..31c6b46 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.Designer.cs @@ -0,0 +1,501 @@ +// +using System; +using CarCenterDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace CarCenterDatabaseImplement.Migrations +{ + [DbContext(typeof(CarCenterDatabase))] + [Migration("20240428140324_InitialCreate")] + partial class InitialCreate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.29") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("EquipmentPackage") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("TirePackage") + .HasColumnType("integer"); + + b.Property("ToolKit") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Bundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CarBrand") + .HasColumnType("integer"); + + b.Property("CarClass") + .HasColumnType("integer"); + + b.Property("FeatureID") + .HasColumnType("integer"); + + b.Property("FeatureId") + .HasColumnType("integer"); + + b.Property("Model") + .IsRequired() + .HasColumnType("text"); + + b.Property("OrderId") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("StorekeeperId") + .HasColumnType("integer"); + + b.Property("VINnumber") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("FeatureId"); + + b.HasIndex("OrderId"); + + b.HasIndex("StorekeeperId"); + + b.ToTable("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BundlingId") + .HasColumnType("integer"); + + b.Property("CarId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("BundlingId"); + + b.HasIndex("CarId"); + + b.ToTable("CarBundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CabinColor") + .IsRequired() + .HasColumnType("text"); + + b.Property("DriveType") + .HasColumnType("integer"); + + b.Property("HelpDevice") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Features"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuyerFCS") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("timestamp without time zone"); + + b.Property("PaymentStatus") + .HasColumnType("integer"); + + b.Property("PaymentType") + .HasColumnType("integer"); + + b.Property("Sum") + .HasColumnType("double precision"); + + b.Property("WorkerId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("OrderId") + .HasColumnType("integer"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("PresaleId"); + + b.ToTable("OrderPresales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("DueTill") + .HasColumnType("timestamp without time zone"); + + b.Property("PresaleStatus") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Presales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BundlingId") + .HasColumnType("integer"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("BundlingId"); + + b.HasIndex("PresaleId"); + + b.ToTable("PresaleBundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.Property("RequestType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PresaleId"); + + b.ToTable("Requests"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Patronymic") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("bigint"); + + b.Property("Surname") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Storekeepers"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Patronymic") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("bigint"); + + b.Property("Surname") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Workers"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Feature", "Feature") + .WithMany("Cars") + .HasForeignKey("FeatureId"); + + b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order") + .WithMany("Cars") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Storekeeper", "Storekeeper") + .WithMany("Cars") + .HasForeignKey("StorekeeperId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Feature"); + + b.Navigation("Order"); + + b.Navigation("Storekeeper"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling") + .WithMany("CarBundling") + .HasForeignKey("BundlingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Car", "Car") + .WithMany("Bundlings") + .HasForeignKey("CarId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bundling"); + + b.Navigation("Car"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Worker", "Worker") + .WithMany("Orders") + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order") + .WithMany("Presales") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("OrderPresales") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling") + .WithMany("PresaleBundling") + .HasForeignKey("BundlingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("Bundlings") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bundling"); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("Requests") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b => + { + b.Navigation("CarBundling"); + + b.Navigation("PresaleBundling"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.Navigation("Bundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b => + { + b.Navigation("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.Navigation("Cars"); + + b.Navigation("Presales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b => + { + b.Navigation("Bundlings"); + + b.Navigation("OrderPresales"); + + b.Navigation("Requests"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b => + { + b.Navigation("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b => + { + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs new file mode 100644 index 0000000..00e7294 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Migrations/20240428140324_InitialCreate.cs @@ -0,0 +1,351 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace CarCenterDatabaseImplement.Migrations +{ + public partial class InitialCreate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Bundlings", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + EquipmentPackage = table.Column(type: "integer", nullable: false), + TirePackage = table.Column(type: "integer", nullable: false), + ToolKit = table.Column(type: "integer", nullable: false), + Price = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Bundlings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Features", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + HelpDevice = table.Column(type: "integer", nullable: false), + CabinColor = table.Column(type: "text", nullable: false), + DriveType = table.Column(type: "integer", nullable: false), + Price = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Features", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Presales", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + PresaleStatus = table.Column(type: "integer", nullable: false), + Description = table.Column(type: "text", nullable: false), + DueTill = table.Column(type: "timestamp without time zone", nullable: false), + Price = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Presales", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Storekeepers", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(type: "text", nullable: false), + Surname = table.Column(type: "text", nullable: false), + Patronymic = table.Column(type: "text", nullable: true), + Password = table.Column(type: "text", nullable: false), + Email = table.Column(type: "text", nullable: false), + PhoneNumber = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Storekeepers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Workers", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(type: "text", nullable: false), + Surname = table.Column(type: "text", nullable: false), + Patronymic = table.Column(type: "text", nullable: true), + Password = table.Column(type: "text", nullable: false), + Email = table.Column(type: "text", nullable: false), + PhoneNumber = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Workers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "PresaleBundlings", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + PresaleId = table.Column(type: "integer", nullable: false), + BundlingId = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PresaleBundlings", x => x.Id); + table.ForeignKey( + name: "FK_PresaleBundlings_Bundlings_BundlingId", + column: x => x.BundlingId, + principalTable: "Bundlings", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_PresaleBundlings_Presales_PresaleId", + column: x => x.PresaleId, + principalTable: "Presales", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Requests", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + PresaleId = table.Column(type: "integer", nullable: false), + Description = table.Column(type: "text", nullable: false), + RequestType = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Requests", x => x.Id); + table.ForeignKey( + name: "FK_Requests_Presales_PresaleId", + column: x => x.PresaleId, + principalTable: "Presales", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Orders", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + WorkerId = table.Column(type: "integer", nullable: false), + PaymentType = table.Column(type: "integer", nullable: false), + PaymentStatus = table.Column(type: "integer", nullable: false), + BuyerFCS = table.Column(type: "text", nullable: false), + PaymentDate = table.Column(type: "timestamp without time zone", nullable: false), + Sum = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Orders", x => x.Id); + table.ForeignKey( + name: "FK_Orders_Workers_WorkerId", + column: x => x.WorkerId, + principalTable: "Workers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Cars", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + StorekeeperId = table.Column(type: "integer", nullable: false), + OrderId = table.Column(type: "integer", nullable: false), + FeatureId = table.Column(type: "integer", nullable: true), + CarBrand = table.Column(type: "integer", nullable: false), + Model = table.Column(type: "text", nullable: false), + CarClass = table.Column(type: "integer", nullable: false), + Year = table.Column(type: "integer", nullable: false), + Price = table.Column(type: "double precision", nullable: false), + VINnumber = table.Column(type: "bigint", nullable: false), + FeatureID = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Cars", x => x.Id); + table.ForeignKey( + name: "FK_Cars_Features_FeatureId", + column: x => x.FeatureId, + principalTable: "Features", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_Cars_Orders_OrderId", + column: x => x.OrderId, + principalTable: "Orders", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Cars_Storekeepers_StorekeeperId", + column: x => x.StorekeeperId, + principalTable: "Storekeepers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OrderPresales", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + OrderId = table.Column(type: "integer", nullable: false), + PresaleId = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OrderPresales", x => x.Id); + table.ForeignKey( + name: "FK_OrderPresales_Orders_OrderId", + column: x => x.OrderId, + principalTable: "Orders", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_OrderPresales_Presales_PresaleId", + column: x => x.PresaleId, + principalTable: "Presales", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CarBundlings", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + CarId = table.Column(type: "integer", nullable: false), + BundlingId = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CarBundlings", x => x.Id); + table.ForeignKey( + name: "FK_CarBundlings_Bundlings_BundlingId", + column: x => x.BundlingId, + principalTable: "Bundlings", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CarBundlings_Cars_CarId", + column: x => x.CarId, + principalTable: "Cars", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_CarBundlings_BundlingId", + table: "CarBundlings", + column: "BundlingId"); + + migrationBuilder.CreateIndex( + name: "IX_CarBundlings_CarId", + table: "CarBundlings", + column: "CarId"); + + migrationBuilder.CreateIndex( + name: "IX_Cars_FeatureId", + table: "Cars", + column: "FeatureId"); + + migrationBuilder.CreateIndex( + name: "IX_Cars_OrderId", + table: "Cars", + column: "OrderId"); + + migrationBuilder.CreateIndex( + name: "IX_Cars_StorekeeperId", + table: "Cars", + column: "StorekeeperId"); + + migrationBuilder.CreateIndex( + name: "IX_OrderPresales_OrderId", + table: "OrderPresales", + column: "OrderId"); + + migrationBuilder.CreateIndex( + name: "IX_OrderPresales_PresaleId", + table: "OrderPresales", + column: "PresaleId"); + + migrationBuilder.CreateIndex( + name: "IX_Orders_WorkerId", + table: "Orders", + column: "WorkerId"); + + migrationBuilder.CreateIndex( + name: "IX_PresaleBundlings_BundlingId", + table: "PresaleBundlings", + column: "BundlingId"); + + migrationBuilder.CreateIndex( + name: "IX_PresaleBundlings_PresaleId", + table: "PresaleBundlings", + column: "PresaleId"); + + migrationBuilder.CreateIndex( + name: "IX_Requests_PresaleId", + table: "Requests", + column: "PresaleId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CarBundlings"); + + migrationBuilder.DropTable( + name: "OrderPresales"); + + migrationBuilder.DropTable( + name: "PresaleBundlings"); + + migrationBuilder.DropTable( + name: "Requests"); + + migrationBuilder.DropTable( + name: "Cars"); + + migrationBuilder.DropTable( + name: "Bundlings"); + + migrationBuilder.DropTable( + name: "Presales"); + + migrationBuilder.DropTable( + name: "Features"); + + migrationBuilder.DropTable( + name: "Orders"); + + migrationBuilder.DropTable( + name: "Storekeepers"); + + migrationBuilder.DropTable( + name: "Workers"); + } + } +} diff --git a/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs b/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs new file mode 100644 index 0000000..ec96439 --- /dev/null +++ b/CarCenter/CarCenterDatabaseImplement/Migrations/CarCenterDatabaseModelSnapshot.cs @@ -0,0 +1,499 @@ +// +using System; +using CarCenterDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace CarCenterDatabaseImplement.Migrations +{ + [DbContext(typeof(CarCenterDatabase))] + partial class CarCenterDatabaseModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.29") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("EquipmentPackage") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("TirePackage") + .HasColumnType("integer"); + + b.Property("ToolKit") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Bundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CarBrand") + .HasColumnType("integer"); + + b.Property("CarClass") + .HasColumnType("integer"); + + b.Property("FeatureID") + .HasColumnType("integer"); + + b.Property("FeatureId") + .HasColumnType("integer"); + + b.Property("Model") + .IsRequired() + .HasColumnType("text"); + + b.Property("OrderId") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.Property("StorekeeperId") + .HasColumnType("integer"); + + b.Property("VINnumber") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("FeatureId"); + + b.HasIndex("OrderId"); + + b.HasIndex("StorekeeperId"); + + b.ToTable("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BundlingId") + .HasColumnType("integer"); + + b.Property("CarId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("BundlingId"); + + b.HasIndex("CarId"); + + b.ToTable("CarBundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CabinColor") + .IsRequired() + .HasColumnType("text"); + + b.Property("DriveType") + .HasColumnType("integer"); + + b.Property("HelpDevice") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Features"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuyerFCS") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("timestamp without time zone"); + + b.Property("PaymentStatus") + .HasColumnType("integer"); + + b.Property("PaymentType") + .HasColumnType("integer"); + + b.Property("Sum") + .HasColumnType("double precision"); + + b.Property("WorkerId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("OrderId") + .HasColumnType("integer"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("PresaleId"); + + b.ToTable("OrderPresales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("DueTill") + .HasColumnType("timestamp without time zone"); + + b.Property("PresaleStatus") + .HasColumnType("integer"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Presales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BundlingId") + .HasColumnType("integer"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("BundlingId"); + + b.HasIndex("PresaleId"); + + b.ToTable("PresaleBundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("PresaleId") + .HasColumnType("integer"); + + b.Property("RequestType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PresaleId"); + + b.ToTable("Requests"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Patronymic") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("bigint"); + + b.Property("Surname") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Storekeepers"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Patronymic") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("bigint"); + + b.Property("Surname") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Workers"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Feature", "Feature") + .WithMany("Cars") + .HasForeignKey("FeatureId"); + + b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order") + .WithMany("Cars") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Storekeeper", "Storekeeper") + .WithMany("Cars") + .HasForeignKey("StorekeeperId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Feature"); + + b.Navigation("Order"); + + b.Navigation("Storekeeper"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.CarBundling", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling") + .WithMany("CarBundling") + .HasForeignKey("BundlingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Car", "Car") + .WithMany("Bundlings") + .HasForeignKey("CarId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bundling"); + + b.Navigation("Car"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Worker", "Worker") + .WithMany("Orders") + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.OrderPresale", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Order", "Order") + .WithMany("Presales") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("OrderPresales") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.PresaleBundling", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Bundling", "Bundling") + .WithMany("PresaleBundling") + .HasForeignKey("BundlingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("Bundlings") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bundling"); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Request", b => + { + b.HasOne("CarCenterDatabaseImplement.Models.Presale", "Presale") + .WithMany("Requests") + .HasForeignKey("PresaleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Presale"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Bundling", b => + { + b.Navigation("CarBundling"); + + b.Navigation("PresaleBundling"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Car", b => + { + b.Navigation("Bundlings"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Feature", b => + { + b.Navigation("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Order", b => + { + b.Navigation("Cars"); + + b.Navigation("Presales"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Presale", b => + { + b.Navigation("Bundlings"); + + b.Navigation("OrderPresales"); + + b.Navigation("Requests"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Storekeeper", b => + { + b.Navigation("Cars"); + }); + + modelBuilder.Entity("CarCenterDatabaseImplement.Models.Worker", b => + { + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +}