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 1/2] =?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 2/2] =?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, + }; } }